diff --git a/.coverage-baseline b/.coverage-baseline new file mode 100644 index 000000000..cdc7844ba --- /dev/null +++ b/.coverage-baseline @@ -0,0 +1 @@ +55.79 diff --git a/.doriath-csp.mjs b/.doriath-csp.mjs new file mode 100644 index 000000000..c8e98648c --- /dev/null +++ b/.doriath-csp.mjs @@ -0,0 +1,16 @@ +import { chromium } from '@playwright/test' +const BASE='http://localhost:8088' +const b=await chromium.launch(); const c=await b.newContext(); const p=await c.newPage() +let csp=null +p.on('response',r=>{ if(r.url().endsWith('/apps/doriath/') || r.url().includes('/apps/doriath/#')) { const h=r.headers(); if(h['content-security-policy']) csp=h['content-security-policy'] } }) +await p.goto(`${BASE}/index.php/login`,{waitUntil:'domcontentloaded'}) +await p.locator('input[name="user"]').fill('admin'); await p.locator('input[name="password"]').fill('admin') +await p.locator('button[type="submit"]').first().click(); await p.waitForSelector('#header',{timeout:30000}) +const resp = await p.goto(`${BASE}/index.php/apps/doriath/`,{waitUntil:'domcontentloaded'}) +const h = resp.headers()['content-security-policy'] || '(none)' +console.log('CSP on the doriath SPA page:') +console.log(h) +console.log() +console.log("contains 'wasm-unsafe-eval':", h.includes('wasm-unsafe-eval')) +console.log("contains 'unsafe-eval':", /(?errs.push(String(e).slice(0,200))) +p.on('console',m=>{if(m.type()==='error')errs.push('c:'+m.text().slice(0,160))}) +await p.goto(`${BASE}/index.php/login`,{waitUntil:'domcontentloaded'}) +await p.locator('input[name="user"]').fill('admin'); await p.locator('input[name="password"]').fill('admin') +await p.locator('button[type="submit"]').first().click(); await p.waitForSelector('#header',{timeout:30000}) +await p.goto(`${BASE}/index.php/apps/doriath/`,{waitUntil:'domcontentloaded'}); await p.waitForTimeout(3000) +await p.locator('.lock-screen input[type="password"]').first().fill('Oj',{force:true}); await p.waitForTimeout(400) +await p.evaluate(()=>{const bs=[...document.querySelectorAll('.lock-screen button')];const u=bs.find(b=>/Unlock/i.test(b.textContent||''));if(u)u.click()}) +await p.waitForTimeout(4000) +await p.evaluate(()=>{const as=[...document.querySelectorAll('.app-navigation a')];const v=as.find(a=>/Vault/i.test(a.textContent||''));if(v)v.click()}) +await p.waitForTimeout(3000) +errs.length=0 +const rows = await p.locator('.secret-list-item, [data-testid="secret-row"]').count() +console.log('secret rows:', rows) +await p.evaluate(()=>{const r=document.querySelector('.secret-list-item');if(r)r.click()}) +await p.waitForTimeout(3500) +console.log('url:',p.url()) +const probe = await p.evaluate(()=>({ + detail: !!document.querySelector('.secret-detail'), + pwField: document.querySelectorAll('.secret-detail .doriath-password-field').length, + pwInput: document.querySelectorAll('.secret-detail .doriath-password-field input').length, + anyInput: document.querySelectorAll('.secret-detail input').length, + detailText: (document.querySelector('.secret-detail')?.innerText||'').slice(0,200) +})) +console.log(JSON.stringify(probe,null,1)) +console.log('errors:', errs.slice(0,5)) +await b.close() diff --git a/.doriath-href.mjs b/.doriath-href.mjs new file mode 100644 index 000000000..596b9edbe --- /dev/null +++ b/.doriath-href.mjs @@ -0,0 +1,17 @@ +import { chromium } from '@playwright/test' +const BASE='http://localhost:8088' +const b=await chromium.launch(); const c=await b.newContext(); const p=await c.newPage() +await p.goto(`${BASE}/index.php/login`,{waitUntil:'domcontentloaded'}) +await p.locator('input[name="user"]').fill('admin') +await p.locator('input[name="password"]').fill('admin') +await p.locator('button[type="submit"]').first().click() +await p.waitForSelector('#header',{timeout:30000}) +await p.goto(`${BASE}/index.php/apps/doriath/`,{waitUntil:'domcontentloaded'}) +await p.waitForTimeout(4000) +const r = await p.evaluate(() => { + const nav = document.querySelector('.app-navigation') + const as = nav ? Array.from(nav.querySelectorAll('a')) : [] + return { navPresent: !!nav, hrefs: as.slice(0,10).map(a => a.getAttribute('href')), texts: as.slice(0,10).map(a=>(a.textContent||'').trim().slice(0,20)) } +}) +console.log(JSON.stringify(r,null,1)) +await b.close() diff --git a/.doriath-nav.mjs b/.doriath-nav.mjs new file mode 100644 index 000000000..b6b1fbe13 --- /dev/null +++ b/.doriath-nav.mjs @@ -0,0 +1,23 @@ +import { chromium } from '@playwright/test' +const BASE='http://localhost:8088' +const b=await chromium.launch(); const c=await b.newContext(); const p=await c.newPage() +await p.goto(`${BASE}/index.php/login`,{waitUntil:'domcontentloaded'}) +await p.locator('input[name="user"]').fill('admin') +await p.locator('input[name="password"]').fill('admin') +await p.locator('button[type="submit"]').first().click() +await p.waitForSelector('#header',{timeout:30000}) +await p.goto(`${BASE}/index.php/apps/doriath/`,{waitUntil:'domcontentloaded'}) +await p.waitForTimeout(3000) +// unlock with the seeded dev master password +await p.locator('.lock-screen input[type="password"]').first().fill('Oj',{force:true}) +await p.waitForTimeout(400) +await p.evaluate(()=>{const bs=[...document.querySelectorAll('.lock-screen button')];const u=bs.find(b=>/Unlock/i.test(b.textContent||''));if(u)u.click()}) +await p.waitForTimeout(4000) +console.log('after unlock, lock-screen count:', await p.locator('.lock-screen').count()) +console.log('url:', p.url()) +// click the Vault nav entry natively and see if the route changes +await p.evaluate(()=>{const as=[...document.querySelectorAll('.app-navigation a')];const v=as.find(a=>/Vault/i.test(a.textContent||''));if(v)v.click()}) +await p.waitForTimeout(2500) +console.log('after clicking Vault -> url:', p.url()) +console.log('secret-list present:', await p.locator('[data-testid="secret-list-view"], .secret-list-view').count()) +await b.close() diff --git a/.doriath-neterr.mjs b/.doriath-neterr.mjs new file mode 100644 index 000000000..1fb78e89a --- /dev/null +++ b/.doriath-neterr.mjs @@ -0,0 +1,17 @@ +import { chromium } from '@playwright/test' +const BASE = 'http://localhost:8088' +const b = await chromium.launch(); const c = await b.newContext(); const p = await c.newPage() +const bad = [] +p.on('response', r => { if (r.status() >= 400) bad.push(`${r.status()} ${r.request().method()} ${r.url()}`) }) +await p.goto(`${BASE}/index.php/login`, { waitUntil: 'domcontentloaded' }) +await p.locator('input[name="user"]').fill('admin') +await p.locator('input[name="password"]').fill('admin') +await p.locator('button[type="submit"]').first().click() +await p.waitForSelector('#header', { timeout: 30000 }) +bad.length = 0 +await p.goto(`${BASE}/index.php/apps/doriath/`, { waitUntil: 'domcontentloaded' }) +await p.waitForTimeout(6000) +console.log('--- failing requests on app root ---') +bad.forEach(x => console.log(x)) +console.log('--- doriath-owned failures:', bad.filter(x => x.includes('/doriath')).length) +await b.close() diff --git a/.doriath-share.mjs b/.doriath-share.mjs new file mode 100644 index 000000000..0c32a1d58 --- /dev/null +++ b/.doriath-share.mjs @@ -0,0 +1,30 @@ +import { chromium } from '@playwright/test' +const BASE='http://localhost:8088' +const b=await chromium.launch(); const c=await b.newContext(); const p=await c.newPage() +const errs=[]; const reqs=[] +p.on('pageerror',e=>errs.push('PE:'+String(e).slice(0,220))) +p.on('console',m=>{if(m.type()==='error')errs.push('C:'+m.text().slice(0,220))}) +p.on('response',r=>{if(r.url().includes('/doriath/'))reqs.push(`${r.status()} ${r.request().method()} ${r.url().replace(BASE,'')}`)}) +await p.goto(`${BASE}/index.php/login`,{waitUntil:'domcontentloaded'}) +await p.locator('input[name="user"]').fill('admin'); await p.locator('input[name="password"]').fill('admin') +await p.locator('button[type="submit"]').first().click(); await p.waitForSelector('#header',{timeout:30000}) +await p.goto(`${BASE}/index.php/apps/doriath/`,{waitUntil:'domcontentloaded'}); await p.waitForTimeout(2500) +await p.locator('.lock-screen input[type="password"]').first().fill('Oj',{force:true}); await p.waitForTimeout(400) +await p.evaluate(()=>{const bs=[...document.querySelectorAll('.lock-screen button')];const u=bs.find(b=>/Unlock/i.test(b.textContent||''));if(u)u.click()}) +await p.waitForTimeout(3500) +await p.evaluate(()=>{const as=[...document.querySelectorAll('.app-navigation a')];const v=as.find(a=>/Vault/i.test(a.textContent||''));if(v)v.click()}) +await p.waitForTimeout(2500) +await p.evaluate(()=>{const r=document.querySelector('.secret-list-item');if(r)r.click()}) +await p.waitForTimeout(2500) +await p.evaluate(()=>{const bs=[...document.querySelectorAll('.secret-detail__actions button')];const s=bs.find(b=>/Share/i.test(b.textContent||''));if(s)s.click()}) +await p.waitForTimeout(2000) +console.log('share-dialog present:', await p.locator('.share-dialog').count()) +const btns = await p.evaluate(()=>[...document.querySelectorAll('body button')].map(b=>(b.textContent||'').trim()).filter(Boolean).slice(0,25)) +console.log('buttons:', JSON.stringify(btns)) +errs.length=0; reqs.length=0 +await p.evaluate(()=>{const bs=[...document.querySelectorAll('body button')];const s=bs.find(b=>/Create link/i.test(b.textContent||''));if(s)s.click(); else console.error('NO CREATE LINK BUTTON')}) +await p.waitForTimeout(5000) +console.log('reveal present:', await p.locator('.share-dialog__reveal').count()) +console.log('requests:', reqs) +console.log('errors:', errs.slice(0,6)) +await b.close() diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..2f8e07500 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,36 @@ +# https://editorconfig.org + +# SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors +# SPDX-License-Identifier: AGPL-3.0-or-later + +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = tab +insert_final_newline = true +trim_trailing_whitespace = true + +[*.yml] +indent_size = 2 +indent_style = space + +[*.md] +trim_trailing_whitespace = false + +[*.svg] +insert_final_newline = false + +[package*.json] +indent_size = 2 +indent_style = space + +[build/psalm-baseline.xml] +indent_size = 2 +indent_style = space + +[config/*config.php] +indent_size = 2 +indent_style = space \ No newline at end of file diff --git a/.forgejo/workflows/pre-merge-check-strict.yaml b/.forgejo/workflows/pre-merge-check-strict.yaml index bb09a6fb6..863f2b03e 100644 --- a/.forgejo/workflows/pre-merge-check-strict.yaml +++ b/.forgejo/workflows/pre-merge-check-strict.yaml @@ -32,6 +32,10 @@ jobs: apt-get install -y --no-install-recommends \ git curl ca-certificates gnupg jq unzip zip \ libzip-dev libpng-dev python3 + # Node is required by actions/checkout@v4 (a JS action) which runs + # inside this php:8.3-cli container; the stock image ships no node. + curl -fsSL https://deb.nodesource.com/setup_20.x | bash - + apt-get install -y --no-install-recommends nodejs docker-php-ext-install -j"$(nproc)" zip gd curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer diff --git a/.forgejo/workflows/tests.yml b/.forgejo/workflows/tests.yml index 8080caba0..f6d766858 100644 --- a/.forgejo/workflows/tests.yml +++ b/.forgejo/workflows/tests.yml @@ -75,6 +75,10 @@ jobs: apt-get install -y --no-install-recommends \ git curl ca-certificates gnupg jq unzip zip \ libzip-dev libpng-dev python3 + # Node is required by actions/checkout@v4 (a JS action) which runs + # inside this php:8.3-cli container; the stock image ships no node. + curl -fsSL https://deb.nodesource.com/setup_20.x | bash - + apt-get install -y --no-install-recommends nodejs docker-php-ext-install -j"$(nproc)" zip gd curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer @@ -105,6 +109,30 @@ jobs: - name: Assert every t() source string is in l10n/en.json run: node tests/l10n/check-l10n.js + # --------------------------------------------------------------------------- + # HARD GATE 3 — frontend unit suite (Vitest, OFFLINE; no NC needed). + # + # Runs the pure-logic Vitest suite under tests/vitest/** (Pinia store + # state transitions, util/formatter calc, form-validation mappers, and any + # offline component mounts). These need no DOM/NC runtime — @nextcloud/* and + # @conduction/nextcloud-vue are aliased to deterministic stubs in + # vitest.config.js. Always gating. + # --------------------------------------------------------------------------- + frontend-unit: + name: Frontend unit (Vitest — ${{ inputs.app-id }}) + runs-on: codeberg-medium + container: + image: node:${{ inputs.node-version }} + steps: + - name: Checkout + uses: https://github.com/actions/checkout@v4 + + - name: Install npm deps + run: npm ci --legacy-peer-deps || npm install --legacy-peer-deps + + - name: Run Vitest unit suite + run: npm run test:unit + # --------------------------------------------------------------------------- # COVERAGE GATE A — PHPUnit COVERAGE RATCHET (PCOV clover line coverage). # Fails a PR that drops backend coverage below tests/.coverage-baseline.json @@ -125,6 +153,10 @@ jobs: apt-get install -y --no-install-recommends \ git curl ca-certificates gnupg jq unzip zip \ libzip-dev libpng-dev python3 + # Node is required by actions/checkout@v4 (a JS action) which runs + # inside this php:8.3-cli container; the stock image ships no node. + curl -fsSL https://deb.nodesource.com/setup_20.x | bash - + apt-get install -y --no-install-recommends nodejs docker-php-ext-install -j"$(nproc)" zip gd curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs new file mode 100644 index 000000000..a696736b9 --- /dev/null +++ b/.git-blame-ignore-revs @@ -0,0 +1,16 @@ +# Revisions to skip in `git blame`. +# +# Enable locally, once: +# git config blame.ignoreRevsFile .git-blame-ignore-revs +# +# GitHub reads this file automatically. Your terminal does not, until you run +# the line above. +# +# Only ever add commits that change formatting and NOTHING else. A commit listed +# here becomes invisible to blame, so a behaviour change hidden inside one would +# be very hard to find later. + +# style: reformat with nextcloud/coding-standard — whitespace only +# The fleet-wide move from a PEAR-derived PHPCS ruleset (4 spaces, next-line +# braces) to Nextcloud's own standard (tabs, same-line braces). +8f2ab30687aaf70359a4c7383765e8144232a0ba diff --git a/.githooks/pre-commit b/.githooks/pre-commit new file mode 100755 index 000000000..798ae383e --- /dev/null +++ b/.githooks/pre-commit @@ -0,0 +1,38 @@ +#!/bin/sh +# Committed pre-commit hook (activated via `git config core.hooksPath .githooks`, +# which `npm install` / `composer install` set automatically — see package.json +# "prepare" and composer.json "post-install-cmd"). +# +# Regenerates docs/features.json whenever staged changes touch openspec/specs/ +# or the features overlay, so the commercial capability list can never go +# stale. CI (features-check / features-extract) only VERIFIES — generation +# happens here, before the commit, never in the pipeline. +# +# Best-effort by design: any failure only warns and never blocks the commit — +# the CI gate is the enforcement backstop. + +if git diff --cached --name-only | grep -qE "^openspec/(specs/|features\.overlay\.json)"; then + CACHE=".git/extract-features.py" + # Fetch the canonical script (single source of truth in ConductionNL/.github); + # fall back to a previously cached copy when offline. + curl -sf --max-time 10 \ + https://raw.githubusercontent.com/ConductionNL/.github/main/scripts/extract-features.py \ + -o "$CACHE" 2>/dev/null || true + + if [ -f "$CACHE" ]; then + if command -v python3 >/dev/null 2>&1; then PY="python3"; + elif command -v py >/dev/null 2>&1; then PY="py -3"; + else PY="python"; fi + + if $PY "$CACHE" --app-root . >/dev/null 2>&1; then + git add docs/features.json + echo "pre-commit: docs/features.json regenerated from openspec/specs/." + else + echo "pre-commit: WARNING — could not regenerate docs/features.json (python or pyyaml missing?). CI features-check will verify." >&2 + fi + else + echo "pre-commit: WARNING — could not fetch extract-features.py (offline?). CI features-check will verify." >&2 + fi +fi + +exit 0 diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000..bd35c7ff5 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,19 @@ +version: 2 + +# This repo had no dependabot.yml at all — Dependabot was not configured for +# any ecosystem. Scoped narrowly here to what the fleet-wide composer +# cooldown rollout needs: a composer entry meeting the floor new gate 93 +# (composer-cooldown-config) enforces. Adding npm/github-actions coverage +# for this repo is a separate decision, not folded in here. +updates: + - package-ecosystem: "composer" + directory: "/" + schedule: + interval: "weekly" + open-pull-requests-limit: 10 + cooldown: + default-days: 2 + include: + - "*" + exclude: + - "conduction/*" diff --git a/.github/workflows/branch-protection.yml b/.github/workflows/branch-protection.yml index e85b0758a..35e8b8290 100644 --- a/.github/workflows/branch-protection.yml +++ b/.github/workflows/branch-protection.yml @@ -4,7 +4,11 @@ on: pull_request: branches: [main, beta] +permissions: {} + jobs: - protect: - uses: Conduction/.github/.github/workflows/branch-protection.yml@main - secrets: inherit + # Job id must stay `branch-protection` so the check reports as + # `branch-protection / check-branch`, which is the context name the org + # ruleset requires. + branch-protection: + uses: ConductionNL/.github/.github/workflows/branch-protection.yml@main diff --git a/.github/workflows/cli-release.yml b/.github/workflows/cli-release.yml new file mode 100644 index 000000000..6f44c7b3a --- /dev/null +++ b/.github/workflows/cli-release.yml @@ -0,0 +1,74 @@ +name: CLI Release + +# Builds the doriath-cli single static binary for every supported platform. +# On a tag push it also uploads the artifacts to the GitHub release. The CLI is +# stdlib-only Go, so the matrix is a plain cross-compile — no PHP/Node needed. + +on: + push: + branches: [main, development] + paths: ["cli/**"] + tags: ["cli-v*"] + pull_request: + branches: [main, development, beta] + paths: ["cli/**"] + workflow_dispatch: + +jobs: + test: + runs-on: ubuntu-latest + # No observed runs yet; a Go vet+test of a stdlib-only CLI is minutes at most. + timeout-minutes: 20 + defaults: + run: + working-directory: cli + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: + go-version: "1.22" + - run: go vet ./... + - run: go test ./... + + build: + needs: test + runs-on: ubuntu-latest + # No observed runs yet; a stdlib-only Go cross-compile is minutes at most. + timeout-minutes: 20 + defaults: + run: + working-directory: cli + strategy: + matrix: + target: + - { goos: linux, goarch: amd64 } + - { goos: linux, goarch: arm64 } + - { goos: darwin, goarch: amd64 } + - { goos: darwin, goarch: arm64 } + - { goos: windows, goarch: amd64 } + - { goos: windows, goarch: arm64 } + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + with: + go-version: "1.22" + - name: Build static binary + env: + GOOS: ${{ matrix.target.goos }} + GOARCH: ${{ matrix.target.goarch }} + CGO_ENABLED: "0" + run: | + ext="" + [ "$GOOS" = "windows" ] && ext=".exe" + out="doriath-${GOOS}-${GOARCH}${ext}" + go build -trimpath -ldflags "-s -w -X main.version=${GITHUB_REF_NAME}" -o "$out" . + echo "ARTIFACT=cli/$out" >> "$GITHUB_ENV" + - uses: actions/upload-artifact@v4 + with: + name: doriath-${{ matrix.target.goos }}-${{ matrix.target.goarch }} + path: ${{ env.ARTIFACT }} + - name: Attach to release + if: startsWith(github.ref, 'refs/tags/cli-v') + uses: softprops/action-gh-release@v2 + with: + files: ${{ env.ARTIFACT }} diff --git a/.github/workflows/code-quality.yml b/.github/workflows/code-quality.yml index 689b30659..94cdd45ed 100644 --- a/.github/workflows/code-quality.yml +++ b/.github/workflows/code-quality.yml @@ -2,19 +2,120 @@ name: Code Quality on: push: - branches: [main, development, feature/**, bugfix/**, hotfix/**] + # An ALLOW-LIST of branch prefixes is a gate with a hole in it, and the + # hole is SILENT: a branch matching nothing gets no CI at all, and its last + # visible status is whatever it inherited — indistinguishable, on every + # dashboard, from a branch that passed. + # + # Two live examples, both found 2026-08-14: `perf/**` was uncovered in + # openconnector, where a merge carrying unresolved conflict markers and 84 + # failing tests was pushed and nothing ran; and `feat/**` was uncovered in + # openregister — note the list said `feature/**`, so every branch anyone + # named `feat/...` had been running unchecked. + # + # Prefixes are added rather than replaced with `**` because this workflow is + # expensive (PHPUnit matrix, Newman, Playwright). The fast structural checks + # DO run on `**` — see merge-hygiene.yml, added in the same change. + # + # ⚠️ Adding prefixes is not the durable fix; the next invented one is + # uncovered again. The durable fix is branch protection requiring a PR into + # development, which the pull_request trigger below already gates correctly. + branches: + - main + - development + - feature/** + - feat/** + - bugfix/** + - hotfix/** + - perf/** + - refactor/** + - chore/** + - fix/** pull_request: branches: [main, master, development, beta] workflow_dispatch: +# Deduplicating a `push` run against the `pull_request` run for the SAME head +# ref is the point of this block, and for a feature branch it is exactly right: +# two runs of identical jobs, one of them wasted. +# +# It is wrong for `main` and `development`, because the push run there is NOT a +# duplicate — it is the only carrier of the push-only jobs: "Coverage Baseline +# Check" (`github.event_name == 'push'`), "SBOM" and "Features Extract". And +# those two branches always have an open PR whose `head_ref` IS the branch +# name: the standing "Release: merge development into beta" (#126 here). +# `github.head_ref` on that PR run and `github.ref_name` on the push run both +# render the identical group `quality-development`, and `cancel-in-progress` +# then kills whichever started first — normally the push run. +# +# HONEST SCOPE OF THE EVIDENCE HERE: unlike most of the fleet, this repo shows +# NO concurrency-cancelled `development` push run in its last 20 (its two +# cancellations are the shared workflow's 45-minute cap, not this block), and +# its push-only jobs demonstrably DO execute — run 31035521461 and 31030407282 +# both report Coverage Baseline Check success. So this change is PREVENTIVE, +# not a repair of an observed outage: the collision is latent in the expression +# and has simply not won the race here yet. It is applied for fleet uniformity +# with openconnector#1158, where the same expression cancelled 15 of the last +# 20 push runs. +# +# Suffixing only the default-branch push keeps feature-branch dedup untouched +# (`quality-feature/x` for both events, exactly as before) and gives the two +# default branches' push runs a lane of their own. +concurrency: + group: quality-${{ github.head_ref || github.ref_name }}${{ (github.event_name == 'push' && (github.ref_name == 'main' || github.ref_name == 'development')) && '-push' || '' }} + cancel-in-progress: true + +# Permission CEILING for the called quality pipeline. GitHub statically +# validates the called workflow's declared job permissions against this +# grant — even for jobs that are disabled — so it must cover the maximum +# any nested job declares: journeydoc-capture (contents+actions write), +# update-baseline / features-extract (contents write), and the Quality +# Report PR comment (issues / pull-requests write). +permissions: + contents: write + actions: write + issues: write + pull-requests: write + jobs: quality: - uses: Conduction/.github/.github/workflows/quality.yml@main + uses: ConductionNL/.github/.github/workflows/quality.yml@main with: app-name: doriath php-version: "8.3" php-test-versions: '["8.3", "8.4"]' - nextcloud-test-refs: '["stable31", "stable32"]' + # Order matters: the PHPUnit matrix uses the whole list, but the E2E + # (Playwright), Newman and Journeydoc jobs all check out + # `fromJSON(nextcloud-test-refs)[0]` as their single server. That server + # has to be one OpenRegister can load, because `additional-apps` below + # installs it and doriath's AppHost integration delegates to it — + # OpenRegister's lib/ContextChat/ContentProvider.php implements + # `OCP\ContextChat\IContentProvider`, which exists in stable32 and NOT in + # stable31 (verified: raw.githubusercontent.com returns 404 for the + # stable31 path). On stable31 every `occ` invocation printed + # `Interface "OCP\ContextChat\IContentProvider" not found` while loading + # commands from openregister's info.xml. + # + # The earlier reorder fixed the FIRST-entry problem for E2E/Newman/Journeydoc + # but left "stable31 is still covered by the PHPUnit matrix" — and that leg + # is broken by the same fact. The phpunit job ALSO installs `additional-apps` + # (shared quality.yml, "Checkout additional apps" + "Enabling app: …"), and + # its `occ app:enable openregister` failure is only a ::warning::, so the + # stable31 leg ran on without OpenRegister loaded. openregister has since + # made the floor explicit — ``, 8d5181f7a — so + # NC31 is now a configuration this fixture cannot produce at all. + # + # Removing stable31 corrects an impossible configuration; it does not reduce + # coverage, because nothing was being covered on that leg. + # + # THE LIST IS THE WHOLE DECLARED RANGE. appinfo/info.xml declares + # , so 32, 33 and 34 each get + # a leg. Adopting NC 34 by REPLACING the list left 32 and 33 advertised to + # the App Store with no job touching them — the declared floor became the + # untested end, which is the same drift as never testing 34, reversed. + # stable34 leads because newman, playwright and journeydoc-capture all read + # `fromJSON(inputs.nextcloud-test-refs)[0]` as their single server. + nextcloud-test-refs: '["stable34", "stable32", "stable33"]' enable-psalm: true enable-phpstan: true enable-phpmetrics: true @@ -22,6 +123,103 @@ jobs: enable-eslint: true enable-phpunit: true enable-newman: true - # additional-apps: '[]' # Add app dependencies here if needed, e.g.: - # additional-apps: '[{"repo":"Conduction/openregister","app":"openregister","ref":"main"}]' + # Doriath adopts OpenRegister's AppHost engine in lib/AppInfo/Application.php + # (ADR-040 / ADR-022) and ships lib/Settings/doriath_register.json, so + # OpenRegister must be present in the test instance — otherwise + # SettingsService::isOpenRegisterAvailable() is false, InitializeSettings + # skips the register import with a warning, and the app boots without the + # host engine it delegates to. + # + # NOTE the org is ConductionNL, not Conduction. `Conduction` does not + # exist, and the shared workflow clones additional-apps UNAUTHENTICATED — + # so a bad ref does not report a clean 404. git falls through to + # credential prompting and the step dies with + # fatal: could not read Username for 'https://github.com' (exit 128) + # which reads as an auth problem rather than a typo. Six fleet repos hit + # this; in pipelinq it killed all four PHPUnit legs and the E2E job at the + # clone step, so those gates had never executed a single test. + additional-apps: '[{"repo":"ConductionNL/openregister","app":"openregister","ref":"development"}]' enable-sbom: true + + # ── E2E browser tests ──────────────────────────────────────────────── + # `playwright-test-path` does double duty in the shared workflow: + # 1. it is the directory the "Validate Playwright tests exist" step + # counts *.spec.ts in; + # 2. it is the FIRST place the run step looks for a config — + # `${playwright-test-path}/playwright.config.ts`, falling back to + # the repo root only if that file is absent. + # We ship tests/e2e/playwright.config.ts precisely so lookup (2) hits it. + # The run step passes no `--project`, so the root config would run BOTH + # of its projects — including `visual`, whose own header records that a + # CI Linux runner cannot byte-match a dev-container PNG baseline. The + # tests/e2e config declares only the chromium regression project and + # writes its report to the app root, where the workflow's + # upload-artifact steps actually look. + enable-playwright: true + playwright-test-path: tests/e2e + # Doriath's nine workflow specs UNLOCK the vault with the development + # master password seeded by lib/Repair/SeedDevelopmentData.php — and that + # repair step returns immediately unless the `debug` system config is + # true, which `occ maintenance:install` does not set. A stock CI install + # therefore comes up with no dev vault at all and nothing exits non-zero. + # The script turns debug on, re-runs the repair steps, imports the + # register through OpenRegister's admin API, and fails loudly if the + # suite / secrets / schemas still aren't there. + # cwd for this step is the Nextcloud server root. + playwright-seed-command: 'bash apps/doriath/tests/e2e/ci-seed.sh' + + # ── Frontend Check legs ────────────────────────────────────────────── + # `frontend-checks` defaults to `[]`, and an empty list means the shared + # workflow emits NO "Frontend Check" job at all — so these two validators + # ran nowhere while the run still looked complete. Both are self-contained + # `node` scripts, which is what a leg has to be (each leg is a fresh job + # with its own checkout + `npm ci`). + # `test` / `test:unit` are NOT listed: the shared "Frontend Tests (unit)" + # job already auto-detects and runs them. + # + # `format` (prettier --check) is listed because the shared workflow has NO + # prettier job of its own — `quality.yml` runs eslint and stylelint and + # mentions prettier ZERO times. This repo already carries + # `@nextcloud/prettier-config` and a `format` script, so without this leg + # `npm run format` never runs outside a developer's editor and the tree + # drifts straight back out of format between merges — the same inert- + # formatter failure mode that made the old `.prettierrc` worth deleting. + # Centralising the config never stopped drift; the gate does. + # Measured on this tree before enabling: PASSES, 294 of 310 tracked + # frontend files in scope. This repo has TWO documentation trees and both + # are excluded by .prettierignore — `docs/` and the separate `docusaurus/` + # site, which has its own package.json and its own toolchain. + frontend-checks: '["check:manifest", "test:l10n", "format"]' + + # ── Coverage ratchet ───────────────────────────────────────────────── + # `enable-coverage-guard` defaults to FALSE, which is why both + # "Coverage Baseline Protection" (PR side) and "Coverage Baseline Check" + # (push side) have only ever reported `skipped`. It needs two inputs this + # repo did not have, both added in this commit: + # `scripts/coverage-guard.php` (byte-identical to the copies in + # openregister and procest) and `.coverage-baseline` = 55.78, this repo's + # own measured coverage (6838 of 12258 statements) read from clover.xml + # in the `coverage-report` artifact of run 30911329266. + enable-coverage-guard: true + + # ── Hydra mechanical gates ─────────────────────────────────────────── + # `enable-hydra-gates` defaults to FALSE, so this tier has never executed + # here — the job reported `skipped`, which the Quality Report renders + # identically to a pass. + # `enable-axe` deliberately NOT set: a vanilla Nextcloud 34 already carries + # serious/critical violations on core's OWN routes that DOM scoping does + # not remove. Enabling axe is a separate decision. Note that gate-33 + # (axe-core) reads tests/axe/report.json, which the Playwright job writes + # ONLY when `enable-axe: true` — un-skipping Playwright is not the fix; + # with axe off the gate declares itself not applicable. + enable-hydra-gates: true + # No `hydra-gates-ref` here on purpose. The shared workflow defaults it + # to @main, and this workflow is itself consumed at @main, so the two + # sides move together and a gate fix reaches this repo without a commit + # in this repo. A pin is a silent expiry date: 22 repos sat on v1.0.1 and + # 16 gates were dead fleet-wide while every one reported PASS (.github#159), + # and a default flipped at @main later reached those old runners and made + # them red on gates they had no subject matter for (.github#173). + # To hold this repo still for a specific reason, set the input explicitly + # and say why — it is still honoured. To roll back for everyone, revert on + # ConductionNL/.github main. diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index 1803a2b90..d7f3d1fbe 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -8,6 +8,6 @@ on: jobs: deploy: - uses: Conduction/.github/.github/workflows/documentation.yml@main + uses: ConductionNL/.github/.github/workflows/documentation.yml@main with: cname: doriath.conduction.nl diff --git a/.github/workflows/issue-triage.yml b/.github/workflows/issue-triage.yml index d09528416..3297b046b 100644 --- a/.github/workflows/issue-triage.yml +++ b/.github/workflows/issue-triage.yml @@ -12,7 +12,7 @@ on: jobs: triage: - uses: Conduction/.github/.github/workflows/issue-triage.yml@main + uses: ConductionNL/.github/.github/workflows/issue-triage.yml@main with: app-name: doriath backlog-existing: ${{ github.event_name == 'workflow_dispatch' && inputs.backlog-existing || false }} diff --git a/.github/workflows/merge-hygiene.yml b/.github/workflows/merge-hygiene.yml new file mode 100644 index 000000000..4852cee5e --- /dev/null +++ b/.github/workflows/merge-hygiene.yml @@ -0,0 +1,111 @@ +name: Merge Hygiene + +# WHY THIS EXISTS, and why it is separate from Code Quality. +# +# On 2026-08-14 a merge of origin/development was committed and PUSHED to +# `perf/predicted-page-fanout` with UNRESOLVED CONFLICT MARKERS in two files. +# `lib/Service/SynchronizationService.php` did not parse. Eighty-four tests were +# red. Nothing stopped it, and nothing reported it — because Code Quality's push +# trigger allows only `[main, development, feature/**, bugfix/**, hotfix/**]`, +# and `perf/**` matches none of them. The branch had no CI at all, so its last +# visible state was green from before the branch existed. +# +# The lesson is not "add perf/** to the list" — that fixes this branch and leaves +# the next prefix uncovered. Any branch anyone pushes should get at least the +# checks that take seconds, so this runs on `**` and stays deliberately cheap: +# no matrix, no containers, no dependencies, no Playwright. It is a smoke alarm, +# not the fire brigade. Code Quality remains the real gate on PRs. +on: + push: + branches: ['**'] + pull_request: + workflow_dispatch: + +concurrency: + group: merge-hygiene-${{ github.ref }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + hygiene: + name: Conflict markers and PHP syntax + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + # Conflict markers, anywhere in the tree we author. A marker means a merge + # was committed half-finished; every downstream signal from that commit is + # meaningless, so this fails first and says so plainly. + # + # Anchored to line start: `<<<<<<<` inside a string, a diff fixture or a + # docs example is legitimate and must not fail the build. Matching only at + # column 0 is what git itself writes. + - name: No unresolved conflict markers + run: | + set -euo pipefail + # SCOPED TO CODE, and to paths we author. A marker is only a defect + # where it would break something: prose that DOCUMENTS a conflict is + # legitimate, and so are agent-eval artifacts that capture one as + # sample output. openbuild failed this gate on + # `.claude/skills/create-pr/evals/.../summary.md` — a correct file. + # + # That matters more than the miss it allows. A gate that fails on + # correct files gets switched off, and takes the checks that were + # working with it; a marker in a markdown file breaks nothing. + if git grep -nE '^(<{7}|={7}|>{7})( |$)' -- \ + '*.php' '*.js' '*.mjs' '*.ts' '*.vue' '*.json' '*.yml' '*.yaml' '*.css' '*.scss' \ + ':!vendor' ':!node_modules' ':!*.lock' ':!tests/fixtures' ':!.claude' \ + ':!**/evals/**' ':!**/fixtures/**' > /tmp/markers.txt; then + echo "::error::Unresolved merge conflict markers are committed. This branch does not build." + cat /tmp/markers.txt + exit 1 + fi + echo "No conflict markers." + + - uses: shivammathur/setup-php@v2 + with: + php-version: '8.3' + coverage: none + + # Every PHP file parses. A conflict marker is caught above, but so is any + # other way a file can be committed unparseable — and this is the check + # that would have failed within seconds of the merge landing. + - name: PHP syntax + run: | + set -euo pipefail + fail=0 + while IFS= read -r f; do + php -l "$f" > /dev/null 2>&1 || { echo "::error file=$f::PHP syntax error"; php -l "$f" || true; fail=1; } + done < <(git ls-files '*.php' | grep -v '^vendor/' | grep -v '^tests/fixtures/') + exit "$fail" + + # JSON that will not parse breaks register fragments and app metadata, + # and is the other thing a bad merge leaves behind. + # + # SCOPED TWICE, because each widening found another honest file. The + # first version parsed every tracked .json and died on tsconfig/eslint + # JSONC. The second still reached `lib/**/*.json`, which in openbuild + # includes an entire app TEMPLATE — `.vscode/settings.json` and all. + # A template is not this app's configuration, and an editor file is not + # loaded by anything. What is left is what OpenRegister actually reads. + # + # SCOPED, because the first version was not and failed immediately on + # honest files: editor and tooling configs (tsconfig, eslint, devcontainer) + # are JSONC — comments and trailing commas — which is valid for their + # consumers and invalid for a strict parser. A gate that fails on correct + # files is worse than no gate: it gets switched off, and takes the checks + # that were working with it. Only the JSON the app itself loads is checked. + - name: JSON parses + run: | + set -euo pipefail + fail=0 + while IFS= read -r f; do + [ -f "$f" ] || continue + python3 -c "import json,sys; json.load(open(sys.argv[1]))" "$f" \ + || { echo "::error file=$f::invalid JSON"; fail=1; } + done < <(git ls-files 'composer.json' 'package.json' 'appinfo/*.json' 'lib/Settings/**/*.json' \ + | grep -v '^vendor/' | grep -v '^node_modules/' \ + | grep -v '/\.vscode/' | grep -v '^lib/Resources/template/') + exit "$fail" diff --git a/.github/workflows/openspec-sync.yml b/.github/workflows/openspec-sync.yml index 9dfd9ceaf..4283bc11e 100644 --- a/.github/workflows/openspec-sync.yml +++ b/.github/workflows/openspec-sync.yml @@ -8,7 +8,7 @@ on: jobs: sync: - uses: Conduction/.github/.github/workflows/openspec-sync.yml@main + uses: ConductionNL/.github/.github/workflows/openspec-sync.yml@main with: app-name: doriath secrets: diff --git a/.github/workflows/pull-request-lint-check.yaml b/.github/workflows/pull-request-lint-check.yaml index f2402987a..29a00d0e7 100644 --- a/.github/workflows/pull-request-lint-check.yaml +++ b/.github/workflows/pull-request-lint-check.yaml @@ -10,11 +10,24 @@ on: jobs: lint-check: runs-on: ubuntu-latest + # Observed fleet-wide over 176 runs: median 0.6 min, max 1.4 min. + timeout-minutes: 15 steps: - name: Checkout repository uses: actions/checkout@v2 + # This job had NO setup-node at all, so it inherited the runner default — + # currently Node 22, which bundles npm 10. npm 10 cannot install from the + # npm 11 lockfile this repo now ships: it exits EUSAGE with + # "Missing: from lock file". Node 24 bundles npm 11. + # + # Nothing in this file named a Node version, so nothing looked wrong. + - name: Set up Node + uses: actions/setup-node@v4 + with: + node-version: '24' + - name: Install dependencies run: npm ci diff --git a/.github/workflows/release-beta.yml b/.github/workflows/release-beta.yml deleted file mode 100644 index 0384fcfea..000000000 --- a/.github/workflows/release-beta.yml +++ /dev/null @@ -1,12 +0,0 @@ -name: Beta Release - -on: - push: - branches: [beta] - -jobs: - release: - uses: Conduction/.github/.github/workflows/release-beta.yml@main - with: - app-name: doriath - secrets: inherit diff --git a/.github/workflows/release-stable.yml b/.github/workflows/release-stable.yml deleted file mode 100644 index cc2b18052..000000000 --- a/.github/workflows/release-stable.yml +++ /dev/null @@ -1,12 +0,0 @@ -name: Stable Release - -on: - push: - branches: [main] - -jobs: - release: - uses: Conduction/.github/.github/workflows/release-stable.yml@main - with: - app-name: doriath - secrets: inherit diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..0782cf632 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,53 @@ +name: Release + +# ONE release workflow for the whole fleet. +# +# Every app used to carry three caller files (`release-development.yml`, +# `release-beta.yml`, `release-stable.yml`) pointing at two different shared +# workflows. Those two drifted: the pair edited `appinfo/info.xml` in the +# working tree only, so their tags named commits still showing the PREVIOUS +# version — harmless for a timestamped dev build, wrong for a stable release, +# because Nextcloud's release template asserts +# [ "$APP_VERSION" = "v$(xpath info.xml //version)" ] +# +# `release.yml` is the strict one and is now the only one. It commits the bump +# to a `release/v` branch, tags THAT commit, and opens a pull request +# to bring the integration branch up — so the tag and the package agree without +# anything pushing at a protected branch. + +on: + push: + branches: [main, beta, development] + workflow_dispatch: + +# Releases publish artifacts. A cancelled release is neither a success nor a +# rollback — it is a half-published version — so queued runs wait rather than +# cancelling the one in flight. +concurrency: + group: release-${{ github.ref_name }} + cancel-in-progress: false + +jobs: + unstable: + if: github.ref == 'refs/heads/development' + uses: ConductionNL/.github/.github/workflows/release.yml@main + with: + release-type: unstable + app-name: doriath + secrets: inherit + + beta: + if: github.ref == 'refs/heads/beta' + uses: ConductionNL/.github/.github/workflows/release.yml@main + with: + release-type: beta + app-name: doriath + secrets: inherit + + stable: + if: github.ref == 'refs/heads/main' + uses: ConductionNL/.github/.github/workflows/release.yml@main + with: + release-type: stable + app-name: doriath + secrets: inherit diff --git a/.github/workflows/sync-to-beta.yml b/.github/workflows/sync-to-beta.yml index 6081fe871..979a37346 100644 --- a/.github/workflows/sync-to-beta.yml +++ b/.github/workflows/sync-to-beta.yml @@ -6,5 +6,5 @@ on: jobs: sync: - uses: Conduction/.github/.github/workflows/sync-to-beta.yml@main + uses: ConductionNL/.github/.github/workflows/sync-to-beta.yml@main secrets: inherit diff --git a/.gitignore b/.gitignore index 9896ac267..fd45ae8b9 100644 --- a/.gitignore +++ b/.gitignore @@ -15,7 +15,9 @@ /website/node_modules/ /website/.docusaurus/ /js/ -/custom_apps/ +# Host-side apps dir bind-mounted by docker-compose.yml; App Store installs +# land here. Only the placeholder that keeps the directory is tracked. +/custom_apps /config/ /coverage/ @@ -40,34 +42,42 @@ phpqa_output.log *.xls *.xlsx -# Files with unusual extensions or no extensions that could be mistakes -**/PR * -**/adds * -**/implements * -**/ALL * -**/endpoints * -**/*Analysis* -**/*references* -**/*encoding* -**/ter -**/clearCache* -**/update*Settings* -**/rebase* -**/setup* -# vitest harness setup MUST ship — re-allow it (the catch-all above was -# intended for stray "setup.txt" / "setup-rebase" workspace artefacts). -!tests/vitest/setup.js -!tests/**/setup.js +# Stray workspace artefacts — files a mistyped shell command drops in the +# working directory, e.g. `PR description`, `adds foo`, `setup-rebase`, `ter`. +# +# ANCHORED TO THE REPOSITORY ROOT, deliberately. These were `**/`-prefixed, +# which made them match by BASENAME at any depth, and several of the patterns +# are ordinary source-file names: +# +# **/setup* ignored tests/vitest/setup.js — the vitest harness — +# and needed two `!` negations to undo itself. That +# tracked-but-ignored pair is what gate-29 reports. +# **/update*Settings* would ignore an `updateSettings.js` store action. +# **/*Analysis* would ignore a `SecretAnalysisService.php`. +# **/*encoding* would ignore an `encoding.js`. +# **/*references* would ignore any `references.*`. +# +# None of those files exists yet, which is exactly why this was invisible: the +# rule does not break anything until someone adds a normally-named file, and +# then it silently fails to stage it. A stray artefact lands where the command +# was run — the repository root — so root-anchoring loses no coverage. +# +# The negations are gone with the rule that required them: `tests/vitest/setup.js` +# is no longer matched by anything, rather than being matched and re-allowed. +/PR * +/adds * +/implements * +/ALL * +/endpoints * +/ter +/clearCache* +/rebase* +/setup* # Temporary test files that shouldn't be committed simple-solr-test.php test-solr-connection.php -# Files with unusual extensions or no extensions that could be mistakes -**/PR * -**/adds * -**/implements * - phpqa/ # Docker AI models (too large for git) @@ -98,5 +108,16 @@ openspec/test-site-results/**/*.webp /tests/e2e/.auth/ /tests/e2e/playwright-report/ /tests/e2e/test-results/ +# The CI config (tests/e2e/playwright.config.ts) deliberately writes to the APP +# ROOT instead of tests/e2e/, because that is where the shared quality +# workflow's upload-artifact steps look: server/apps//playwright-report/ +# and server/apps//test-results/. Hence these two extra, differently-rooted +# entries alongside the tests/e2e/ ones above. +/playwright-report/ +/test-results/ /coverage-vitest/ /coverage/ + +# docs-site build artefacts (regenerated by npm; never track) +docs/node_modules/ +docs/build/ diff --git a/.npmrc b/.npmrc new file mode 100644 index 000000000..1c5abf626 --- /dev/null +++ b/.npmrc @@ -0,0 +1,14 @@ +# Supply-chain hardening (gate-84). THREE settings that only work together; +# any one alone is a configuration that looks like protection and is not: +# +# 1. min-release-age — the cooldown window itself +# 2. min-release-age-exclude[] — first-party releases must NOT be delayed +# 3. package.json engines.npm — npm 10 does NOT implement min-release-age +# +# This repo had no `.npmrc` at all, so there was no cooldown to be inert. +# +# Without the exclusion the cooldown does not fail loudly — it silently +# resolves BACKWARDS. Installing @conduction/nextcloud-vue on release day +# under a cooldown with no exclusion resolves an old version and exits 0. +min-release-age=2 +min-release-age-exclude[]=@conduction/* diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 000000000..2bd5a0a98 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +22 diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php new file mode 100644 index 000000000..db5845325 --- /dev/null +++ b/.php-cs-fixer.dist.php @@ -0,0 +1,20 @@ +getFinder() + ->notPath('vendor') + ->notPath('node_modules') + ->notPath('build') + ->in(__DIR__ . '/lib') + ->in(__DIR__ . '/tests'); + +return $config; diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000..976cd3fda --- /dev/null +++ b/.prettierignore @@ -0,0 +1,19 @@ +# Build output, vendored trees and the separate Docusaurus sites. +js/ +dist/ +build/ +node_modules/ +vendor/ +coverage/ +coverage-vitest/ +playwright-report/ +test-results/ +*.min.* +# This repo carries TWO Docusaurus trees, `docs/` and `docusaurus/`. Both are +# documentation sites with their own conventions (their CSS is space-indented +# by Docusaurus' own scaffolding), and both are built by a separate toolchain. +docs/ +docusaurus/ +# Written by the translation workflow — a formatter here would fight its own +# generator on every run. +l10n/ diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index cff284575..000000000 --- a/.prettierrc +++ /dev/null @@ -1,38 +0,0 @@ -{ - "overrides": [ - { - "files": ["*.json"], - "options": { - "parser": "json", - "printWidth": 120, - "tabWidth": 2 - } - }, - { - "files": ["*.ts", "*.tsx"], - "options": { - "parser": "typescript", - "printWidth": 120, - "trailingComma": "all", - "tabWidth": 2, - "singleQuote": false - } - }, - { - "files": ["*.css", "*.scss"], - "options": { - "parser": "css", - "tabWidth": 2 - } - }, - { - "files": ["conduction.css"], - "options": { - "parser": "css", - "trailingComma": "all", - "tabWidth": 2, - "printWidth": 150 - } - } - ] -} diff --git a/README.md b/README.md index 88396cbf9..37cad54f7 100644 --- a/README.md +++ b/README.md @@ -137,10 +137,18 @@ php occ app:enable doriath ### Start the environment +Requires a sibling checkout of [openregister](https://github.com/ConductionNL/openregister) +next to this repo (`../openregister`) — Doriath builds on OpenRegister's AppHost engine. + ```bash -docker compose -f ../.github/docker-compose.yml up -d +composer install && npm install && npm run build +docker compose up -d ``` +Nextcloud is served at http://localhost:8080 (admin/admin). Both `openregister` +and `doriath` are enabled automatically on every container start by the +`before-starting` hook in `docker/nextcloud/enable-apps.sh`. + ### Frontend development ```bash @@ -165,8 +173,12 @@ npm run stylelint # CSS linting ### Enable locally +The docker compose stack enables both apps automatically on every start. To +(re-)enable them by hand — e.g. after disabling them, without restarting: + ```bash npm install && npm run build +docker exec nextcloud php occ app:enable openregister docker exec nextcloud php occ app:enable doriath ``` diff --git a/appinfo/info.xml b/appinfo/info.xml index 06e6bc859..d69dc0c1c 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -6,13 +6,14 @@ Doriath Encrypted secrets manager for Nextcloud — password manager and key store for users and applications Versleutelde geheimenbeheerder voor Nextcloud — wachtwoordmanager en sleutelopslag voor gebruikers en applicaties - - - 0.2.10 - agpl + 0.1.6-unstable.20260819081801 + EUPL-1.2 Conduction Doriath - https://github.com/ConductionNL/doriath - https://github.com/ConductionNL/doriath - https://github.com/ConductionNL/doriath + https://codeberg.org/Conduction/doriath + https://codeberg.org/Conduction/doriath + https://codeberg.org/Conduction/doriath security - https://github.com/ConductionNL/doriath - https://github.com/ConductionNL/doriath/discussions - https://github.com/ConductionNL/doriath/issues - https://github.com/ConductionNL/doriath + https://codeberg.org/Conduction/doriath + https://codeberg.org/Conduction/doriath/issues + https://codeberg.org/Conduction/doriath - https://raw.githubusercontent.com/ConductionNL/doriath/main/img/app-store.svg + https://codeberg.org/Conduction/doriath/raw/branch/main/img/app-store.svg + - - + pgsql + sqlite + mysql + + + OCA\Doriath\BackgroundJob\RenewIntermediateCertificate OCA\Doriath\BackgroundJob\CheckRootCertificateExpiry OCA\Doriath\BackgroundJob\PurgeAuditLogJob + OCA\Doriath\BackgroundJob\ExpireSecretRequestsJob + OCA\Doriath\BackgroundJob\ApproveElapsedEmergencyRequests + OCA\Doriath\BackgroundJob\PruneSecretVersionsJob + OCA\Doriath\BackgroundJob\ScanExpiringSecretsJob + OCA\Doriath\BackgroundJob\ExpireMachineLeasesJob + OCA\Doriath\BackgroundJob\EphemeralSendPurgeJob + OCA\Doriath\BackgroundJob\RefreshComplianceMetricsJob + OCA\Doriath\BackgroundJob\DeliverSiemEventsJob + OCA\Doriath\BackgroundJob\ScanCertificateExpiryJob - + OCA\Doriath\Repair\BootstrapCertificateAuthority OCA\Doriath\Repair\InitializeSettings OCA\Doriath\Repair\SeedSecretTypes @@ -83,8 +131,8 @@ Vrij en open source onder de EUPL-1.2-licentie. OCA\Doriath\Repair\SeedDevelopmentLinkShares OCA\Doriath\Repair\SeedDevelopmentShares OCA\Doriath\Repair\SeedDevelopmentSecretDelegations - - + + OCA\Doriath\Repair\BootstrapCertificateAuthority OCA\Doriath\Repair\InitializeSettings OCA\Doriath\Repair\SeedSecretTypes @@ -95,11 +143,20 @@ Vrij en open source onder de EUPL-1.2-licentie. OCA\Doriath\Repair\SeedDevelopmentLinkShares OCA\Doriath\Repair\SeedDevelopmentShares OCA\Doriath\Repair\SeedDevelopmentSecretDelegations - + OCA\Doriath\Settings\AdminSettings OCA\Doriath\Sections\SettingsSection + + + + doriath + Doriath + doriath.dashboard.page + app.svg + + diff --git a/appinfo/routes.php b/appinfo/routes.php index 9e82158ec..acc852200 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -27,6 +27,8 @@ ['name' => 'settings#getAdminSettings', 'url' => '/api/settings/admin', 'verb' => 'GET'], ['name' => 'settings#updateAdminSettings', 'url' => '/api/settings/admin', 'verb' => 'PUT'], ['name' => 'settings#getUserSettings', 'url' => '/api/settings/user', 'verb' => 'GET'], + // Read-only org password policy for write dialogs (org-password-policies §1.3). + ['name' => 'settings#getPolicy', 'url' => '/api/settings/policy', 'verb' => 'GET'], ['name' => 'settings#updateUserSettings', 'url' => '/api/settings/user', 'verb' => 'PUT'], // EncryptionSuite CRUD. @@ -48,6 +50,16 @@ ['name' => 'migration#getStatus', 'url' => '/api/v1/migrations/status', 'verb' => 'GET'], ['name' => 'migration#complete', 'url' => '/api/v1/migrations/{id}/complete', 'verb' => 'POST'], + // Compromise-recovery migration work loop. One record per request: the + // browser decrypts with the old private key, re-encrypts under the new one, + // proves the round-trip, and posts the ciphertext here. Store-specific + // paths rather than a generic {store, id} — authorization differs per store + // and a store-name parameter on a per-object write path invites an IDOR. + ['name' => 'migration#getWork', 'url' => '/api/v1/migrations/{id}/work', 'verb' => 'GET'], + ['name' => 'migration#reEncryptSecret', 'url' => '/api/v1/migrations/{id}/secrets/{secretId}', 'verb' => 'POST'], + ['name' => 'migration#reEncryptVersion', 'url' => '/api/v1/migrations/{id}/versions/{versionId}', 'verb' => 'POST'], + ['name' => 'migration#reEncryptAttachmentGrant', 'url' => '/api/v1/migrations/{id}/attachment-grants/{grantId}', 'verb' => 'POST'], + // Key generator endpoint (stateless, authenticated). ['name' => 'keyGenerator#generate', 'url' => '/api/v1/generate-key', 'verb' => 'POST'], @@ -87,10 +99,23 @@ ['name' => 'linkShareAccess#show', 'url' => '/api/v1/public/link-shares/{token}', 'verb' => 'GET'], ['name' => 'linkShareAccess#confirm', 'url' => '/api/v1/public/link-shares/{token}/confirm', 'verb' => 'POST'], + // Emergency access — break-glass lifecycle (add-emergency-access §2.3). + ['name' => 'emergencyAccess#index', 'url' => '/api/v1/emergency-access/contacts', 'verb' => 'GET'], + ['name' => 'emergencyAccess#incoming', 'url' => '/api/v1/emergency-access/incoming', 'verb' => 'GET'], + ['name' => 'emergencyAccess#granteeCertificate', 'url' => '/api/v1/emergency-access/grantee-certificate', 'verb' => 'GET'], + ['name' => 'emergencyAccess#create', 'url' => '/api/v1/emergency-access/contacts', 'verb' => 'POST'], + ['name' => 'emergencyAccess#destroy', 'url' => '/api/v1/emergency-access/contacts/{id}', 'verb' => 'DELETE'], + ['name' => 'emergencyAccess#request', 'url' => '/api/v1/emergency-access/contacts/{id}/request', 'verb' => 'POST'], + ['name' => 'emergencyAccess#decline', 'url' => '/api/v1/emergency-access/contacts/{id}/decline', 'verb' => 'POST'], + ['name' => 'emergencyAccess#envelope', 'url' => '/api/v1/emergency-access/contacts/{id}/envelope', 'verb' => 'GET'], + // User-to-user sharing — implement-user-sharing §9. ['name' => 'share#index', 'url' => '/api/v1/secrets/{secretId}/shares', 'verb' => 'GET'], ['name' => 'share#create', 'url' => '/api/v1/secrets/{secretId}/shares', 'verb' => 'POST'], ['name' => 'share#createBatch', 'url' => '/api/v1/secrets/{secretId}/shares/batch', 'verb' => 'POST'], + // Bulk direct-share registration + recipient-cert lookup (bulk-actions §6.1). + ['name' => 'share#registerBatch', 'url' => '/api/v1/shares/register-batch', 'verb' => 'POST'], + ['name' => 'share#recipientCertificate', 'url' => '/api/v1/shares/recipient-certificate', 'verb' => 'GET'], ['name' => 'share#sync', 'url' => '/api/v1/secrets/{secretId}/sync', 'verb' => 'PUT'], ['name' => 'share#destroy', 'url' => '/api/v1/shares/{id}', 'verb' => 'DELETE'], @@ -109,6 +134,14 @@ // Delegations — implement-user-sharing §9.4. ['name' => 'delegation#index', 'url' => '/api/v1/secrets/{secretId}/delegations', 'verb' => 'GET'], ['name' => 'delegation#create', 'url' => '/api/v1/secrets/{secretId}/delegations', 'verb' => 'POST'], + // The vault-admin power grab (user-sharing spec.md § Ownership Delegation). + // Its own route, not a flag on delegation#create: the two are different + // authorization decisions and must stay distinguishable in the audit trail. + ['name' => 'delegation#handover', 'url' => '/api/v1/secrets/{secretId}/delegations/handover', 'verb' => 'POST'], + // Group membership only, so the UI can decide whether to OFFER the + // takeover. delegation#index answers only to a secret's owner, so a vault + // admin cannot learn it from there. + ['name' => 'delegation#capabilities', 'url' => '/api/v1/delegations/capabilities', 'verb' => 'GET'], ['name' => 'delegation#reclaim', 'url' => '/api/v1/secrets/{secretId}/delegations/reclaim', 'verb' => 'POST'], // Secret requests — scaffold (implement-secret-requests). @@ -119,6 +152,76 @@ ['name' => 'secretRequest#decline', 'url' => '/api/v1/secret-requests/{id}/decline', 'verb' => 'POST'], ['name' => 'secretRequest#destroy', 'url' => '/api/v1/secret-requests/{id}', 'verb' => 'DELETE'], + // Anonymous SPA shell for recipient pages (ephemeral-send §5.3 + + // link-share access): serves the same index template as the app page + // but as #[PublicPage], so account-less recipients reach the SPA. + ['name' => 'publicShell#page', 'url' => '/public', 'verb' => 'GET'], + + // Compliance reporting (compliance-reporting §4) — admin-only, the + // gate runs in the controller body before any report logic. + ['name' => 'complianceReport#generate', 'url' => '/api/v1/compliance/reports', 'verb' => 'POST'], + ['name' => 'complianceReport#index', 'url' => '/api/v1/compliance/reports', 'verb' => 'GET'], + ['name' => 'complianceReport#show', 'url' => '/api/v1/compliance/reports/{id}', 'verb' => 'GET'], + ['name' => 'complianceReport#metrics', 'url' => '/api/v1/compliance/metrics', 'verb' => 'GET'], + ['name' => 'complianceReport#exported', 'url' => '/api/v1/compliance/reports/{id}/exported', 'verb' => 'POST'], + + // SIEM audit export (siem-audit-export §6) — admin-only, the gate + // runs in the controller body before any sink logic. + ['name' => 'siemSink#index', 'url' => '/api/v1/siem/sinks', 'verb' => 'GET'], + ['name' => 'siemSink#create', 'url' => '/api/v1/siem/sinks', 'verb' => 'POST'], + ['name' => 'siemSink#update', 'url' => '/api/v1/siem/sinks/{id}', 'verb' => 'PUT'], + ['name' => 'siemSink#destroy', 'url' => '/api/v1/siem/sinks/{id}', 'verb' => 'DELETE'], + ['name' => 'siemSink#test', 'url' => '/api/v1/siem/sinks/{id}/test', 'verb' => 'POST'], + + // Certificate lifecycle (certificate-lifecycle §4) — inventory + + // client-parsed metadata + guided renewal; owner-scoped in the + // service. CA health rides the existing admin-only ca#getStatus. + ['name' => 'certificate#inventory', 'url' => '/api/v1/certificates/inventory', 'verb' => 'GET'], + ['name' => 'certificate#submitMetadata', 'url' => '/api/v1/certificates/{secretId}/metadata', 'verb' => 'PUT'], + ['name' => 'certificate#renewalChecklist', 'url' => '/api/v1/certificates/{secretId}/renewal-checklist', 'verb' => 'POST'], + ['name' => 'certificate#reissueSuite', 'url' => '/api/v1/certificates/suites/{suiteId}/reissue', 'verb' => 'POST'], + ['name' => 'cACertificate#health', 'url' => '/api/v1/ca/health', 'verb' => 'GET'], + + // Honey credentials (honey-credentials §4) — decoy tripwires; + // owner/admin guards run in the service. + ['name' => 'honey#flag', 'url' => '/api/v1/secrets/{id}/honey', 'verb' => 'POST'], + ['name' => 'honey#unflag', 'url' => '/api/v1/secrets/{id}/honey', 'verb' => 'DELETE'], + ['name' => 'honey#status', 'url' => '/api/v1/secrets/{id}/honey', 'verb' => 'GET'], + ['name' => 'honey#alerts', 'url' => '/api/v1/honey/alerts', 'verb' => 'GET'], + ['name' => 'honey#acknowledge', 'url' => '/api/v1/honey/alerts/{id}/acknowledge', 'verb' => 'POST'], + ['name' => 'honey#snooze', 'url' => '/api/v1/honey/alerts/{id}/snooze', 'verb' => 'POST'], + + // Offline cache (offline-readonly-cache §1.4) — owner-scoped + // consolidated snapshot; 403 when the admin off switch is set. + ['name' => 'offline#manifest', 'url' => '/api/v1/offline/manifest', 'verb' => 'GET'], + + // Offline service worker (offline-readonly-cache §3) — served from the + // app root with the correct JS MIME + app-root default scope. + ['name' => 'serviceWorker#script', 'url' => '/serviceworker.js', 'verb' => 'GET'], + + // PWA web app manifest (mobile-pwa §1.2) — served with the correct + // application/manifest+json MIME; distinct from src/manifest.json. + ['name' => 'webManifest#manifest', 'url' => '/manifest.webmanifest', 'verb' => 'GET'], + + // Passkey vault login (passkey-vault-login §2.4) — owner-scoped, + // authenticated (the NC session is valid; only the vault is locked). + ['name' => 'passkey#index', 'url' => '/api/v1/passkeys', 'verb' => 'GET'], + ['name' => 'passkey#challenge', 'url' => '/api/v1/passkeys/challenge', 'verb' => 'GET'], + ['name' => 'passkey#create', 'url' => '/api/v1/passkeys', 'verb' => 'POST'], + ['name' => 'passkey#loginOptions', 'url' => '/api/v1/passkeys/login-options', 'verb' => 'GET'], + ['name' => 'passkey#used', 'url' => '/api/v1/passkeys/{id}/used', 'verb' => 'POST'], + ['name' => 'passkey#destroy', 'url' => '/api/v1/passkeys/{id}', 'verb' => 'DELETE'], + + // Ephemeral send (ephemeral-send §4): authenticated owner surface + + // anonymous two-phase access (peek/access/confirm/failure). + ['name' => 'ephemeralSend#create', 'url' => '/api/v1/sends', 'verb' => 'POST'], + ['name' => 'ephemeralSend#index', 'url' => '/api/v1/sends', 'verb' => 'GET'], + ['name' => 'ephemeralSend#destroy', 'url' => '/api/v1/sends/{id}', 'verb' => 'DELETE'], + ['name' => 'ephemeralSendAccess#peek', 'url' => '/api/v1/public/sends/{token}', 'verb' => 'GET'], + ['name' => 'ephemeralSendAccess#access', 'url' => '/api/v1/public/sends/{token}/access', 'verb' => 'POST'], + ['name' => 'ephemeralSendAccess#confirm', 'url' => '/api/v1/public/sends/{token}/confirm', 'verb' => 'POST'], + ['name' => 'ephemeralSendAccess#failure', 'url' => '/api/v1/public/sends/{token}/failure', 'verb' => 'POST'], + // Secret requests — public fill-in flow (implement-secret-requests §4.2). // Token-based recipient endpoints; no Nextcloud auth. ['name' => 'secretRequestFill#show', 'url' => '/api/v1/public/secret-requests/{token}', 'verb' => 'GET'], @@ -138,6 +241,14 @@ ['name' => 'application#approve', 'url' => '/api/v1/applications/{id}/approve', 'verb' => 'POST'], ['name' => 'application#reject', 'url' => '/api/v1/applications/{id}/reject', 'verb' => 'POST'], ['name' => 'application#certificate', 'url' => '/api/v1/applications/{id}/certificate', 'verb' => 'GET'], + + // An administrator's view of what an application is asking humans for + // (admin-application-request-visibility). Admin-scoped, NOT registrar-scoped, + // and distinct from /api/v1/app/secret-requests, which is the application's + // own Bearer-authenticated surface over its own vault. + ['name' => 'applicationRequestAdmin#index', 'url' => '/api/v1/applications/{id}/secret-requests', 'verb' => 'GET'], + ['name' => 'applicationRequestAdmin#destroy', 'url' => '/api/v1/applications/{id}/secret-requests/{requestId}', 'verb' => 'DELETE'], + ['name' => 'application#show', 'url' => '/api/v1/applications/{id}', 'verb' => 'GET'], ['name' => 'application#destroy', 'url' => '/api/v1/applications/{id}', 'verb' => 'DELETE'], @@ -158,10 +269,74 @@ ['name' => 'applicationSecrets#show', 'url' => '/api/v1/app/secrets/{id}', 'verb' => 'GET'], ['name' => 'applicationSecrets#update', 'url' => '/api/v1/app/secrets/{id}', 'verb' => 'PUT'], + // Machine leases (machine-secret-leases §4). Bearer-authenticated + // application surface; JwtAuthMiddleware runs before each handler. + // Machine secret-request creation (application-secret-request-creation + // §1.1). Same JWT-Bearer posture as the sibling /api/v1/app/* routes: the + // Application principal comes from JwtAuthMiddleware, never from a session. + ['name' => 'applicationSecretRequests#index', 'url' => '/api/v1/app/secret-requests', 'verb' => 'GET'], + ['name' => 'applicationSecretRequests#create', 'url' => '/api/v1/app/secret-requests', 'verb' => 'POST'], + + ['name' => 'machineLease#index', 'url' => '/api/v1/app/leases', 'verb' => 'GET'], + ['name' => 'machineLease#renew', 'url' => '/api/v1/app/leases/{id}/renew', 'verb' => 'POST'], + ['name' => 'machineLease#revoke', 'url' => '/api/v1/app/leases/{id}/revoke', 'verb' => 'POST'], + // Session-authenticated admin/owner lease management. + ['name' => 'leaseAdmin#index', 'url' => '/api/v1/applications/{id}/leases', 'verb' => 'GET'], + ['name' => 'leaseAdmin#setPolicy', 'url' => '/api/v1/applications/{id}/lease-policy', 'verb' => 'PUT'], + ['name' => 'leaseAdmin#revoke', 'url' => '/api/v1/leases/{leaseId}', 'verb' => 'DELETE'], + + // Version history (secret-version-history §6.2). List rides under the + // secret; show/restore address the version id. Per-object authorization + // lives in SecretVersionService method bodies. + ['name' => 'secretVersion#index', 'url' => '/api/v1/secrets/{secretId}/versions', 'verb' => 'GET'], + ['name' => 'secretVersion#show', 'url' => '/api/v1/versions/{id}', 'verb' => 'GET'], + ['name' => 'secretVersion#restore', 'url' => '/api/v1/versions/{id}/restore', 'verb' => 'POST'], + + // Rotation & expiry (rotation-expiry-policies §5.1). + ['name' => 'rotation#getExpiry', 'url' => '/api/v1/secrets/{id}/expiry', 'verb' => 'GET'], + ['name' => 'rotation#setExpiry', 'url' => '/api/v1/secrets/{id}/expiry', 'verb' => 'PUT'], + ['name' => 'rotation#policies', 'url' => '/api/v1/expiry-policies', 'verb' => 'GET'], + ['name' => 'rotation#upsertPolicy', 'url' => '/api/v1/expiry-policies', 'verb' => 'POST'], + ['name' => 'rotation#destroyPolicy', 'url' => '/api/v1/expiry-policies/{id}', 'verb' => 'DELETE'], + ['name' => 'rotation#flags', 'url' => '/api/v1/rotation-flags', 'verb' => 'GET'], + ['name' => 'rotation#flagBatch', 'url' => '/api/v1/rotation-flags', 'verb' => 'POST'], + ['name' => 'rotation#markRotated', 'url' => '/api/v1/rotation-flags/{id}/rotated', 'verb' => 'POST'], + ['name' => 'rotation#dismissFlag', 'url' => '/api/v1/rotation-flags/{id}/dismiss', 'verb' => 'POST'], + + // Attachments (encrypted-attachments §4.2). Upload/list ride under the + // owning secret; download/grants/delete address the attachment id. + // Per-object authorization lives in AttachmentService method bodies. + ['name' => 'attachment#create', 'url' => '/api/v1/secrets/{secretId}/attachments', 'verb' => 'POST'], + ['name' => 'attachment#index', 'url' => '/api/v1/secrets/{secretId}/attachments', 'verb' => 'GET'], + ['name' => 'attachment#download', 'url' => '/api/v1/attachments/{id}/blob', 'verb' => 'GET'], + ['name' => 'attachment#addGrant', 'url' => '/api/v1/attachments/{id}/grants', 'verb' => 'POST'], + ['name' => 'attachment#destroy', 'url' => '/api/v1/attachments/{id}', 'verb' => 'DELETE'], + + // Team folder sharing (team-folder-sharing §4.1). Static segments + // (offboard) precede the {id} routes so they resolve first. Per-object + // owner/admin guards live in TeamFolderService method bodies. + // + // The membership routes target TeamFolderMemberController; the folder + // routes target TeamFolderController. The URLs are identical to before + // that split — only the route names differ — so no client changes. + ['name' => 'teamFolder#index', 'url' => '/api/v1/team-folders', 'verb' => 'GET'], + ['name' => 'teamFolder#create', 'url' => '/api/v1/team-folders', 'verb' => 'POST'], + ['name' => 'teamFolder#offboard', 'url' => '/api/v1/team-folders/offboard', 'verb' => 'POST'], + ['name' => 'teamFolderMember#members', 'url' => '/api/v1/team-folders/{id}/members', 'verb' => 'GET'], + ['name' => 'teamFolderMember#addMember', 'url' => '/api/v1/team-folders/{id}/members', 'verb' => 'POST'], + ['name' => 'teamFolderMember#removeMember', 'url' => '/api/v1/team-folders/{id}/members/{memberId}', 'verb' => 'DELETE'], + // Folder permission grades (folder-permission-grades §3.1). + ['name' => 'teamFolderMember#setMemberGrade', 'url' => '/api/v1/team-folders/{id}/members/{memberId}', 'verb' => 'PATCH'], + ['name' => 'share#writeContext', 'url' => '/api/v1/secrets/{id}/write-context', 'verb' => 'GET'], + ['name' => 'teamFolder#reconcile', 'url' => '/api/v1/team-folders/{id}/reconcile', 'verb' => 'GET'], + ['name' => 'teamFolder#registerShares', 'url' => '/api/v1/team-folders/{id}/shares', 'verb' => 'POST'], + ['name' => 'teamFolderMember#approveJoin', 'url' => '/api/v1/team-folders/{id}/approve-join', 'verb' => 'POST'], + ['name' => 'teamFolder#destroy', 'url' => '/api/v1/team-folders/{id}', 'verb' => 'DELETE'], + // Audit trail (add-secret-audit-trail §4.1). Specific /secret/{id} and // /me routes come before the admin instance-wide /audit collection. ['name' => 'audit#secret', 'url' => '/api/v1/audit/secret/{id}', 'verb' => 'GET'], - ['name' => 'audit#me', 'url' => '/api/v1/audit/me', 'verb' => 'GET'], + ['name' => 'audit#mine', 'url' => '/api/v1/audit/me', 'verb' => 'GET'], ['name' => 'audit#index', 'url' => '/api/v1/audit', 'verb' => 'GET'], // Password-health breach-check proxy (password-health §1.5). Prefix-only @@ -179,4 +354,16 @@ // completed export before offering the local download; this dispatches // SecretExportedEvent for the session user. No secret material is sent. ['name' => 'export#events', 'url' => '/api/v1/export/events', 'verb' => 'POST'], + + // CXP (FIDO Credential Exchange Protocol) opaque handshake relay + // (cxp-transfer §2.2). Carries only public keys + HPKE ciphertext between + // two cooperating browser sessions — never plaintext or server-openable keys. + ['name' => 'cxpRelay#put', 'url' => '/api/v1/cxp/relay', 'verb' => 'POST'], + ['name' => 'cxpRelay#get', 'url' => '/api/v1/cxp/relay/{pairingId}/{slot}', 'verb' => 'GET'], + + // Browser-extension pairing + URL match (browser-extension-autofill §1). + // App-password authenticated; returns encrypted blobs only, never plaintext. + ['name' => 'extension#pair', 'url' => '/api/v1/extension/pair', 'verb' => 'POST'], + ['name' => 'extension#unpair', 'url' => '/api/v1/extension/unpair', 'verb' => 'POST'], + ['name' => 'extension#match', 'url' => '/api/v1/extension/match', 'verb' => 'GET'], ]); diff --git a/browser-extension/.gitignore b/browser-extension/.gitignore new file mode 100644 index 000000000..849ddff3b --- /dev/null +++ b/browser-extension/.gitignore @@ -0,0 +1 @@ +dist/ diff --git a/browser-extension/README.md b/browser-extension/README.md new file mode 100644 index 000000000..3bb3eb3eb --- /dev/null +++ b/browser-extension/README.md @@ -0,0 +1,58 @@ +# Doriath browser extension + +A Manifest V3 WebExtension (Firefox / Chrome / Edge) that brings **autofill**, +**passkey provision**, and **TOTP** to the [Doriath](../) secrets manager — +without weakening its zero-knowledge model. + +The extension is a **second end-to-end client**, exactly the shape ADR-003 +already defines: it pairs against the user's Nextcloud session, unlocks the vault +**inside the extension** (master password → derive AES key → decrypt the private +key → non-extractable WebCrypto `CryptoKey` in the background service worker), +and the server only ever ships **encrypted blobs**. The master password, the +derived key, and plaintext never reach the server and are never written to +`storage.local`/`storage.sync`. + +## Layout + +``` +browser-extension/ + manifest.json MV3 manifest + src/ + crypto/ the SAME recipe as the web app (re-exported from ../../src/crypto) + lib/ + api.js Doriath API client (pair, match, list, get, create, update) + match.js registrable-domain / origin matching over unencrypted url/name + vault.js in-worker unlock/lock state + decrypt-on-demand + background/ + service-worker.js holds the CryptoKey; unlock, lock timer, blob fetch, decrypt, + WebAuthn ceremony (passkey), TOTP compute + popup/ + popup.html / popup.js unlock, matched-credential list, save/update, TOTP code, lock + content/ + content-script.js field detection + fill (all_frames), submit-capture, OTP fill, + WebAuthn relay + inpage-shim.js page-context navigator.credentials shim (Firefox path) + passkey/webauthn.js create()/get() ceremony (client-side signing) + totp/ RFC 6238 (re-exported from ../../src/totp) + tests/ vitest unit + integration +``` + +## Zero-knowledge invariants (enforced by tests) + +- The `CryptoKey` is `extractable: false` and lives only in the service worker's + memory — never in `storage.*`, never in a request body. +- A paired-but-locked extension can list unencrypted names/URLs but cannot + decrypt any value. +- Autofill, WebAuthn signing, and TOTP computation all happen in the extension; + the server sees only ciphertext. +- The extension auto-locks on idle timeout, browser/OS lock, worker termination, + and manual lock — clearing the key and all derived state. + +## Build + +The extension shares the web app's `src/crypto` and `src/totp` modules verbatim +(ADR-003 dual-implementation invariant), bundled with esbuild: + +```sh +npm run build:extension # from the repo root +``` diff --git a/browser-extension/build.mjs b/browser-extension/build.mjs new file mode 100644 index 000000000..11a8bee5d --- /dev/null +++ b/browser-extension/build.mjs @@ -0,0 +1,58 @@ +/** + * Build the Doriath MV3 extension with esbuild. Each entry is bundled to a + * single self-contained ESM/IIFE file (MV3 forbids remote code + runtime chunk + * loading), inlining the shared `src/crypto` and `src/totp` modules verbatim so + * the PHP↔JS↔extension crypto stays in lockstep (ADR-003). + * + * Usage: node browser-extension/build.mjs [--watch] + */ +import { build, context } from 'esbuild' +import { cp, mkdir, rm } from 'node:fs/promises' +import { dirname, resolve } from 'node:path' +import { fileURLToPath } from 'node:url' + +const root = dirname(fileURLToPath(import.meta.url)) +const outdir = resolve(root, 'dist') +const watch = process.argv.includes('--watch') + +const common = { + bundle: true, + format: 'esm', + target: ['chrome110', 'firefox110'], + logLevel: 'info', + sourcemap: false, + legalComments: 'none', +} + +// The content script must be a classic (non-module) IIFE — content scripts do +// not support ES module imports. +const entries = [ + { in: resolve(root, 'src/background/service-worker.js'), out: 'service-worker', format: 'esm' }, + { in: resolve(root, 'src/popup/popup.js'), out: 'popup', format: 'esm' }, + { in: resolve(root, 'src/content/content-script.js'), out: 'content-script', format: 'iife' }, + { in: resolve(root, 'src/content/inpage-shim.js'), out: 'inpage-shim', format: 'iife' }, + { in: resolve(root, 'src/passkey/consent.js'), out: 'consent', format: 'esm' }, +] + +async function run() { + await rm(outdir, { recursive: true, force: true }) + await mkdir(outdir, { recursive: true }) + + for (const e of entries) { + const opts = { ...common, entryPoints: [e.in], outfile: resolve(outdir, e.out + '.js'), format: e.format } + if (watch) { + const ctx = await context(opts) + await ctx.watch() + } else { + await build(opts) + } + } + + // Static assets: manifest + popup html/css (service-worker/popup ESM live in dist/). + await cp(resolve(root, 'manifest.json'), resolve(outdir, 'manifest.json')) + await cp(resolve(root, 'src/popup/popup.html'), resolve(outdir, 'popup.html')) + await cp(resolve(root, 'src/popup/popup.css'), resolve(outdir, 'popup.css')) + await cp(resolve(root, 'src/passkey/consent.html'), resolve(outdir, 'consent.html')) +} + +run().catch((e) => { console.error(e); process.exit(1) }) diff --git a/browser-extension/manifest.json b/browser-extension/manifest.json new file mode 100644 index 000000000..07b25cd31 --- /dev/null +++ b/browser-extension/manifest.json @@ -0,0 +1,47 @@ +{ + "manifest_version": 3, + "name": "Doriath", + "version": "0.1.0", + "description": "Zero-knowledge autofill for the Doriath secrets manager. The vault is unlocked and every secret decrypted inside the extension — the server only ever ships encrypted blobs.", + "permissions": [ + "storage", + "activeTab", + "tabs", + "scripting", + "clipboardWrite", + "idle", + "windows" + ], + "optional_permissions": [ + "webAuthenticationProxy" + ], + "host_permissions": [ + "http://*/*", + "https://*/*" + ], + "background": { + "service_worker": "service-worker.js", + "type": "module" + }, + "action": { + "default_popup": "popup.html", + "default_title": "Doriath" + }, + "content_scripts": [ + { + "matches": ["http://*/*", "https://*/*"], + "all_frames": true, + "run_at": "document_idle", + "js": ["content-script.js"] + } + ], + "web_accessible_resources": [ + { + "resources": ["inpage-shim.js"], + "matches": ["http://*/*", "https://*/*"] + } + ], + "content_security_policy": { + "extension_pages": "script-src 'self'; object-src 'self'" + } +} diff --git a/browser-extension/src/background/service-worker.js b/browser-extension/src/background/service-worker.js new file mode 100644 index 000000000..95bab958f --- /dev/null +++ b/browser-extension/src/background/service-worker.js @@ -0,0 +1,261 @@ +/** + * Background service worker — the extension's trust core (browser-extension- + * autofill §"Extension architecture"). It is the ONLY place the vault CryptoKey + * lives (in memory, never persisted); the popup and content scripts are + * untrusted UIs that message it. + * + * Responsibilities: pairing, in-worker unlock/lock, URL-matched candidate list + * (metadata only until the user selects), decrypt-on-demand + fill, submit + * capture → save/update, and auto-lock (idle timeout, browser lock, worker + * termination clears memory for free). + */ + +import * as api from '../lib/api.js' +import * as vault from '../lib/vault.js' +import { matchSecrets, hostOf } from '../lib/match.js' +import { buildPasskeyOrchestrator } from '../passkey/orchestrator.js' +import { registerWebAuthnProxy } from '../passkey/registration.js' +import { computeTotp } from '../lib/totp-service.js' + +// Passkey provider (extension-passkey-provider): bind the ceremony orchestrator +// to this worker's api + vault. Used by both the native WebAuthn proxy (Chrome/ +// Edge) and the page-context shim relay (Firefox/others). +const passkey = buildPasskeyOrchestrator({ api, vault, loadConfig: api.loadConfig }) +registerWebAuthnProxy(passkey) + +const DEFAULT_IDLE_MINUTES = 15 + +// A pending submit-capture, surfaced to the popup for save/update confirmation. +let pendingCapture = null + +async function idleMs() { + const config = await api.loadConfig() + const minutes = (config && config.idleMinutes) || DEFAULT_IDLE_MINUTES + return minutes * 60 * 1000 +} + +async function touchActivity() { + vault.armIdleLock(await idleMs()) +} + +/** Current state for the popup to render the right view. */ +async function getState() { + const config = await api.loadConfig() + return { + paired: !!config, + unlocked: vault.isUnlocked(), + user: config ? config.user : null, + url: config ? config.url : null, + } +} + +async function doPair(payload) { + const config = { + url: payload.url, + user: payload.user, + appPassword: payload.appPassword, + } + // Verify the credential actually pairs before persisting it. + await api.pair(config) + await api.saveConfig(config) + return { ok: true } +} + +async function doUnpair() { + const config = await api.loadConfig() + if (config) { + try { + await api.unpair(config) + } catch { + // Best-effort; unpairing is local + NC-side revocation. + } + } + vault.lock() + await api.clearConfig() + return { ok: true } +} + +async function doUnlock(payload) { + const config = await api.loadConfig() + if (!config) throw new Error('not paired') + await vault.unlock(config, payload.masterPassword) + await touchActivity() + return { ok: true } +} + +/** + * Candidate list for a host — metadata only (id/name/url). No decryption + * happens here; a locked-but-paired extension can still list names/urls. + * @param payload + */ +async function doMatch(payload) { + const config = await api.loadConfig() + if (!config) throw new Error('not paired') + const rows = await api.match(config, payload.host) + const ranked = matchSecrets(rows, payload.host) + // Return only index fields to the popup; the blobs stay in the worker cache. + blobCache = new Map(ranked.map((r) => [r.id, r])) + return ranked.map((r) => ({ + id: r.id, + name: r.name, + url: r.url, + typeId: r.typeId, + })) +} + +// Short-lived cache of the last match's blob rows (cleared on lock). +let blobCache = new Map() + +/** + * Decrypt the chosen secret and fill it into the active tab. + * @param payload + */ +async function doFill(payload) { + if (!vault.isUnlocked()) throw new Error('vault is locked') + const row = + blobCache.get(payload.id) + || (await api.getSecret(await api.loadConfig(), payload.id)) + const { login, secret } = await vault.decryptSecret(row) + await touchActivity() + const [tab] = await chrome.tabs.query({ active: true, currentWindow: true }) + if (!tab) return { filled: false } + const results = await chrome.tabs + .sendMessage(tab.id, { + type: 'fill-credential', + payload: { login, secret }, + }) + .catch(() => ({ filled: false })) + // Auto-copy a matched TOTP code so it is one paste away on the 2FA prompt + // (extension-totp-autofill §3). The popup performs the clipboard write + + // scheduled clear (a service worker has no clipboard access). + let host = '' + try { + host = tab.url ? new URL(tab.url).hostname : '' + } catch { + host = '' + } + const totpCode = host ? await totpCodeForHost(host) : null + if (totpCode) { + // Best-effort: fill a detected OTP field on the page; the popup also + // copies the code as the fallback (extension-totp-autofill §4.1). + chrome.tabs + .sendMessage(tab.id, { type: 'fill-otp', payload: { code: totpCode } }) + .catch(() => {}) + } + return { filled: !!results?.filled, totpCode } +} + +/** + * Find a `totp`-typed secret matching the host and compute its current code + * (extension-totp-autofill §2.1). The seed is decrypted only transiently. + * + * @param {object} payload { host } + * @return {Promise<{ valid: boolean, code?: string, secondsRemaining?: number }>} + */ +async function doTotpForHost(payload) { + if (!vault.isUnlocked()) throw new Error('vault is locked') + const config = await api.loadConfig() + const totpTypeId = await api.typeIdByName(config, 'totp') + if (!totpTypeId) return { valid: false, none: true } + const rows = matchSecrets(await api.match(config, payload.host), payload.host) + const totp = rows.find((r) => r.typeId === totpTypeId) + if (!totp) return { valid: false, none: true } + const seed = await vault.decryptField(totp.key) + await touchActivity() + return computeTotp(seed) +} + +/** + * Compute the TOTP code for a matched host, if any (auto-copy on fill). + * @param {string} host + * @return {Promise} + */ +async function totpCodeForHost(host) { + try { + const result = await doTotpForHost({ host }) + return result.valid ? result.code : null + } catch { + return null + } +} + +/** + * Save or update a captured credential (encrypted client-side). + * @param payload + */ +async function doSaveCapture(payload) { + if (!vault.isUnlocked()) throw new Error('vault is locked') + const config = await api.loadConfig() + const encryptedKey = await vault.encryptField(payload.secret) + const encryptedLogin = await vault.encryptField(payload.login || '') + const body = { + name: payload.name || hostOf(payload.host), + url: payload.url || payload.host, + key: encryptedKey, + login: encryptedLogin, + encryptionSuiteId: vault.activeSuiteId(), + } + if (payload.id) { + await api.updateSecret(config, payload.id, body) + } else { + await api.createSecret(config, body) + } + pendingCapture = null + await touchActivity() + return { ok: true } +} + +function takePendingCapture() { + return pendingCapture +} + +// --- message router --- + +const handlers = { + 'get-state': getState, + pair: doPair, + unpair: doUnpair, + unlock: doUnlock, + lock: async () => { + vault.lock() + blobCache = new Map() + return { ok: true } + }, + match: doMatch, + fill: doFill, + 'save-capture': doSaveCapture, + 'totp-for-host': doTotpForHost, + 'pending-capture': async () => ({ capture: takePendingCapture() }), + // WebAuthn ceremonies relayed from the page-context shim (Firefox path). + 'webauthn-create': async (p) => ({ + credential: await passkey.handleCreate(p.options, p.origin), + }), + 'webauthn-get': async (p) => ({ + assertion: await passkey.handleGet(p.options, p.origin), + }), +} + +chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => { + // Submit-capture arrives from a content script (has sender.tab); stash it. + if (msg?.type === 'capture-credential') { + pendingCapture = { ...msg.payload } + sendResponse({ ok: true }) + return true + } + const handler = handlers[msg?.type] + if (!handler) return false + handler(msg.payload || {}) + .then((result) => sendResponse(result)) + .catch((e) => sendResponse({ error: e.message || String(e) })) + return true // async response +}) + +// Auto-lock on OS/browser idle+locked. +if (chrome.idle && chrome.idle.onStateChanged) { + chrome.idle.onStateChanged.addListener((state) => { + if (state === 'locked') { + vault.lock() + blobCache = new Map() + } + }) +} diff --git a/browser-extension/src/content/content-script.js b/browser-extension/src/content/content-script.js new file mode 100644 index 000000000..896a1fbde --- /dev/null +++ b/browser-extension/src/content/content-script.js @@ -0,0 +1,233 @@ +/** + * Content script — runs in every frame (`all_frames: true`), including the + * login-form iframes the incumbent's extension fails to fill (design: + * "Content-script fill covers iframes explicitly"). + * + * Responsibilities: + * - detect username/password fields in this document, + * - fill a credential the background worker sends (only after explicit user + * selection in the popup — the content script never decides to fill), + * - capture a submitted credential and offer it to the worker for save/update, + * - detect a one-time-code field and fill a TOTP code (extension-totp-autofill), + * - relay page-context WebAuthn ceremonies (extension-passkey-provider). + * + * No secret is ever stored here; the worker owns all key material. + */ + +const USERNAME_SELECTORS = [ + 'input[autocomplete="username"]', + 'input[autocomplete="email"]', + 'input[type="email"]', + 'input[name*="user" i]', + 'input[name*="email" i]', + 'input[id*="user" i]', + 'input[id*="email" i]', +] +const PASSWORD_SELECTORS = [ + 'input[type="password"]', + 'input[autocomplete="current-password"]', +] +const OTP_SELECTORS = [ + 'input[autocomplete="one-time-code"]', + 'input[name*="otp" i]', + 'input[name*="totp" i]', + 'input[id*="otp" i]', + 'input[inputmode="numeric"][maxlength="6"]', +] + +function visible(el) { + if (!el || el.disabled || el.readOnly) return false + const rect = el.getBoundingClientRect() + if (rect.width === 0 && rect.height === 0) return false + const style = getComputedStyle(el) + return style.visibility !== 'hidden' && style.display !== 'none' +} + +function firstVisible(selectors) { + for (const sel of selectors) { + for (const el of document.querySelectorAll(sel)) { + if (visible(el)) return el + } + } + return null +} + +/** Detect the login field pair in this frame. */ +function detectLoginFields() { + const password = firstVisible(PASSWORD_SELECTORS) + let username = firstVisible(USERNAME_SELECTORS) + // If no explicit username field, take a preceding visible text input. + if (!username && password) { + const inputs = Array.from(document.querySelectorAll('input')) + const pwIndex = inputs.indexOf(password) + for (let i = pwIndex - 1; i >= 0; i--) { + const t = (inputs[i].type || 'text').toLowerCase() + if ( + (t === 'text' || t === 'email' || t === 'tel') + && visible(inputs[i]) + ) { + username = inputs[i] + break + } + } + } + return { username, password } +} + +/** + * Fire the input/change events frameworks (React/Vue) listen for. + * @param el + * @param value + */ +function setValue(el, value) { + if (!el) return + const proto = Object.getPrototypeOf(el) + const setter = Object.getOwnPropertyDescriptor(proto, 'value')?.set + if (setter) { + setter.call(el, value) + } else { + el.value = value + } + el.dispatchEvent(new Event('input', { bubbles: true })) + el.dispatchEvent(new Event('change', { bubbles: true })) +} + +function fillCredential({ login, secret }) { + const { username, password } = detectLoginFields() + let filled = false + if (username && login) { + username.focus() + setValue(username, login) + filled = true + } + if (password && secret) { + password.focus() + setValue(password, secret) + filled = true + } + return filled +} + +/** + * Fill a one-time code into a detected OTP field, if any (best-effort). + * @param code + */ +function fillOtp(code) { + const field = firstVisible(OTP_SELECTORS) + if (!field) return false + field.focus() + setValue(field, code) + return true +} + +function reportHasLoginForm() { + const { username, password } = detectLoginFields() + return { + hasPassword: !!password, + hasUsername: !!username, + hasOtp: !!firstVisible(OTP_SELECTORS), + } +} + +// --- submit capture (save/update prompt) --- + +function attachSubmitCapture() { + document.addEventListener('submit', onSubmit, true) + // SPA logins often don't fire submit; also capture on password-field blur+enter. + document.addEventListener( + 'keydown', + (e) => { + if (e.key === 'Enter') captureCurrent() + }, + true, + ) +} + +function onSubmit() { + captureCurrent() +} + +function captureCurrent() { + const { username, password } = detectLoginFields() + if (!password || !password.value) return + try { + chrome.runtime.sendMessage({ + type: 'capture-credential', + payload: { + host: location.hostname, + url: location.origin, + login: username ? username.value : '', + secret: password.value, + }, + }) + } catch { + // The worker may be asleep; the capture is best-effort. + } +} + +// --- message handling from the popup / background worker --- + +chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => { + switch (msg?.type) { + case 'detect-login': + sendResponse(reportHasLoginForm()) + return true + case 'fill-credential': + sendResponse({ filled: fillCredential(msg.payload) }) + return true + case 'fill-otp': + sendResponse({ filled: fillOtp(msg.payload?.code) }) + return true + default: + return false + } +}) + +attachSubmitCapture() + +// --- WebAuthn relay (extension-passkey-provider, page-context shim path) --- + +// Inject the page-context shim so it can override navigator.credentials in the +// page's own JS world (a content script's overrides are not visible to the page). +function injectShim() { + try { + const s = document.createElement('script') + s.src = chrome.runtime.getURL('inpage-shim.js') + s.onload = () => s.remove() + ;(document.head || document.documentElement).appendChild(s) + } catch { + // CSP may block injection; the native proxy path covers Chrome/Edge. + } +} + +// Relay page shim → service worker → page. +window.addEventListener('message', async (event) => { + if (event.source !== window) return + const data = event.data + if (!data || data.__doriath !== 'request') return + const type = data.op === 'create' ? 'webauthn-create' : 'webauthn-get' + try { + const res = await chrome.runtime.sendMessage({ + type, + payload: { options: data.options, origin: data.origin }, + }) + window.postMessage( + { + __doriath: 'response', + id: data.id, + ...(res || { error: 'no-response' }), + }, + event.origin, + ) + } catch (e) { + window.postMessage( + { __doriath: 'response', id: data.id, error: e.message || String(e) }, + event.origin, + ) + } +}) + +// Only the top frame injects the shim (avoids duplicate overrides in iframes). +if (window.top === window) { + injectShim() +} diff --git a/browser-extension/src/content/inpage-shim.js b/browser-extension/src/content/inpage-shim.js new file mode 100644 index 000000000..13d0da12f --- /dev/null +++ b/browser-extension/src/content/inpage-shim.js @@ -0,0 +1,114 @@ +/** + * Page-context WebAuthn shim (extension-passkey-provider §1.2) — injected into + * the page's own JS world on browsers without a native WebAuthn proxy (Firefox + * and others). It overrides `navigator.credentials.create/get`, forwards the + * ceremony to the content script (origin-checked `postMessage`), and returns a + * PublicKeyCredential-shaped result. On decline/no-match it re-invokes the + * ORIGINAL implementation so the platform authenticator still works. + */ +;(function () { + const original = { + create: + navigator.credentials + && navigator.credentials.create.bind(navigator.credentials), + get: + navigator.credentials + && navigator.credentials.get.bind(navigator.credentials), + } + if (!original.create) return + + let seq = 0 + const pending = new Map() + + window.addEventListener('message', (event) => { + if (event.source !== window) return + const data = event.data + if (!data || data.__doriath !== 'response') return + const entry = pending.get(data.id) + if (!entry) return + pending.delete(data.id) + entry(data) + }) + + function ask(op, options, publicKey) { + return new Promise((resolve) => { + const id = ++seq + pending.set(id, resolve) + window.postMessage( + { + __doriath: 'request', + id, + op, + origin: location.origin, + options: serializeOptions(publicKey), + }, + location.origin, + ) + }) + } + + function b64url(buf) { + const bytes = new Uint8Array(buf) + let s = '' + for (const b of bytes) s += String.fromCharCode(b) + return btoa(s).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '') + } + function bytes(arr) { + return Uint8Array.from(arr).buffer + } + + function serializeOptions(pk) { + const out = { ...pk } + if (pk.challenge) out.challenge = b64url(pk.challenge) + if (pk.user && pk.user.id) out.user = { ...pk.user, id: b64url(pk.user.id) } + if (pk.allowCredentials) + out.allowCredentials = pk.allowCredentials.map((c) => ({ + ...c, + id: b64url(c.id), + })) + if (pk.excludeCredentials) + out.excludeCredentials = pk.excludeCredentials.map((c) => ({ + ...c, + id: b64url(c.id), + })) + return out + } + + function toCredential(r) { + const resp = r.response + const response = {} + if (resp.attestationObject) { + response.clientDataJSON = bytes(resp.clientDataJSON) + response.attestationObject = bytes(resp.attestationObject) + response.getAuthenticatorData = () => bytes([]) + response.getPublicKey = () => null + } else { + response.clientDataJSON = bytes(resp.clientDataJSON) + response.authenticatorData = bytes(resp.authenticatorData) + response.signature = bytes(resp.signature) + response.userHandle = resp.userHandle ? bytes(resp.userHandle) : null + } + return { + id: r.id, + rawId: bytes(r.rawId), + type: 'public-key', + response, + getClientExtensionResults: () => ({}), + authenticatorAttachment: 'platform', + } + } + + navigator.credentials.create = async function (options) { + if (!options || !options.publicKey) return original.create(options) + const res = await ask('create', options, options.publicKey) + if (res.error || !res.credential) return original.create(options) // fall-through + return toCredential(res.credential) + } + + navigator.credentials.get = async function (options) { + if (!options || !options.publicKey) return original.get(options) + const res = await ask('get', options, options.publicKey) + if (res.error || !res.assertion) return original.get(options) // fall-through + return toCredential(res.assertion) + } +})() diff --git a/browser-extension/src/crypto/index.js b/browser-extension/src/crypto/index.js new file mode 100644 index 000000000..8d10c707a --- /dev/null +++ b/browser-extension/src/crypto/index.js @@ -0,0 +1,27 @@ +/** + * Crypto for the extension — the SAME recipe as the web app, re-exported + * verbatim so PHP↔JS↔extension round-trips stay valid (ADR-003 dual- + * implementation invariant, browser-extension-autofill §2.2). No re- + * implementation: every primitive is imported from the web app's `src/crypto`. + * + * The extension unlock mirrors the web client exactly (ADR-003 browser-user + * client-side WebCrypto path): master password + suite salt → AES unlock key → + * decrypt the private-key envelope → import a NON-EXTRACTABLE RSA CryptoKey held + * only in the service worker's memory. Field values are RSA-OAEP decrypted on + * demand with that key. + */ +export { + deriveAesKey, + encryptPrivateKey, + decryptPrivateKey, +} from '../../../src/crypto/aes.js' + +export { + generateKeyPair, + importPrivateKey, + importPublicKey, + rsaEncrypt, + rsaDecrypt, +} from '../../../src/crypto/rsa.js' + +export { encodeEnvelope, decodeEnvelope } from '../../../src/crypto/envelope.js' diff --git a/browser-extension/src/lib/api.js b/browser-extension/src/lib/api.js new file mode 100644 index 000000000..db29cbb0f --- /dev/null +++ b/browser-extension/src/lib/api.js @@ -0,0 +1,152 @@ +/** + * Doriath API client for the extension. Authenticates with the paired Nextcloud + * app-password (HTTP Basic) — never a login password, never a new long-lived + * Doriath secret (browser-extension-autofill §"Pairing"). Every response is an + * encrypted blob or plaintext index field; the server never returns a decrypted + * value. + * + * Config ({ url, user, appPassword }) lives in `storage.local`; the app-password + * is a device-scoped, NC-revocable credential. No key material is stored here — + * the master password and the derived CryptoKey never touch storage. + */ + +const CONFIG_KEY = 'doriath.config' + +/** Load the paired config from storage.local (or null if unpaired). */ +export async function loadConfig() { + const data = await chrome.storage.local.get(CONFIG_KEY) + return data[CONFIG_KEY] || null +} + +/** + * Persist the paired config (non-sensitive: url, user, app-password). + * @param config + */ +export async function saveConfig(config) { + await chrome.storage.local.set({ [CONFIG_KEY]: config }) +} + +/** Clear the pairing. */ +export async function clearConfig() { + await chrome.storage.local.remove(CONFIG_KEY) +} + +function authHeader(config) { + return 'Basic ' + btoa(`${config.user}:${config.appPassword}`) +} + +function base(config) { + return String(config.url).replace(/\/+$/, '') +} + +async function request(config, method, path, body) { + const res = await fetch(base(config) + '/index.php/apps/doriath' + path, { + method, + headers: { + Authorization: authHeader(config), + 'Content-Type': 'application/json', + 'OCS-APIRequest': 'true', + Accept: 'application/json', + }, + body: body ? JSON.stringify(body) : undefined, + }) + if (!res.ok) { + const text = await res.text().catch(() => '') + const err = new Error(`Doriath ${method} ${path} failed (${res.status})`) + err.status = res.status + err.body = text + throw err + } + if (res.status === 204) return null + return res.json() +} + +/** + * Confirm the app-password pairs; returns { ok, user, capabilities }. + * @param config + */ +export function pair(config) { + return request(config, 'POST', '/api/v1/extension/pair') +} + +/** + * Acknowledge unpairing (revocation is the NC app-password). + * @param config + */ +export function unpair(config) { + return request(config, 'POST', '/api/v1/extension/unpair') +} + +/** + * Fetch the caller's active EncryptionSuite (private-key envelope + certificate). + * @param config + */ +export async function fetchActiveSuite(config) { + const suites = await request(config, 'GET', '/api/v1/suites') + const list = Array.isArray(suites) ? suites : suites.items || [] + const active = list.find((s) => s.status === 'active') + if (!active) throw new Error('no active encryption suite') + return active +} + +/** + * URL-match secrets for a host — returns blob rows (ciphertext key/login). + * @param config + * @param host + */ +export async function match(config, host) { + const data = await request( + config, + 'GET', + '/api/v1/extension/match?host=' + encodeURIComponent(host), + ) + return data.items || [] +} + +/** + * Fetch one secret by id (blobs). + * @param config + * @param id + */ +export function getSecret(config, id) { + return request(config, 'GET', '/api/v1/secrets/' + encodeURIComponent(id)) +} + +/** + * Create a secret from an already-encrypted body (blobs only). + * @param config + * @param body + */ +export function createSecret(config, body) { + return request(config, 'POST', '/api/v1/secrets', body) +} + +/** + * Update a secret with an already-encrypted body (blobs only). + * @param config + * @param id + * @param body + */ +export function updateSecret(config, id, body) { + return request(config, 'PUT', '/api/v1/secrets/' + encodeURIComponent(id), body) +} + +/** + * Fetch the secret-type catalogue and return the id of a type by name/slug. + * @param config + * @param name + */ +export async function typeIdByName(config, name) { + const types = await request(config, 'GET', '/api/v1/secret-types') + const list = Array.isArray(types) ? types : types.items || [] + const match = list.find((t) => t.name === name || t.slug === name) + return match ? match.id : null +} + +/** + * The passkey type id (or null). + * @param config + */ +export function passkeyTypeId(config) { + return typeIdByName(config, 'passkey') +} diff --git a/browser-extension/src/lib/match.js b/browser-extension/src/lib/match.js new file mode 100644 index 000000000..ef97b56e3 --- /dev/null +++ b/browser-extension/src/lib/match.js @@ -0,0 +1,109 @@ +/** + * Origin / registrable-domain matching for autofill candidate selection. + * + * Matching runs over the UNENCRYPTED `url`/`name` index fields only (ADR-003 + * §"URL matching on the unencrypted index fields") — never over decrypted + * values. A locked extension can therefore still list candidate names/URLs + * without decrypting anything. + * + * v1 uses a conservative registrable-domain (eTLD+1 approximation) match plus a + * substring fallback on the human `name`, always requiring explicit user + * selection before any fill (anti-phishing). + */ + +// A small multi-label public-suffix set covering the common cases. This is an +// approximation, not the full PSL — a wrong guess only widens/narrows the +// candidate list the user must still pick from; it never causes a silent fill. +const MULTI_LABEL_SUFFIXES = new Set([ + 'co.uk', + 'org.uk', + 'gov.uk', + 'ac.uk', + 'co.jp', + 'or.jp', + 'ne.jp', + 'com.au', + 'net.au', + 'org.au', + 'com.br', + 'co.nz', + 'co.za', + 'com.mx', + 'co.in', + 'gov.nl', // Dutch government (the primary audience) +]) + +/** + * Extract the hostname from a URL or bare host string; '' if unparseable. + * @param input + */ +export function hostOf(input) { + if (!input) return '' + const value = String(input).trim() + try { + // Accept bare hosts by giving the URL parser a scheme. + const withScheme = /^[a-z]+:\/\//i.test(value) ? value : 'https://' + value + return new URL(withScheme).hostname.toLowerCase() + } catch { + return '' + } +} + +/** + * The registrable domain (eTLD+1 approximation) of a hostname. + * @param host + */ +export function registrableDomain(host) { + const h = hostOf(host) + if (!h || h.indexOf('.') === -1) return h + const parts = h.split('.') + const lastTwo = parts.slice(-2).join('.') + const lastThree = parts.slice(-3).join('.') + if (parts.length >= 3 && MULTI_LABEL_SUFFIXES.has(lastTwo)) { + return lastThree + } + return lastTwo +} + +/** + * Score how well a stored secret (with plaintext `url`/`name`) matches a target + * origin. Higher is better; 0 means no match. + * + * @param {{ url?: string, name?: string }} secret + * @param {string} targetHost The active tab hostname (or URL) + * @return {number} + */ +export function matchScore(secret, targetHost) { + const target = hostOf(targetHost) + if (!target) return 0 + const targetReg = registrableDomain(target) + + const secretHost = hostOf(secret.url) + if (secretHost) { + if (secretHost === target) return 100 // exact host + if (registrableDomain(secretHost) === targetReg && targetReg) return 80 // same site + } + + // Fallback: the human name mentions the registrable domain or its label. + const name = (secret.name || '').toLowerCase() + if (targetReg && name.includes(targetReg)) return 40 + const label = targetReg.split('.')[0] + if (label && label.length >= 3 && name.includes(label)) return 20 + + return 0 +} + +/** + * Filter + rank secrets for a target origin. Only secrets with a positive score + * are returned, best first. The caller still requires explicit user selection. + * + * @param {Array<{ url?: string, name?: string }>} secrets + * @param {string} targetHost + * @return {Array} matching secrets, best-first, each with `_score` + */ +export function matchSecrets(secrets, targetHost) { + return (secrets || []) + .map((s) => ({ ...s, _score: matchScore(s, targetHost) })) + .filter((s) => s._score > 0) + .sort((a, b) => b._score - a._score) +} diff --git a/browser-extension/src/lib/totp-service.js b/browser-extension/src/lib/totp-service.js new file mode 100644 index 000000000..511d90a34 --- /dev/null +++ b/browser-extension/src/lib/totp-service.js @@ -0,0 +1,50 @@ +/** + * TOTP service for the extension (extension-totp-autofill). Decrypts a matched + * `totp` secret's seed in the worker and computes the current RFC 6238 code + + * seconds-remaining, reusing the web app's generator verbatim (`src/totp`). The + * seed, derived HMAC key, and code are held only transiently and never written + * to `storage.*` or a request body. + * + * An unparseable seed yields `{ valid: false }` — never a fabricated code. + */ + +import { parseOtpauth, generateTotp, secondsRemaining } from '../totp/index.js' + +/** + * Compute the current TOTP code for a decrypted seed string (an `otpauth://` + * URI or a bare base32 secret). + * + * @param {string} seed The decrypted seed + * @param {number} [now] Epoch ms (injectable for tests) + * @return {Promise<{ valid: boolean, code?: string, secondsRemaining?: number, period?: number }>} + */ +export async function computeTotp(seed, now = undefined) { + let params + try { + params = parseOtpauth(seed) + } catch { + return { valid: false } + } + if (!params || !params.secret) { + return { valid: false } + } + try { + const epoch = now === undefined ? undefined : now + const code = + epoch === undefined + ? await generateTotp(params) + : await generateTotp(params, epoch) + const remaining = + epoch === undefined + ? secondsRemaining(params.period) + : secondsRemaining(params.period, epoch) + return { + valid: true, + code, + secondsRemaining: remaining, + period: params.period, + } + } catch { + return { valid: false } + } +} diff --git a/browser-extension/src/lib/vault.js b/browser-extension/src/lib/vault.js new file mode 100644 index 000000000..7a1fa58b6 --- /dev/null +++ b/browser-extension/src/lib/vault.js @@ -0,0 +1,118 @@ +/** + * In-worker vault state — the extension's equivalent of the web client's + * session store (`src/store/modules/session.js`), following the identical unlock + * sequence (ADR-003 browser-user client-side WebCrypto path): + * + * fetch active suite → decryptPrivateKey(envelope, masterPassword) + * → importPrivateKey (NON-EXTRACTABLE) → hold the CryptoKey in memory. + * + * The master password, the derived AES key, and the RSA CryptoKey NEVER touch + * `storage.*` and never leave the worker. Field values are RSA-OAEP decrypted on + * demand; new/updated secrets are encrypted to the suite certificate. + * + * This module holds module-scoped state (the service worker is a singleton). All + * of it is cleared on lock. + */ + +import { + decryptPrivateKey, + importPrivateKey, + importPublicKey, + rsaDecrypt, + rsaEncrypt, +} from '../crypto/index.js' +import { fetchActiveSuite } from './api.js' + +// Locked state: no key material present. +let cryptoKey = null // non-extractable RSA private key +let publicKey = null // suite certificate public key (for encrypting saves) +let suiteId = null +let idleTimer = null + +/** Whether the vault is unlocked (a CryptoKey is held). */ +export function isUnlocked() { + return cryptoKey !== null +} + +export function activeSuiteId() { + return suiteId +} + +/** + * Unlock: fetch the active suite, decrypt its private key with the master + * password, and import a non-extractable CryptoKey. Returns nothing sensitive. + * + * @param {object} config The paired API config + * @param {string} masterPassword The master password (used only here) + * @return {Promise} + */ +export async function unlock(config, masterPassword) { + const suite = await fetchActiveSuite(config) + const pem = await decryptPrivateKey(suite.privateKey, masterPassword) + cryptoKey = await importPrivateKey(pem) // extractable: false + publicKey = await importPublicKey(suite.certificate) + suiteId = suite.id +} + +/** Lock: clear ALL key material and derived state. */ +export function lock() { + cryptoKey = null + publicKey = null + suiteId = null + if (idleTimer) { + clearTimeout(idleTimer) + idleTimer = null + } +} + +/** + * Decrypt one ciphertext field (RSA-OAEP chunked) with the in-memory key. + * Throws if locked. + * + * @param {string} ciphertext base64 chunked ciphertext (or '' → '') + * @return {Promise} + */ +export async function decryptField(ciphertext) { + if (!cryptoKey) throw new Error('vault is locked') + if (!ciphertext) return '' + return rsaDecrypt(ciphertext, cryptoKey) +} + +/** + * Decrypt the autofill-relevant fields of a secret row. + * + * @param {object} secret A blob row ({ key, login, ... }) + * @return {Promise<{ login: string, secret: string }>} + */ +export async function decryptSecret(secret) { + const [login, value] = await Promise.all([ + decryptField(secret.login || ''), + decryptField(secret.key || ''), + ]) + return { login, secret: value } +} + +/** + * Encrypt a plaintext value to the suite certificate (for save/update capture). + * Throws if locked. + * + * @param {string} plaintext + * @return {Promise} base64 chunked ciphertext + */ +export async function encryptField(plaintext) { + if (!publicKey) throw new Error('vault is locked') + if (!plaintext) return '' + return rsaEncrypt(plaintext, publicKey) +} + +/** + * (Re)arm the idle auto-lock timer. Any activity resets it; expiry locks. + * + * @param {number} idleMs Idle timeout in ms + * @return {void} + */ +export function armIdleLock(idleMs) { + if (idleTimer) clearTimeout(idleTimer) + if (!idleMs || idleMs <= 0) return + idleTimer = setTimeout(() => lock(), idleMs) +} diff --git a/browser-extension/src/passkey/cbor.js b/browser-extension/src/passkey/cbor.js new file mode 100644 index 000000000..84369564a --- /dev/null +++ b/browser-extension/src/passkey/cbor.js @@ -0,0 +1,90 @@ +/** + * Minimal CBOR encoder — just the subset WebAuthn needs (unsigned/negative + * ints, byte/text strings, arrays, maps). Used to build the attestation object + * and the COSE public key (extension-passkey-provider §2.2). No decoder is + * needed: the extension only produces these structures. + */ + +function encodeType(major, value) { + if (value < 24) return Uint8Array.of((major << 5) | value) + if (value < 0x100) return Uint8Array.of((major << 5) | 24, value) + if (value < 0x10000) + return Uint8Array.of((major << 5) | 25, value >> 8, value & 0xff) + return Uint8Array.of( + (major << 5) | 26, + (value >>> 24) & 0xff, + (value >>> 16) & 0xff, + (value >>> 8) & 0xff, + value & 0xff, + ) +} + +function concat(chunks) { + let len = 0 + for (const c of chunks) len += c.length + const out = new Uint8Array(len) + let off = 0 + for (const c of chunks) { + out.set(c, off) + off += c.length + } + return out +} + +/** + * Encode a JS value to CBOR. Supported: number (int), bigint-free; Uint8Array + * (byte string); string (text); Array; Map (preserves key order); plain object + * is NOT supported — use a Map so key order + integer keys are explicit. + * + * @param {*} value + * @return {Uint8Array} + */ +export function cborEncode(value) { + if (typeof value === 'number' && Number.isInteger(value)) { + return value >= 0 ? encodeType(0, value) : encodeType(1, -value - 1) + } + if (value instanceof Uint8Array) { + return concat([encodeType(2, value.length), value]) + } + if (typeof value === 'string') { + const bytes = new TextEncoder().encode(value) + return concat([encodeType(3, bytes.length), bytes]) + } + if (Array.isArray(value)) { + return concat([encodeType(4, value.length), ...value.map(cborEncode)]) + } + if (value instanceof Map) { + const parts = [encodeType(5, value.size)] + for (const [k, v] of value.entries()) { + parts.push(cborEncode(k), cborEncode(v)) + } + return concat(parts) + } + throw new Error('cbor: unsupported value ' + typeof value) +} + +/** + * Convert a WebCrypto raw ECDSA signature (r‖s, 64 bytes for P-256) to the + * ASN.1 DER encoding WebAuthn ES256 assertions require. + * + * @param {Uint8Array} raw 64-byte r‖s + * @return {Uint8Array} DER SEQUENCE(INTEGER r, INTEGER s) + */ +export function rawEcdsaToDer(raw) { + const half = raw.length / 2 + const derInt = (bytes) => { + let i = 0 + while (i < bytes.length - 1 && bytes[i] === 0) i++ + let v = bytes.slice(i) + if (v[0] & 0x80) { + const padded = new Uint8Array(v.length + 1) + padded.set(v, 1) + v = padded + } + return concat([Uint8Array.of(0x02, v.length), v]) + } + const r = derInt(raw.slice(0, half)) + const s = derInt(raw.slice(half)) + const body = concat([r, s]) + return concat([Uint8Array.of(0x30, body.length), body]) +} diff --git a/browser-extension/src/passkey/consent.html b/browser-extension/src/passkey/consent.html new file mode 100644 index 000000000..b18b75413 --- /dev/null +++ b/browser-extension/src/passkey/consent.html @@ -0,0 +1,19 @@ + + + + + Doriath — passkey consent + + + +
+

Passkey request

+

+
+ + +
+
+ + + diff --git a/browser-extension/src/passkey/consent.js b/browser-extension/src/passkey/consent.js new file mode 100644 index 000000000..af733e0ef --- /dev/null +++ b/browser-extension/src/passkey/consent.js @@ -0,0 +1,26 @@ +/** + * Passkey consent window — names the relying-party origin and requires an + * explicit Allow before the service worker signs or registers (extension- + * passkey-provider §2.1/§3.1: "explicit user confirmation before every sign"). + * Runs in the extension origin, so a page script cannot spoof it. + */ + +const params = new URLSearchParams(location.search) +const rp = params.get('rp') || 'this site' +const op = params.get('op') || 'get' +const id = params.get('id') + +document.getElementById('title').textContent = + op === 'create' ? 'Create a passkey?' : 'Sign in with a passkey?' +document.getElementById('body').textContent = + op === 'create' + ? `Create and store a new passkey for “${rp}” in your Doriath vault?` + : `Use a passkey stored in your Doriath vault to sign in to “${rp}”?` + +function respond(allow) { + chrome.runtime.sendMessage({ type: 'passkey-consent-result', id, allow }) + window.close() +} + +document.getElementById('allow').addEventListener('click', () => respond(true)) +document.getElementById('deny').addEventListener('click', () => respond(false)) diff --git a/browser-extension/src/passkey/orchestrator.js b/browser-extension/src/passkey/orchestrator.js new file mode 100644 index 000000000..a67554f44 --- /dev/null +++ b/browser-extension/src/passkey/orchestrator.js @@ -0,0 +1,153 @@ +/** + * Passkey ceremony orchestration in the service worker (extension-passkey- + * provider §2–§5). Ties the pure ceremony (`webauthn.js`) to the vault (decrypt + * the passkey private key, save a new credential, write back the counter) and to + * per-site consent. Every sign is gated on: (a) the vault being unlocked — the + * key must be decryptable, and the unlocked state satisfies user verification; + * and (b) an explicit per-RP consent the user grants in an extension window. + * + * On decline, no-match, or unsupported algorithm, the caller falls through to + * the platform authenticator rather than aborting the page's ceremony. + */ + +import { createCredential, getAssertion } from './webauthn.js' +import { serializePasskey, parsePasskey } from './vault-passkey.js' + +/** + * Open the consent window and resolve true/false. The window messages back + * `{ type: 'passkey-consent-result', id, allow }`. Closing the window without a + * decision resolves false (decline). + * + * @param {string} rpId The relying-party id shown to the user + * @param {string} op 'create' | 'get' + * @return {Promise} + */ +function requestConsent(rpId, op) { + return new Promise((resolve) => { + const id = Math.floor(performance.now()) + ':' + rpId + const url = + chrome.runtime.getURL('consent.html') + + '?rp=' + + encodeURIComponent(rpId) + + '&op=' + + encodeURIComponent(op) + + '&id=' + + encodeURIComponent(id) + let settled = false + const listener = (msg) => { + if (msg && msg.type === 'passkey-consent-result' && msg.id === id) { + settled = true + chrome.runtime.onMessage.removeListener(listener) + resolve(!!msg.allow) + } + } + chrome.runtime.onMessage.addListener(listener) + chrome.windows.create( + { url, type: 'popup', width: 380, height: 260 }, + (win) => { + // If the window is closed without a decision, treat as decline. + if (chrome.windows && chrome.windows.onRemoved) { + const onClosed = (closedId) => { + if (win && closedId === win.id && !settled) { + chrome.windows.onRemoved.removeListener(onClosed) + chrome.runtime.onMessage.removeListener(listener) + resolve(false) + } + } + chrome.windows.onRemoved.addListener(onClosed) + } + }, + ) + }) +} + +/** + * Build the orchestrator bound to the worker's api + vault modules. + * + * @param {object} deps { api, vault } + * @param deps.api + * @param deps.vault + * @param deps.loadConfig + * @return {{ handleCreate: Function, handleGet: Function }} + */ +export function buildPasskeyOrchestrator({ api, vault, loadConfig }) { + async function handleCreate(options, origin) { + if (!vault.isUnlocked()) throw new Error('locked') + const rpId = (options.rp && options.rp.id) || new URL(origin).hostname + if (!(await requestConsent(rpId, 'create'))) throw new Error('declined') + + const { record, credential } = await createCredential(options, origin) // throws unsupported-algorithm → fall-through + const config = await loadConfig() + const typeId = await api.passkeyTypeId(config) + const encryptedKey = await vault.encryptField(serializePasskey(record)) + await api.createSecret(config, { + name: record.rpName || rpId, + url: rpId, + typeId, + key: encryptedKey, + encryptionSuiteId: vault.activeSuiteId(), + }) + return credential + } + + async function handleGet(options, origin) { + if (!vault.isUnlocked()) throw new Error('locked') + const rpId = options.rpId || new URL(origin).hostname + const config = await loadConfig() + + // Candidate passkeys for this RP (matched on the plaintext url index). + const rows = await api.match(config, rpId) + const allow = (options.allowCredentials || []).map((c) => + encodeAllowId(c.id), + ) + + let chosen = null + for (const row of rows) { + let record + try { + record = parsePasskey(await vault.decryptField(row.key)) + } catch { + continue + } + if (!record || record.rpId !== rpId) continue + if (allow.length && !allow.includes(record.credentialId)) continue + chosen = { row, record } + break + } + if (!chosen) throw new Error('no-credential') // fall-through to platform + + if (!(await requestConsent(rpId, 'get'))) throw new Error('declined') + + const { assertion, counter } = await getAssertion( + options, + origin, + chosen.record, + ) + + // Write back a non-zero (hardware-style) counter via the existing update path. + if (counter > 0 && counter !== chosen.record.counter) { + const updated = { ...chosen.record, counter } + const encryptedKey = await vault.encryptField(serializePasskey(updated)) + await api.updateSecret(config, chosen.row.id, { + name: chosen.row.name, + url: chosen.row.url, + typeId: chosen.row.typeId, + key: encryptedKey, + encryptionSuiteId: vault.activeSuiteId(), + }) + } + return assertion + } + + return { handleCreate, handleGet } +} + +// allowCredentials ids arrive as base64url strings or byte arrays; normalise to +// the base64url form the stored record uses. +function encodeAllowId(id) { + if (typeof id === 'string') return id + const bytes = Array.isArray(id) ? Uint8Array.from(id) : new Uint8Array(id) + let s = '' + for (const b of bytes) s += String.fromCharCode(b) + return btoa(s).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '') +} diff --git a/browser-extension/src/passkey/registration.js b/browser-extension/src/passkey/registration.js new file mode 100644 index 000000000..1fee5e752 --- /dev/null +++ b/browser-extension/src/passkey/registration.js @@ -0,0 +1,91 @@ +/** + * Browser-adaptive WebAuthn provider registration (extension-passkey-provider + * §1). Where the browser exposes the native proxy API (`chrome.webAuthentication + * Proxy`, Chrome/Edge) we register through it; otherwise the page-context shim + * (`inpage-shim.js`) + content-script relay drives the same orchestrator + * (Firefox and others). This module wires ONLY the native proxy; it is a no-op + * when the API is absent. + * + * On any orchestrator error (declined / no-credential / unsupported / locked) + * the request is completed with a DOM error so the browser falls through to the + * platform authenticator rather than hanging the page ceremony. + */ + +function fallThroughError(message) { + // NotAllowedError makes the RP fall back to another authenticator. + return { name: 'NotAllowedError', message: 'Doriath: ' + message } +} + +/** + * @param {{ handleCreate: Function, handleGet: Function }} orchestrator + * @return {void} + */ +export function registerWebAuthnProxy(orchestrator) { + const proxy = + typeof chrome !== 'undefined' ? chrome.webAuthenticationProxy : undefined + if (!proxy || !proxy.onCreateRequest) { + return // no native proxy — the page-context shim path handles it + } + + try { + proxy.attach(() => {}) + } catch { + // attach may reject if another provider is active; the shim still works. + } + + proxy.onCreateRequest.addListener(async (details) => { + try { + const options = + JSON.parse(details.requestDetailsJson).publicKey + || JSON.parse(details.requestDetailsJson) + const credential = await orchestrator.handleCreate( + options, + originOf(details), + ) + proxy.completeCreateRequest({ + requestId: details.requestId, + responseJson: JSON.stringify(credential), + }) + } catch (e) { + proxy.completeCreateRequest({ + requestId: details.requestId, + error: fallThroughError(e.message || String(e)), + }) + } + }) + + proxy.onGetRequest.addListener(async (details) => { + try { + const options = + JSON.parse(details.requestDetailsJson).publicKey + || JSON.parse(details.requestDetailsJson) + const assertion = await orchestrator.handleGet( + options, + originOf(details), + ) + proxy.completeGetRequest({ + requestId: details.requestId, + responseJson: JSON.stringify(assertion), + }) + } catch (e) { + proxy.completeGetRequest({ + requestId: details.requestId, + error: fallThroughError(e.message || String(e)), + }) + } + }) +} + +function originOf(details) { + // The proxy provides the requesting frame's origin on newer builds; fall back + // to the rp id embedded in the request when absent. + if (details.origin) return details.origin + try { + const rp = JSON.parse(details.requestDetailsJson) + const rpId = + rp.publicKey?.rp?.id || rp.publicKey?.rpId || rp.rp?.id || rp.rpId + return rpId ? 'https://' + rpId : '' + } catch { + return '' + } +} diff --git a/browser-extension/src/passkey/vault-passkey.js b/browser-extension/src/passkey/vault-passkey.js new file mode 100644 index 000000000..ea38d2449 --- /dev/null +++ b/browser-extension/src/passkey/vault-passkey.js @@ -0,0 +1,14 @@ +/** + * Passkey vault serialization for the extension — the SAME canonical schema + * `passkey-item-type` defined, re-exported verbatim (extension-passkey-provider + * §"consumes the passkey canonical schema"). A created passkey is written as a + * `passkey`-typed secret with this JSON in the encrypted `key` and the RP id in + * the plaintext `url`; there is no new create path. + */ +export { + buildPasskeyCredential, + serializePasskey, + parsePasskey, + passkeyRpId, + PASSKEY_TYPE_NAME, +} from '../../../src/passkey/passkey.js' diff --git a/browser-extension/src/passkey/webauthn.js b/browser-extension/src/passkey/webauthn.js new file mode 100644 index 000000000..0bb7157c6 --- /dev/null +++ b/browser-extension/src/passkey/webauthn.js @@ -0,0 +1,260 @@ +/** + * WebAuthn ceremony — the extension acting as a credential provider + * (extension-passkey-provider). All signing happens client-side in the service + * worker with the decrypted passkey private key; the server never sees the key, + * the challenge, or the assertion (ADR-003). + * + * v1 supports ES256 (COSE alg -7, ECDSA P-256) — the WebAuthn default and the + * only algorithm most relying parties require. Attestation is `none`. + * + * These functions are PURE ceremony logic: they take/return key material as PEM + * strings and structured results. The service worker owns decrypt/encrypt and + * the vault read/write. + */ + +import { cborEncode, rawEcdsaToDer } from './cbor.js' + +const ES256 = -7 +const AAGUID = new Uint8Array(16) // all-zero: a software authenticator + +// --- byte helpers --- + +function b64urlEncode(bytes) { + let s = '' + for (const b of bytes) s += String.fromCharCode(b) + return btoa(s).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '') +} + +function b64urlDecode(str) { + const pad = str.length % 4 === 0 ? '' : '='.repeat(4 - (str.length % 4)) + const b64 = str.replace(/-/g, '+').replace(/_/g, '/') + pad + return Uint8Array.from(atob(b64), (c) => c.charCodeAt(0)) +} + +function toBytes(value) { + if (value instanceof Uint8Array) return value + if (value instanceof ArrayBuffer) return new Uint8Array(value) + if (Array.isArray(value)) return Uint8Array.from(value) + if (typeof value === 'string') return b64urlDecode(value) + return new Uint8Array(0) +} + +function concat(chunks) { + let len = 0 + for (const c of chunks) len += c.length + const out = new Uint8Array(len) + let off = 0 + for (const c of chunks) { + out.set(c, off) + off += c.length + } + return out +} + +async function sha256(bytes) { + return new Uint8Array(await crypto.subtle.digest('SHA-256', bytes)) +} + +function pemFrom(b64, label) { + return `-----BEGIN ${label}-----\n${b64.match(/.{1,64}/g).join('\n')}\n-----END ${label}-----\n` +} +function b64(buf) { + let s = '' + for (const b of new Uint8Array(buf)) s += String.fromCharCode(b) + return btoa(s) +} + +// --- authenticator data --- + +function u32be(n) { + return Uint8Array.of( + (n >>> 24) & 0xff, + (n >>> 16) & 0xff, + (n >>> 8) & 0xff, + n & 0xff, + ) +} + +/** + * COSE EC2 public key (alg ES256, P-256) from a raw 65-byte uncompressed point. + * @param raw + */ +function coseKeyFromRawPoint(raw) { + // raw = 0x04 ‖ x(32) ‖ y(32) + const x = raw.slice(1, 33) + const y = raw.slice(33, 65) + const m = new Map() + m.set(1, 2) // kty: EC2 + m.set(3, ES256) // alg + m.set(-1, 1) // crv: P-256 + m.set(-2, x) + m.set(-3, y) + return cborEncode(m) +} + +async function buildAuthData(rpId, flags, counter, attestedCredentialData) { + const rpIdHash = await sha256(new TextEncoder().encode(rpId)) + const parts = [rpIdHash, Uint8Array.of(flags), u32be(counter)] + if (attestedCredentialData) parts.push(attestedCredentialData) + return concat(parts) +} + +const FLAG_UP = 0x01 +const FLAG_UV = 0x04 +const FLAG_AT = 0x40 + +/** + * create(): register a new ES256 passkey. Returns the record to save in the + * vault and the PublicKeyCredential to return to the page. + * + * @param {object} options The `publicKey` of navigator.credentials.create + * @param {string} origin The page origin + * @return {Promise<{ record: object, credential: object }>} + */ +export async function createCredential(options, origin) { + const rpId = (options.rp && options.rp.id) || new URL(origin).hostname + const params = options.pubKeyCredParams || [] + if (params.length && !params.some((p) => p.alg === ES256)) { + throw new Error('unsupported-algorithm') // caller falls through to platform + } + + const keyPair = await crypto.subtle.generateKey( + { name: 'ECDSA', namedCurve: 'P-256' }, + true, + ['sign', 'verify'], + ) + const rawPoint = new Uint8Array( + await crypto.subtle.exportKey('raw', keyPair.publicKey), + ) + const pkcs8 = new Uint8Array( + await crypto.subtle.exportKey('pkcs8', keyPair.privateKey), + ) + const privateKeyPem = pemFrom(b64(pkcs8), 'PRIVATE KEY') + + const credentialId = crypto.getRandomValues(new Uint8Array(16)) + + const clientData = { + type: 'webauthn.create', + challenge: b64urlEncode(toBytes(options.challenge)), + origin, + crossOrigin: false, + } + const clientDataJSON = new TextEncoder().encode(JSON.stringify(clientData)) + + const cosePub = coseKeyFromRawPoint(rawPoint) + const attestedCredentialData = concat([ + AAGUID, + Uint8Array.of((credentialId.length >> 8) & 0xff, credentialId.length & 0xff), + credentialId, + cosePub, + ]) + const authData = await buildAuthData( + rpId, + FLAG_UP | FLAG_UV | FLAG_AT, + 0, + attestedCredentialData, + ) + + const attObj = new Map() + attObj.set('fmt', 'none') + attObj.set('attStmt', new Map()) + attObj.set('authData', authData) + const attestationObject = cborEncode(attObj) + + const record = { + credentialId: b64urlEncode(credentialId), + rpId, + rpName: (options.rp && options.rp.name) || rpId, + userName: (options.user && options.user.name) || '', + userDisplayName: (options.user && options.user.displayName) || '', + userHandle: options.user ? b64urlEncode(toBytes(options.user.id)) : '', + privateKey: privateKeyPem, + algorithm: ES256, + counter: 0, + } + const credential = { + id: record.credentialId, + rawId: Array.from(credentialId), + type: 'public-key', + response: { + clientDataJSON: Array.from(clientDataJSON), + attestationObject: Array.from(attestationObject), + }, + } + return { record, credential } +} + +/** + * get(): assert with a stored passkey. Signs client-side and returns the + * assertion plus the counter to persist (unchanged when the stored counter is 0, + * the synced-credential convention). + * + * @param {object} options The `publicKey` of navigator.credentials.get + * @param {string} origin The page origin + * @param {object} stored The stored passkey ({ credentialId, rpId, privateKey (PEM), counter, userHandle }) + * @return {Promise<{ assertion: object, counter: number }>} + */ +export async function getAssertion(options, origin, stored) { + const rpId = options.rpId || new URL(origin).hostname + const clientData = { + type: 'webauthn.get', + challenge: b64urlEncode(toBytes(options.challenge)), + origin, + crossOrigin: false, + } + const clientDataJSON = new TextEncoder().encode(JSON.stringify(clientData)) + const clientDataHash = await sha256(clientDataJSON) + + // Synced (counter 0) credentials keep 0; hardware-style counters increment. + const nextCounter = stored.counter > 0 ? stored.counter + 1 : 0 + const authData = await buildAuthData(rpId, FLAG_UP | FLAG_UV, nextCounter, null) + + const privateKey = await crypto.subtle.importKey( + 'pkcs8', + pemToPkcs8(stored.privateKey), + { name: 'ECDSA', namedCurve: 'P-256' }, + false, + ['sign'], + ) + const signed = new Uint8Array( + await crypto.subtle.sign( + { name: 'ECDSA', hash: 'SHA-256' }, + privateKey, + concat([authData, clientDataHash]), + ), + ) + const signature = rawEcdsaToDer(signed) + + const credIdBytes = b64urlDecode(stored.credentialId) + const assertion = { + id: stored.credentialId, + rawId: Array.from(credIdBytes), + type: 'public-key', + response: { + clientDataJSON: Array.from(clientDataJSON), + authenticatorData: Array.from(authData), + signature: Array.from(signature), + userHandle: stored.userHandle + ? Array.from(b64urlDecode(stored.userHandle)) + : null, + }, + } + return { assertion, counter: nextCounter } +} + +function pemToPkcs8(pem) { + const b64body = pem + .replace(/-----BEGIN [^-]+-----/, '') + .replace(/-----END [^-]+-----/, '') + .replace(/\s+/g, '') + return Uint8Array.from(atob(b64body), (c) => c.charCodeAt(0)) +} + +export const _internals = { + b64urlEncode, + b64urlDecode, + coseKeyFromRawPoint, + buildAuthData, + sha256, + pemToPkcs8, +} diff --git a/browser-extension/src/popup/popup.css b/browser-extension/src/popup/popup.css new file mode 100644 index 000000000..0225689de --- /dev/null +++ b/browser-extension/src/popup/popup.css @@ -0,0 +1,155 @@ +:root { + --cobalt: #21468b; + --fg: #1a1a1a; + --muted: #6b7280; + --border: #d1d5db; + --error: #b00020; + --bg: #ffffff; +} + +* { + box-sizing: border-box; +} + +body { + margin: 0; + font-family: + system-ui, + -apple-system, + 'Segoe UI', + sans-serif; + color: var(--fg); + background: var(--bg); + width: 340px; +} + +.doriath-popup { + padding: 16px; +} + +h1 { + font-size: 16px; + margin: 0 0 12px; + color: var(--cobalt); +} + +label { + display: block; + font-size: 13px; + margin-bottom: 10px; +} + +input { + display: block; + width: 100%; + margin-top: 4px; + padding: 8px; + border: 1px solid var(--border); + border-radius: 6px; + font-size: 14px; +} + +button.primary { + width: 100%; + padding: 9px; + margin-top: 8px; + background: var(--cobalt); + color: #fff; + border: 0; + border-radius: 6px; + font-size: 14px; + cursor: pointer; +} + +button.link { + background: none; + border: 0; + color: var(--cobalt); + cursor: pointer; + font-size: 13px; + padding: 6px 0; +} + +.hint { + font-size: 12px; + color: var(--muted); + margin: 8px 0; +} + +.error { + color: var(--error); + font-size: 13px; + margin-top: 8px; +} + +.row { + display: flex; + justify-content: space-between; + align-items: center; +} + +.host { + font-weight: 600; + font-size: 14px; +} + +.candidates { + list-style: none; + margin: 12px 0; + padding: 0; +} + +.candidate-fill { + display: block; + width: 100%; + text-align: left; + padding: 10px; + margin-bottom: 6px; + border: 1px solid var(--border); + border-radius: 6px; + background: #fff; + cursor: pointer; + font-size: 14px; +} +.candidate-fill:hover { + border-color: var(--cobalt); +} + +.totp { + display: flex; + gap: 10px; + align-items: baseline; + margin: 10px 0; +} +.totp-code { + font-family: monospace; + font-size: 22px; + letter-spacing: 2px; +} +.totp-count { + color: var(--muted); + font-size: 13px; +} + +.save-prompt { + margin-top: 14px; + padding: 10px; + border: 1px solid var(--border); + border-radius: 6px; + background: #f9fafb; +} + +@media (prefers-color-scheme: dark) { + :root { + --fg: #e5e7eb; + --bg: #1f2937; + --border: #374151; + --muted: #9ca3af; + } + .candidate-fill { + background: #111827; + } + .save-prompt { + background: #111827; + } +} diff --git a/browser-extension/src/popup/popup.html b/browser-extension/src/popup/popup.html new file mode 100644 index 000000000..a1657fe51 --- /dev/null +++ b/browser-extension/src/popup/popup.html @@ -0,0 +1,52 @@ + + + + + + Doriath + + + +
+ + + + + + + + +
+ + + diff --git a/browser-extension/src/popup/popup.js b/browser-extension/src/popup/popup.js new file mode 100644 index 000000000..d7cc67d3e --- /dev/null +++ b/browser-extension/src/popup/popup.js @@ -0,0 +1,204 @@ +/** + * Popup UI — an untrusted view over the background worker. It never holds key + * material; it renders state and relays user intent (pair / unlock / fill / + * save / lock) as messages. All decryption happens in the worker. + */ + +function send(type, payload) { + return new Promise((resolve) => { + chrome.runtime.sendMessage({ type, payload }, (res) => resolve(res || {})) + }) +} + +function $(id) { + return document.getElementById(id) +} + +function show(view) { + for (const id of ['view-pair', 'view-locked', 'view-unlocked']) { + $(id).hidden = id !== view + } +} + +function showError(id, message) { + const el = $(id) + if (!message) { + el.hidden = true + return + } + el.textContent = message + el.hidden = false +} + +async function activeHost() { + const [tab] = await chrome.tabs.query({ active: true, currentWindow: true }) + try { + return tab ? new URL(tab.url).hostname : '' + } catch { + return '' + } +} + +async function renderUnlocked() { + const host = await activeHost() + $('active-host').textContent = host + const candidates = await send('match', { host }) + const list = $('candidates') + list.innerHTML = '' + if (!Array.isArray(candidates) || candidates.length === 0) { + $('no-candidates').hidden = false + } else { + $('no-candidates').hidden = true + for (const c of candidates) { + const li = document.createElement('li') + li.className = 'candidate' + const btn = document.createElement('button') + btn.className = 'candidate-fill' + btn.textContent = c.name + (c.url ? ' — ' + c.url : '') + btn.addEventListener('click', async () => { + const res = await send('fill', { id: c.id }) + if (res.error) { + showError('unlock-error', res.error) + return + } + // Auto-copy a matched TOTP code so it is one paste away, then + // clear it after a short delay (extension-totp-autofill §3). + if (res.totpCode) { + await copyWithAutoClear(res.totpCode) + } + window.close() + }) + li.appendChild(btn) + list.appendChild(li) + } + } + + await renderTotp(host) + + // Surface any pending submit-capture as a save prompt. + const { capture } = await send('pending-capture') + if (capture) { + $('save-prompt').hidden = false + $('save-text').textContent = `Save login for ${capture.host}?` + $('save-yes').onclick = async () => { + const res = await send('save-capture', capture) + if (res.error) showError('unlock-error', res.error) + $('save-prompt').hidden = true + } + $('save-no').onclick = () => { + $('save-prompt').hidden = true + } + } +} + +// Clipboard TTL for a copied TOTP code (ms). +const TOTP_CLIPBOARD_TTL = 30000 +let totpTimer = null + +/** + * Render the current TOTP code + live countdown for a matched login, or the + * honest invalid-seed state — never a fabricated code (extension-totp-autofill + * §2.2/§2.3). + * + * @param {string} host + * @return {Promise} + */ +async function renderTotp(host) { + if (totpTimer) { + clearInterval(totpTimer) + totpTimer = null + } + const block = $('totp-block') + const res = await send('totp-for-host', { host }) + if (res.none || (!res.valid && res.code === undefined && !res.error)) { + block.hidden = true + return + } + block.hidden = false + if (!res.valid) { + $('totp-code').textContent = '—' + $('totp-count').textContent = 'not a valid authenticator secret' + return + } + let remaining = res.secondsRemaining + $('totp-code').textContent = res.code + $('totp-count').textContent = remaining + 's' + totpTimer = setInterval(async () => { + remaining -= 1 + if (remaining <= 0) { + // Window rolled over — recompute the code. + const next = await send('totp-for-host', { host }) + if (next.valid) { + $('totp-code').textContent = next.code + remaining = next.secondsRemaining + } + } + $('totp-count').textContent = Math.max(remaining, 0) + 's' + }, 1000) +} + +/** + * Copy a code to the clipboard and clear it after the TTL (no later than the + * code window would expire). + * + * @param {string} code + * @return {Promise} + */ +async function copyWithAutoClear(code) { + try { + await navigator.clipboard.writeText(code) + setTimeout(() => { + navigator.clipboard.writeText('').catch(() => {}) + }, TOTP_CLIPBOARD_TTL) + } catch { + // Clipboard may be unavailable (no focus); the code is still shown. + } +} + +async function refresh() { + const state = await send('get-state') + if (!state.paired) { + show('view-pair') + } else if (!state.unlocked) { + show('view-locked') + } else { + show('view-unlocked') + await renderUnlocked() + } +} + +function wire() { + $('pair-submit').addEventListener('click', async () => { + showError('pair-error', '') + const res = await send('pair', { + url: $('pair-url').value.trim(), + user: $('pair-user').value.trim(), + appPassword: $('pair-app-password').value, + }) + if (res.error) showError('pair-error', res.error) + else await refresh() + }) + + $('unlock-submit').addEventListener('click', async () => { + showError('unlock-error', '') + const res = await send('unlock', { + masterPassword: $('unlock-master').value, + }) + $('unlock-master').value = '' + if (res.error) showError('unlock-error', res.error) + else await refresh() + }) + + $('unlock-unpair').addEventListener('click', async () => { + await send('unpair') + await refresh() + }) + + $('lock-btn').addEventListener('click', async () => { + await send('lock') + await refresh() + }) +} + +wire() +refresh() diff --git a/browser-extension/src/totp/index.js b/browser-extension/src/totp/index.js new file mode 100644 index 000000000..487f0a95d --- /dev/null +++ b/browser-extension/src/totp/index.js @@ -0,0 +1,13 @@ +/** + * TOTP for the extension — the SAME RFC 6238 implementation the web UI uses, + * re-exported verbatim (ADR-003 dual-implementation invariant, extension-totp- + * autofill §1.1). No re-implementation: the seed parser and code generator are + * imported from the web app's `src/totp/totp.js`. + */ +export { + parseOtpauth, + generateTotp, + secondsRemaining, + base32Decode, + TOTP_DEFAULTS, +} from '../../../src/totp/totp.js' diff --git a/cli/README.md b/cli/README.md new file mode 100644 index 000000000..73657e0b4 --- /dev/null +++ b/cli/README.md @@ -0,0 +1,114 @@ +# doriath-cli + +A single static binary, stdlib-only Go client for [Doriath](../), the +zero-knowledge Nextcloud secrets manager. It talks to the **same** server +surfaces the browser app and the openconnector machine consumer already use — +nothing new server-side — and does **all** decryption client-side, so no +plaintext key material ever reaches the server (ADR-003). + +`v1 is READ-ONLY.` There is no create/edit/update/delete command: a write in +Doriath's model requires re-wrapping the value under every recipient's public +key (the share fan-out), a separate and larger surface deferred to a follow-up. + +## Install + +Download the binary for your platform from the release page and drop it on your +`PATH`. It needs no PHP, no Node, no runtime — a clean image runs `doriath +--version` out of the box. Cross-compiled targets: `linux`, `darwin`, `windows` +on `amd64` and `arm64`. + +Build from source: + +```sh +cd cli +go build -o doriath . +``` + +Shell completion: + +```sh +doriath completion bash > /etc/bash_completion.d/doriath +doriath completion zsh > "${fpath[1]}/_doriath" +doriath completion fish > ~/.config/fish/completions/doriath.fish +``` + +## Human mode + +Interactive use. Authenticates with a Nextcloud **app-password** (never your +login password) and unlocks by deriving the master-password key and unwrapping +the EncryptionSuite private key **in this process**. + +```sh +doriath login --url https://cloud.example.org --user alice # stores URL + app-password (0600) +doriath list # metadata only +doriath show # reveal all fields +doriath get key # print one field +doriath copy key --clear-after 30 # to clipboard, auto-clear +``` + +The master password is prompted per invocation (no echo where a TTY is +available) and **never leaves the process**: it is used only to derive the AES +unlock key locally. A wrong master password, or a private key that does not +match the suite certificate, fails fast with a mismatch error before any secret +is touched. + +> **Never run `doriath` human-mode unlock on a shared or untrusted host.** The +> derived key lives in this process's memory while it runs; a host you do not +> control can read that memory. Use CI mode with a scoped application key there +> instead. + +### Custody + +- The **app-password** is stored in `~/.config/doriath/config.json`, mode `0600`. + An OS-keyring backend is a planned hardening follow-up (it needs cgo/dbus and + would break the pure-static single-binary build). +- The **master password** and the derived unlock key are **never** written to + disk and never sent in any request — human mode holds them in memory only, for + the duration of a single command. + +## CI mode + +Non-interactive machine use. An RFC 7523 consumer that holds the **application +private key** — a credential Doriath never stores. It self-configures from the +instance discovery document alone. + +```sh +export DORIATH_URL=https://cloud.example.org +export DORIATH_APP_ID=my-pipeline +export DORIATH_APP_KEY_FILE=/run/secrets/doriath-app.pem # or DORIATH_APP_KEY= + +doriath ci fetch DB_PASSWORD --output json # {"name":...,"value":...} +doriath ci fetch DB_PASSWORD --output env # export DORIATH_DB_PASSWORD='…' +doriath ci run DB_PASSWORD,API_TOKEN -- ./migrate.sh # injected into the child env only +``` + +`ci run` injects the fetched secrets into the child process environment **only** +— nothing is written to disk and the parent environment is untouched. The +`--output env` form prints an `export` line and warns on stderr that exporting a +secret into the shell environment exposes it to sibling child processes. + +### Leases + +When the instance advertises lease support via discovery, CI fetches carry +`Doriath-Lease-*` headers; the client surfaces the lease id and expiry on +stderr. Against a lease-unaware instance the fetch still succeeds and simply +omits lease reporting. + +## Crypto parity + +The `internal/crypto` package reimplements the browser recipe **byte-for-byte**: + +- **Private-key blob** (human unlock): base64 of `[4B version][16B salt][12B + IV][ciphertext+16B GCM tag]`. The unlock key is + `PBKDF2-HMAC-SHA256(masterPassword, salt, 600000)` → AES-256-GCM. +- **Secret fields** (`rsa-oaep-sha256-chunked-v1`): base64 of `[4B chunk count + BE][512B RSA-OAEP-SHA256 blocks…]`, each block decrypted with the suite's + RSA-4096 private key and concatenated. + +PBKDF2 is implemented in-house over `crypto/hmac` (RFC 8018) so the CLI has zero +external dependencies. Byte-parity is pinned by the RFC 6070 test vectors in +`internal/crypto/crypto_test.go`. + +```sh +go test ./... +``` diff --git a/cli/ci.go b/cli/ci.go new file mode 100644 index 000000000..6067ca4da --- /dev/null +++ b/cli/ci.go @@ -0,0 +1,143 @@ +package main + +import ( + "encoding/json" + "fmt" + "os" + "strings" + "time" + + "crypto/rsa" + "github.com/ConductionNL/doriath/cli/internal/client" + + dcrypto "github.com/ConductionNL/doriath/cli/internal/crypto" +) + +// ciSetup loads the CI-mode inputs: the instance URL (DORIATH_URL), the +// application id (DORIATH_APP_ID), and the application private key — supplied by +// env (DORIATH_APP_KEY, a PEM) or file (DORIATH_APP_KEY_FILE), the operator's own +// credential Doriath never stores (§4.1). It self-configures from discovery and +// exchanges an RFC 7523 assertion for a bearer token. +func ciSetup() (c *client.Client, key *rsa.PrivateKey, disc *client.Discovery, bearer, appID string, err error) { + url := os.Getenv("DORIATH_URL") + appID = os.Getenv("DORIATH_APP_ID") + if url == "" || appID == "" { + return nil, nil, nil, "", "", fmt.Errorf("set DORIATH_URL and DORIATH_APP_ID") + } + + pemStr := os.Getenv("DORIATH_APP_KEY") + if pemStr == "" { + if f := os.Getenv("DORIATH_APP_KEY_FILE"); f != "" { + data, rerr := os.ReadFile(f) + if rerr != nil { + return nil, nil, nil, "", "", rerr + } + pemStr = string(data) + } + } + if pemStr == "" { + return nil, nil, nil, "", "", fmt.Errorf("set DORIATH_APP_KEY (PEM) or DORIATH_APP_KEY_FILE") + } + pk, perr := dcrypto.ParsePrivateKey(pemStr) + if perr != nil { + return nil, nil, nil, "", "", perr + } + + c = client.New(url) + disc, err = c.Discover() + if err != nil { + return nil, nil, nil, "", "", err + } + bearer, err = c.MachineToken(appID, pk, disc, time.Now().Unix()) + if err != nil { + return nil, nil, nil, "", "", err + } + return c, pk, disc, bearer, appID, nil +} + +// fetchDecrypt fetches an application secret by name and decrypts its envelope +// with the application private key (§4.2). Returns the plaintext value. +func fetchDecrypt(c *client.Client, key *rsa.PrivateKey, name, bearer string) (string, error) { + env, err := c.FetchByName(name, bearer) + if err != nil { + return "", err + } + if env.Scheme != "rsa-oaep-sha256-chunked-v1" { + return "", fmt.Errorf("unexpected envelope scheme %q", env.Scheme) + } + return dcrypto.DecryptField(env.Payload.Value, key) +} + +func cmdCIFetch(args []string) error { + output, args := popFlag(args, "--output") + if len(args) < 1 { + return fmt.Errorf("usage: doriath ci fetch [--output env|json]") + } + c, key, _, bearer, _, err := ciSetup() + if err != nil { + return err + } + value, err := fetchDecrypt(c, key, args[0], bearer) + if err != nil { + return err + } + if lease := c.LeaseID(); lease != "" { + fmt.Fprintf(os.Stderr, "lease %s expires %s\n", lease, c.LeaseExpires()) + } + switch output { + case "json": + return json.NewEncoder(os.Stdout).Encode(map[string]string{"name": args[0], "value": value}) + default: // env + fmt.Fprintln(os.Stderr, "# WARNING: exporting a secret into the shell environment exposes it to child processes") + fmt.Printf("export %s=%s\n", envName(args[0]), shellQuote(value)) + } + return nil +} + +func cmdCIRun(args []string) error { + // Split at the "--" separator: names before, command after. + sep := -1 + for i, a := range args { + if a == "--" { + sep = i + break + } + } + if sep < 1 || sep+1 >= len(args) { + return fmt.Errorf("usage: doriath ci run [,...] -- ") + } + names := strings.Split(args[0], ",") + cmd := args[sep+1:] + + c, key, _, bearer, _, err := ciSetup() + if err != nil { + return err + } + var env []string + for _, name := range names { + value, ferr := fetchDecrypt(c, key, strings.TrimSpace(name), bearer) + if ferr != nil { + return ferr + } + env = append(env, envName(name)+"="+value) + } + // Inject into the child environment ONLY — no plaintext to disk (§4.3). + return runChild(env, cmd) +} + +func envName(secretName string) string { + up := strings.ToUpper(secretName) + var b strings.Builder + for _, r := range up { + if (r >= 'A' && r <= 'Z') || (r >= '0' && r <= '9') { + b.WriteRune(r) + } else { + b.WriteRune('_') + } + } + return "DORIATH_" + b.String() +} + +func shellQuote(v string) string { + return "'" + strings.ReplaceAll(v, "'", `'\''`) + "'" +} diff --git a/cli/clipboard.go b/cli/clipboard.go new file mode 100644 index 000000000..5f8829ec7 --- /dev/null +++ b/cli/clipboard.go @@ -0,0 +1,79 @@ +package main + +import ( + "fmt" + "os" + "os/exec" + "strconv" + "strings" + "time" +) + +// clipboardTools are the platform copy commands tried in order: macOS, Windows +// (native + WSL bridge), Wayland, X11. First one on PATH wins. +var clipboardTools = [][]string{ + {"pbcopy"}, + {"clip.exe"}, + {"clip"}, + {"wl-copy"}, + {"xclip", "-selection", "clipboard"}, + {"xsel", "--clipboard", "--input"}, +} + +func writeClipboard(value string) ([]string, error) { + for _, tool := range clipboardTools { + if _, err := exec.LookPath(tool[0]); err != nil { + continue + } + cmd := exec.Command(tool[0], tool[1:]...) + cmd.Stdin = strings.NewReader(value) + if err := cmd.Run(); err != nil { + return nil, err + } + return tool, nil + } + return nil, fmt.Errorf("no clipboard tool found (tried pbcopy/clip/wl-copy/xclip/xsel)") +} + +func cmdCopy(args []string) error { + clearAfter, args := popFlag(args, "--clear-after") + if len(args) < 2 { + return fmt.Errorf("usage: doriath copy [--clear-after ]") + } + seconds := 30 + if clearAfter != "" { + if n, err := strconv.Atoi(clearAfter); err == nil && n > 0 { + seconds = n + } + } + + c, session, err := openHumanSession(promptSecret("Master password: ")) + if err != nil { + return err + } + s, err := c.GetSecret(args[0]) + if err != nil { + return err + } + fields := decryptSecret(s, session) + v, ok := fields[args[1]] + if !ok { + return fmt.Errorf("no such field %q (have: name, url, key, login)", args[1]) + } + + tool, err := writeClipboard(v) + if err != nil { + return err + } + fmt.Fprintf(os.Stderr, "Copied %s to clipboard via %s — clearing in %ds.\n", args[1], tool[0], seconds) + + // Block for the interval, then overwrite the clipboard so the secret does + // not linger (§3.4). Only clear if the clipboard still holds our value would + // require a read-back tool; we unconditionally clear, which is the safe default. + time.Sleep(time.Duration(seconds) * time.Second) + if _, err := writeClipboard(""); err != nil { + return fmt.Errorf("clipboard cleared failed: %w", err) + } + fmt.Fprintln(os.Stderr, "Clipboard cleared.") + return nil +} diff --git a/cli/config.go b/cli/config.go new file mode 100644 index 000000000..24c861080 --- /dev/null +++ b/cli/config.go @@ -0,0 +1,76 @@ +package main + +import ( + "encoding/json" + "fmt" + "os" + "path/filepath" +) + +// config is the human-mode session config: the instance URL, Nextcloud user, +// and an APP-PASSWORD (never the login password, §3.1). Stored 0600 in the +// user's config dir. Note: the design mandates the OS keyring; a keyring +// backend is a documented hardening follow-up (it needs cgo/dbus and would +// break the pure-static single-binary build). The master-password-derived key +// is NEVER written here — it lives in-process only. +type config struct { + URL string `json:"url"` + User string `json:"user"` + AppPassword string `json:"appPassword"` +} + +func configPath() (string, error) { + dir, err := os.UserConfigDir() + if err != nil { + return "", err + } + return filepath.Join(dir, "doriath", "config.json"), nil +} + +func loadConfig() (*config, error) { + path, err := configPath() + if err != nil { + return nil, err + } + data, err := os.ReadFile(path) + if err != nil { + return nil, err + } + var c config + if err := json.Unmarshal(data, &c); err != nil { + return nil, err + } + if c.URL == "" || c.User == "" { + return nil, fmt.Errorf("incomplete config at %s", path) + } + return &c, nil +} + +func saveConfig(c *config) error { + path, err := configPath() + if err != nil { + return err + } + if err := os.MkdirAll(filepath.Dir(path), 0o700); err != nil { + return err + } + data, _ := json.MarshalIndent(c, "", " ") + return os.WriteFile(path, data, 0o600) +} + +func cmdLogin(args []string) error { + url, args := popFlag(args, "--url") + user, _ := popFlag(args, "--user") + if url == "" || user == "" { + return fmt.Errorf("usage: doriath login --url --user ") + } + appPassword := promptSecret("Nextcloud app-password (NOT your login password): ") + if appPassword == "" { + return fmt.Errorf("an app-password is required") + } + if err := saveConfig(&config{URL: url, User: user, AppPassword: appPassword}); err != nil { + return err + } + fmt.Fprintf(os.Stderr, "Logged in to %s as %s (app-password stored).\n", url, user) + return nil +} diff --git a/cli/go.mod b/cli/go.mod new file mode 100644 index 000000000..0d9f2acfe --- /dev/null +++ b/cli/go.mod @@ -0,0 +1,3 @@ +module github.com/ConductionNL/doriath/cli + +go 1.22 diff --git a/cli/internal/client/client.go b/cli/internal/client/client.go new file mode 100644 index 000000000..f1831e7ff --- /dev/null +++ b/cli/internal/client/client.go @@ -0,0 +1,273 @@ +// Package client is Doriath's shared HTTP client (doriath-cli §1.2) for both +// the human session API (Nextcloud app-password auth) and the CI machine +// secret-store API (RFC 7523 JWT bearer). It never transmits the master +// password or any derived key — those stay in the CLI process (§3.2). +package client + +import ( + "bytes" + "crypto/rsa" + "encoding/base64" + "encoding/json" + "errors" + "fmt" + "io" + "net/http" + "net/url" + "strings" + "time" + + dcrypto "github.com/ConductionNL/doriath/cli/internal/crypto" +) + +// ErrNotModified is returned by a conditional fetch when the server answers 304 +// (the secret is unchanged since the last observed ETag) — the caller keeps its +// cached value (§4.2, poll loops). +var ErrNotModified = errors.New("not modified") + +// Client talks to one Doriath instance. +type Client struct { + BaseURL string + HTTP *http.Client + appUser string // Nextcloud user (human mode) + appPass string // Nextcloud app-password (human mode) + leaseID string // last observed machine lease id (§4.4) + leaseUntil string // last observed lease expiry + lastETag string // last observed secret ETag (§4.2, conditional re-fetch) +} + +// New builds a client with sane timeouts. +func New(baseURL string) *Client { + return &Client{ + BaseURL: strings.TrimRight(baseURL, "/"), + HTTP: &http.Client{Timeout: 30 * time.Second}, + } +} + +// WithAppPassword sets the human-mode Nextcloud credentials (an app-password, +// never the login password, §3.1). +func (c *Client) WithAppPassword(user, appPassword string) { + c.appUser = user + c.appPass = appPassword +} + +// LeaseID / LeaseExpires expose the last machine lease headers (§4.4). +func (c *Client) LeaseID() string { return c.leaseID } +func (c *Client) LeaseExpires() string { return c.leaseUntil } + +// LastETag exposes the ETag of the last fetched secret (§4.2). +func (c *Client) LastETag() string { return c.lastETag } + +// Suite is the active EncryptionSuite blob the human unlock needs. +type Suite struct { + ID string `json:"id"` + Certificate string `json:"certificate"` + PrivateKey string `json:"privateKey"` + Status string `json:"status"` +} + +// Secret is one vault secret (ciphertext fields until decrypted locally). +type Secret struct { + ID string `json:"id"` + Name string `json:"name"` + URL string `json:"url"` + TypeID string `json:"typeId"` + FolderID string `json:"folderId"` + Key string `json:"key"` + Login string `json:"login"` + AdditionalFields string `json:"additionalFields"` +} + +// ActiveSuite fetches the caller's active suite (human mode). +func (c *Client) ActiveSuite() (*Suite, error) { + var suites []Suite + if err := c.getJSON("/apps/doriath/api/v1/suites", &suites); err != nil { + return nil, err + } + for i := range suites { + if suites[i].Status == "active" { + return &suites[i], nil + } + } + return nil, fmt.Errorf("no active encryption suite") +} + +// ListSecrets fetches the caller's secret list (metadata + ciphertext). +func (c *Client) ListSecrets() ([]Secret, error) { + var page struct { + Items []Secret `json:"items"` + } + if err := c.getJSON("/apps/doriath/api/v1/secrets?limit=100000", &page); err != nil { + return nil, err + } + return page.Items, nil +} + +// GetSecret fetches one secret by id (human mode). +func (c *Client) GetSecret(id string) (*Secret, error) { + var s Secret + if err := c.getJSON("/apps/doriath/api/v1/secrets/"+id, &s); err != nil { + return nil, err + } + return &s, nil +} + +// --- CI mode (RFC 7523 machine secret store) --- + +// Discovery is the machine-store discovery document (subset used by the CLI). +// The field names mirror the server's DiscoveryController.document() shape +// (camelCase, nested) so the CLI self-configures from discovery alone (§4.1). +type Discovery struct { + APIVersion int `json:"apiVersion"` + TokenEndpoint string `json:"tokenEndpoint"` + GrantType string `json:"grantType"` + Assertion struct { + Alg string `json:"alg"` + Audience string `json:"audience"` + } `json:"assertion"` + Secrets struct { + ByName string `json:"byName"` + } `json:"secrets"` + Lease struct { + Supported bool `json:"supported"` + } `json:"lease"` +} + +// Discover fetches and returns the machine-store discovery document. +func (c *Client) Discover() (*Discovery, error) { + var d Discovery + if err := c.getJSON("/apps/doriath/api/v1/app/.well-known/doriath", &d); err != nil { + return nil, err + } + return &d, nil +} + +// LeaseSupported reports whether the last discovery advertised lease support. +func (d *Discovery) LeaseSupported() bool { return d.Lease.Supported } + +// MachineToken signs an RFC 7523 JWT assertion with the application private key +// and exchanges it for an opaque bearer token (§4.1). The private key never +// leaves the process. +func (c *Client) MachineToken(applicationID string, key *rsa.PrivateKey, disc *Discovery, now int64) (string, error) { + aud := disc.Assertion.Audience + if aud == "" { + aud = "doriath" // EXPECTED_AUDIENCE fallback + } + header := base64.RawURLEncoding.EncodeToString([]byte(`{"alg":"RS256","typ":"JWT"}`)) + claims := map[string]any{ + "iss": applicationID, + "sub": applicationID, + "aud": aud, + "iat": now, + "exp": now + 300, + "jti": fmt.Sprintf("%s-%d", applicationID, now), + } + claimsJSON, _ := json.Marshal(claims) + payload := base64.RawURLEncoding.EncodeToString(claimsJSON) + signingInput := header + "." + payload + sig, err := dcrypto.SignRS256(signingInput, key) + if err != nil { + return "", err + } + assertion := signingInput + "." + sig + + // NB: Doriath's token endpoint reads camelCase param names (grantType), not + // the OAuth-standard snake_case — verified against the live server. + form := url.Values{ + "grantType": {"urn:ietf:params:oauth:grant-type:jwt-bearer"}, + "assertion": {assertion}, + }.Encode() + req, _ := http.NewRequest(http.MethodPost, c.abs(disc.TokenEndpoint), strings.NewReader(form)) + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + resp, err := c.HTTP.Do(req) + if err != nil { + return "", err + } + defer resp.Body.Close() + body, _ := io.ReadAll(resp.Body) + if resp.StatusCode != http.StatusOK { + return "", fmt.Errorf("token exchange failed (%d): %s", resp.StatusCode, strings.TrimSpace(string(body))) + } + var tok struct { + AccessToken string `json:"access_token"` + } + if err := json.Unmarshal(body, &tok); err != nil { + return "", err + } + return tok.AccessToken, nil +} + +// MachineEnvelope is the doriath-machine-secret-v1 envelope (CI fetch, §4.2). +type MachineEnvelope struct { + Format string `json:"format"` + Scheme string `json:"scheme"` + Payload struct { + Value string `json:"value"` + } `json:"payload"` +} + +// FetchByName fetches an application secret envelope by name with the bearer +// token, capturing any Doriath-Lease-* headers (§4.4). When the client has a +// prior ETag for this secret it sends If-None-Match; on a 304 it returns +// ErrNotModified so a poll loop can keep its cached value (§4.2). +func (c *Client) FetchByName(name, bearer string) (*MachineEnvelope, error) { + req, _ := http.NewRequest(http.MethodGet, c.BaseURL+"/apps/doriath/api/v1/app/secrets/by-name/"+name, nil) + req.Header.Set("Authorization", "Bearer "+bearer) + if c.lastETag != "" { + req.Header.Set("If-None-Match", c.lastETag) + } + resp, err := c.HTTP.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + c.leaseID = resp.Header.Get("Doriath-Lease-Id") + c.leaseUntil = resp.Header.Get("Doriath-Lease-Expires") + if etag := resp.Header.Get("ETag"); etag != "" { + c.lastETag = etag + } + if resp.StatusCode == http.StatusNotModified { + return nil, ErrNotModified + } + body, _ := io.ReadAll(resp.Body) + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("fetch %q failed (%d): %s", name, resp.StatusCode, strings.TrimSpace(string(body))) + } + var env MachineEnvelope + if err := json.Unmarshal(body, &env); err != nil { + return nil, err + } + return &env, nil +} + +// --- internals --- + +func (c *Client) getJSON(path string, out any) error { + req, _ := http.NewRequest(http.MethodGet, c.BaseURL+path, nil) + c.authenticate(req) + req.Header.Set("Accept", "application/json") + req.Header.Set("OCS-APIRequest", "true") + resp, err := c.HTTP.Do(req) + if err != nil { + return err + } + defer resp.Body.Close() + body, _ := io.ReadAll(resp.Body) + if resp.StatusCode != http.StatusOK { + return fmt.Errorf("GET %s failed (%d): %s", path, resp.StatusCode, strings.TrimSpace(string(body))) + } + return json.Unmarshal(bytes.TrimSpace(body), out) +} + +func (c *Client) authenticate(req *http.Request) { + if c.appUser != "" { + req.SetBasicAuth(c.appUser, c.appPass) + } +} + +func (c *Client) abs(endpoint string) string { + if strings.HasPrefix(endpoint, "http") { + return endpoint + } + return c.BaseURL + endpoint +} diff --git a/cli/internal/client/client_test.go b/cli/internal/client/client_test.go new file mode 100644 index 000000000..f2a4f3074 --- /dev/null +++ b/cli/internal/client/client_test.go @@ -0,0 +1,52 @@ +package client + +import ( + "errors" + "net/http" + "net/http/httptest" + "testing" +) + +// TestFetchByNameConditional verifies the ETag poll loop: the first fetch +// captures the ETag and decodes the envelope; an unchanged re-fetch sends +// If-None-Match and is answered 304 → ErrNotModified (§4.2). +func TestFetchByNameConditional(t *testing.T) { + const etag = `"v1-abc"` + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if r.Header.Get("Authorization") != "Bearer tok" { + t.Errorf("missing bearer, got %q", r.Header.Get("Authorization")) + } + if r.Header.Get("If-None-Match") == etag { + w.Header().Set("ETag", etag) + w.WriteHeader(http.StatusNotModified) + return + } + w.Header().Set("ETag", etag) + w.Header().Set("Doriath-Lease-Id", "lease-9") + w.Header().Set("Doriath-Lease-Expires", "2026-01-01T00:00:00Z") + w.WriteHeader(http.StatusOK) + _, _ = w.Write([]byte(`{"format":"doriath-machine-secret-v1","scheme":"rsa-oaep-sha256-chunked-v1","payload":{"value":"QUJD"}}`)) + })) + defer srv.Close() + + c := New(srv.URL) + + env, err := c.FetchByName("DB_PASSWORD", "tok") + if err != nil { + t.Fatalf("first fetch: %v", err) + } + if env.Payload.Value != "QUJD" { + t.Fatalf("payload = %q", env.Payload.Value) + } + if c.LeaseID() != "lease-9" { + t.Fatalf("lease id = %q", c.LeaseID()) + } + if c.LastETag() != etag { + t.Fatalf("etag = %q", c.LastETag()) + } + + // Unchanged re-fetch → 304 → ErrNotModified. + if _, err := c.FetchByName("DB_PASSWORD", "tok"); !errors.Is(err, ErrNotModified) { + t.Fatalf("second fetch: want ErrNotModified, got %v", err) + } +} diff --git a/cli/internal/client/live_token_test.go b/cli/internal/client/live_token_test.go new file mode 100644 index 000000000..be3f5f9d1 --- /dev/null +++ b/cli/internal/client/live_token_test.go @@ -0,0 +1,39 @@ +package client + +import ( + "crypto/rand" + "crypto/rsa" + "os" + "testing" + "time" +) + +// TestLiveTokenExchangeReachesValidation drives Discover + MachineToken against a +// real instance (DORIATH_LIVE_URL). With a throwaway key and an unregistered +// application id, the server must reach CLAIM validation and reject the issuer — +// proving the assertion is well-formed (correct grant, audience, exp/iat window, +// RS256 signature) rather than failing to parse. Skipped without the env var. +func TestLiveTokenExchangeReachesValidation(t *testing.T) { + base := os.Getenv("DORIATH_LIVE_URL") + if base == "" { + t.Skip("set DORIATH_LIVE_URL to run the live token probe") + } + c := New(base) + disc, err := c.Discover() + if err != nil { + t.Fatalf("Discover: %v", err) + } + if disc.TokenEndpoint == "" || disc.Assertion.Audience != "doriath" { + t.Fatalf("unexpected discovery: %+v", disc) + } + t.Logf("discovery OK: tokenEndpoint=%s audience=%s leaseSupported=%v", + disc.TokenEndpoint, disc.Assertion.Audience, disc.LeaseSupported()) + + key, _ := rsa.GenerateKey(rand.Reader, 2048) + _, err = c.MachineToken("cli-live-probe-nonexistent", key, disc, time.Now().Unix()) + if err == nil { + t.Fatal("expected rejection for an unregistered application") + } + // The error must come from claim/issuer validation, not a malformed request. + t.Logf("token exchange rejected as expected: %v", err) +} diff --git a/cli/internal/crypto/crypto.go b/cli/internal/crypto/crypto.go new file mode 100644 index 000000000..fb2fe1611 --- /dev/null +++ b/cli/internal/crypto/crypto.go @@ -0,0 +1,206 @@ +// Package crypto reimplements Doriath's browser crypto recipe byte-for-byte +// (doriath-cli §2), so the CLI decrypts client-side exactly as the Vue app and +// the openconnector machine recipe do — no plaintext key material ever reaches +// the server (ADR-003). +// +// Two formats are handled: +// +// - The EncryptionSuite private-key blob (human unlock): base64 of +// [4-byte version][16-byte salt][12-byte IV][ciphertext+16-byte GCM tag]. +// The unlock key is PBKDF2-HMAC-SHA256(masterPassword, salt, 600000) → the +// 32-byte AES-256-GCM key that decrypts the blob to the PKCS8 private-key PEM. +// - Secret fields (rsa-oaep-sha256-chunked-v1): base64 of +// [4-byte chunk count big-endian][512-byte RSA-OAEP-SHA256 blocks…], each +// block decrypted with the suite's RSA-4096 private key and concatenated. +// +// Stdlib only — PBKDF2 is implemented in-house over crypto/hmac so the CLI has +// no external dependency and builds to a single static, cross-compiled binary. +package crypto + +import ( + "crypto" + "crypto/aes" + "crypto/cipher" + "crypto/hmac" + "crypto/rsa" + "crypto/sha256" + "crypto/x509" + "encoding/base64" + "encoding/binary" + "encoding/pem" + "errors" + "fmt" +) + +const ( + pbkdf2Iterations = 600000 + envelopeVersion = 1 + saltLen = 16 + ivLen = 12 + rsaBlockSize = 512 +) + +// UnlockedSuite is the in-memory result of a human unlock: the suite's RSA +// private key (used to decrypt secret fields client-side) and its certificate. +// The private key never leaves the process. +type UnlockedSuite struct { + Key *rsa.PrivateKey + Certificate string +} + +// pbkdf2SHA256 derives keyLen bytes from password+salt using PBKDF2-HMAC-SHA256. +// Implemented in-house (RFC 8018) to keep the CLI stdlib-only. +func pbkdf2SHA256(password, salt []byte, iterations, keyLen int) []byte { + prf := func(data []byte) []byte { + mac := hmac.New(sha256.New, password) + mac.Write(data) + return mac.Sum(nil) + } + hLen := sha256.Size + blocks := (keyLen + hLen - 1) / hLen + out := make([]byte, 0, blocks*hLen) + for block := 1; block <= blocks; block++ { + var idx [4]byte + binary.BigEndian.PutUint32(idx[:], uint32(block)) + u := prf(append(append([]byte{}, salt...), idx[:]...)) + t := make([]byte, len(u)) + copy(t, u) + for i := 1; i < iterations; i++ { + u = prf(u) + for j := range t { + t[j] ^= u[j] + } + } + out = append(out, t...) + } + return out[:keyLen] +} + +// DeriveUnlockKey reproduces the browser's deriveAesKey/deriveUnlockKeyRaw: the +// raw 32-byte AES-256 unlock key from the master password and the private-key +// envelope's own salt. +func DeriveUnlockKey(masterPassword string, salt []byte) []byte { + return pbkdf2SHA256([]byte(masterPassword), salt, pbkdf2Iterations, 32) +} + +// UnwrapPrivateKey decrypts the EncryptionSuite private-key blob with the master +// password, returning the PKCS8 private-key PEM (identical to the browser's +// decryptPrivateKey). +func UnwrapPrivateKey(blobBase64, masterPassword string) (string, error) { + raw, err := base64.StdEncoding.DecodeString(blobBase64) + if err != nil { + return "", fmt.Errorf("decode private-key blob: %w", err) + } + if len(raw) < 4+saltLen+ivLen+16 { + return "", errors.New("private-key blob too short") + } + if v := binary.BigEndian.Uint32(raw[0:4]); v != envelopeVersion { + return "", fmt.Errorf("unsupported envelope version %d", v) + } + salt := raw[4 : 4+saltLen] + iv := raw[4+saltLen : 4+saltLen+ivLen] + ct := raw[4+saltLen+ivLen:] + + key := DeriveUnlockKey(masterPassword, salt) + block, err := aes.NewCipher(key) + if err != nil { + return "", err + } + gcm, err := cipher.NewGCM(block) + if err != nil { + return "", err + } + pt, err := gcm.Open(nil, iv, ct, nil) + if err != nil { + return "", fmt.Errorf("unlock failed — wrong master password or corrupt blob: %w", err) + } + return string(pt), nil +} + +// ParsePrivateKey parses a PKCS8 RSA private-key PEM. +func ParsePrivateKey(pemStr string) (*rsa.PrivateKey, error) { + blockPem, _ := pem.Decode([]byte(pemStr)) + if blockPem == nil { + return nil, errors.New("no PEM block in private key") + } + parsed, err := x509.ParsePKCS8PrivateKey(blockPem.Bytes) + if err != nil { + return nil, fmt.Errorf("parse PKCS8: %w", err) + } + key, ok := parsed.(*rsa.PrivateKey) + if !ok { + return nil, errors.New("private key is not RSA") + } + return key, nil +} + +// DecryptField reverses the browser's rsaEncrypt: base64 of +// [4-byte chunk count][512-byte RSA-OAEP-SHA256 blocks…] → plaintext. +func DecryptField(ciphertextBase64 string, key *rsa.PrivateKey) (string, error) { + raw, err := base64.StdEncoding.DecodeString(ciphertextBase64) + if err != nil { + return "", fmt.Errorf("decode field: %w", err) + } + if len(raw) < 4 { + return "", errors.New("field ciphertext too short") + } + chunks := binary.BigEndian.Uint32(raw[0:4]) + if int(chunks)*rsaBlockSize != len(raw)-4 { + return "", fmt.Errorf("field length %d inconsistent with chunk count %d", len(raw), chunks) + } + var out []byte + for i := 0; i < int(chunks); i++ { + start := 4 + i*rsaBlockSize + block := raw[start : start+rsaBlockSize] + pt, err := rsa.DecryptOAEP(sha256.New(), nil, key, block, nil) + if err != nil { + return "", fmt.Errorf("RSA-OAEP decrypt chunk %d: %w", i, err) + } + out = append(out, pt...) + } + return string(out), nil +} + +// CertificateFingerprint returns the sha256:-prefixed fingerprint of a PEM +// certificate (for the fast key/envelope mismatch pre-check, §2.2). +func CertificateFingerprint(certPem string) (string, error) { + blockPem, _ := pem.Decode([]byte(certPem)) + if blockPem == nil { + return "", errors.New("no PEM block in certificate") + } + sum := sha256.Sum256(blockPem.Bytes) + return "sha256:" + fmt.Sprintf("%x", sum[:]), nil +} + +// PublicKeyMatchesPrivate verifies the private key's public half matches the +// certificate's public key — a fast fail on a key/envelope mismatch (§2.2). +func PublicKeyMatchesPrivate(certPem string, key *rsa.PrivateKey) error { + blockPem, _ := pem.Decode([]byte(certPem)) + if blockPem == nil { + return errors.New("no PEM block in certificate") + } + cert, err := x509.ParseCertificate(blockPem.Bytes) + if err != nil { + return fmt.Errorf("parse certificate: %w", err) + } + certPub, ok := cert.PublicKey.(*rsa.PublicKey) + if !ok { + return errors.New("certificate public key is not RSA") + } + if certPub.N.Cmp(key.N) != 0 || certPub.E != key.E { + return errors.New("key/envelope mismatch: the private key does not match the suite certificate") + } + return nil +} + +// SignRS256 produces an RS256 (RSASSA-PKCS1-v1_5 over SHA-256) signature over +// signingInput, base64url-encoded — the primitive behind the CI-mode RFC 7523 +// JWT bearer assertion. +func SignRS256(signingInput string, key *rsa.PrivateKey) (string, error) { + digest := sha256.Sum256([]byte(signingInput)) + sig, err := rsa.SignPKCS1v15(nil, key, crypto.SHA256, digest[:]) + if err != nil { + return "", err + } + return base64.RawURLEncoding.EncodeToString(sig), nil +} diff --git a/cli/internal/crypto/crypto_test.go b/cli/internal/crypto/crypto_test.go new file mode 100644 index 000000000..de0e790c4 --- /dev/null +++ b/cli/internal/crypto/crypto_test.go @@ -0,0 +1,167 @@ +package crypto + +import ( + stdcrypto "crypto" + "crypto/aes" + "crypto/cipher" + "crypto/rand" + "crypto/rsa" + "crypto/sha256" + "crypto/x509" + "crypto/x509/pkix" + "encoding/base64" + "encoding/binary" + "encoding/hex" + "encoding/pem" + "math/big" + "testing" + "time" +) + +// TestPBKDF2RFC6070 anchors the in-house PBKDF2-HMAC-SHA256 to the RFC 6070 +// reference vectors — the same algorithm WebCrypto uses, so matching the vector +// proves byte-for-byte parity with the browser's deriveAesKey. +func TestPBKDF2RFC6070(t *testing.T) { + cases := []struct { + password, salt string + iter, keyLen int + wantHex string + }{ + {"password", "salt", 1, 32, "120fb6cffcf8b32c43e7225256c4f837a86548c92ccc35480805987cb70be17b"}, + {"password", "salt", 2, 32, "ae4d0c95af6b46d32d0adff928f06dd02a303f8ef3c251dfd6e2d85a95474c43"}, + {"password", "salt", 4096, 32, "c5e478d59288c841aa530db6845c4c8d962893a001ce4e11a4963873aa98134a"}, + } + for _, c := range cases { + got := pbkdf2SHA256([]byte(c.password), []byte(c.salt), c.iter, c.keyLen) + if hex.EncodeToString(got) != c.wantHex { + t.Fatalf("PBKDF2(%q,%q,%d): got %s want %s", c.password, c.salt, c.iter, hex.EncodeToString(got), c.wantHex) + } + } +} + +// TestUnwrapPrivateKeyRoundTrip builds a private-key blob in the exact browser +// envelope format (version+salt+iv+GCM) and confirms UnwrapPrivateKey recovers +// the PEM — and rejects a wrong password. +func TestUnwrapPrivateKeyRoundTrip(t *testing.T) { + pemStr := "-----BEGIN PRIVATE KEY-----\nMOCK\n-----END PRIVATE KEY-----" + password := "TfMaster2026!vault" + salt := make([]byte, saltLen) + iv := make([]byte, ivLen) + rand.Read(salt) + rand.Read(iv) + + key := DeriveUnlockKey(password, salt) + block, _ := aes.NewCipher(key) + gcm, _ := cipher.NewGCM(block) + ct := gcm.Seal(nil, iv, []byte(pemStr), nil) + + buf := make([]byte, 4+saltLen+ivLen+len(ct)) + binary.BigEndian.PutUint32(buf[0:4], envelopeVersion) + copy(buf[4:], salt) + copy(buf[4+saltLen:], iv) + copy(buf[4+saltLen+ivLen:], ct) + blob := base64.StdEncoding.EncodeToString(buf) + + got, err := UnwrapPrivateKey(blob, password) + if err != nil { + t.Fatalf("unwrap: %v", err) + } + if got != pemStr { + t.Fatalf("unwrap round-trip: got %q", got) + } + if _, err := UnwrapPrivateKey(blob, "wrong-password"); err == nil { + t.Fatal("expected wrong-password unwrap to fail") + } +} + +// TestDecryptFieldRoundTrip encrypts a value in the browser's chunked +// RSA-OAEP-SHA256 format and confirms DecryptField recovers it, incl. a payload +// spanning multiple 446-byte chunks. +func TestDecryptFieldRoundTrip(t *testing.T) { + key, err := rsa.GenerateKey(rand.Reader, 4096) + if err != nil { + t.Fatal(err) + } + for _, plaintext := range []string{"s3cr3t", string(make([]byte, 900))} { + ct := encryptFieldBrowserFormat(t, []byte(plaintext), &key.PublicKey) + got, err := DecryptField(ct, key) + if err != nil { + t.Fatalf("decrypt: %v", err) + } + if got != plaintext { + t.Fatalf("field round-trip mismatch (len %d)", len(plaintext)) + } + } +} + +// TestPublicKeyMatchesPrivate confirms the fingerprint pre-check accepts a +// matching cert and rejects a mismatched one. +func TestPublicKeyMatchesPrivate(t *testing.T) { + key, _ := rsa.GenerateKey(rand.Reader, 2048) + certPem := selfSignedCert(t, key) + if err := PublicKeyMatchesPrivate(certPem, key); err != nil { + t.Fatalf("matching key rejected: %v", err) + } + other, _ := rsa.GenerateKey(rand.Reader, 2048) + if err := PublicKeyMatchesPrivate(certPem, other); err == nil { + t.Fatal("expected mismatched key to be rejected") + } +} + +// TestSignRS256 verifies the assertion signature against the public key. +func TestSignRS256(t *testing.T) { + key, _ := rsa.GenerateKey(rand.Reader, 2048) + input := "eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhcHAtMSJ9" + sig, err := SignRS256(input, key) + if err != nil { + t.Fatal(err) + } + raw, _ := base64.RawURLEncoding.DecodeString(sig) + digest := sha256.Sum256([]byte(input)) + if err := rsa.VerifyPKCS1v15(&key.PublicKey, stdcrypto.SHA256, digest[:], raw); err != nil { + t.Fatalf("signature does not verify: %v", err) + } +} + +// --- test helpers --- + +func encryptFieldBrowserFormat(t *testing.T, plaintext []byte, pub *rsa.PublicKey) string { + t.Helper() + const chunkSize = 446 + var chunks [][]byte + for i := 0; i < len(plaintext); i += chunkSize { + end := i + chunkSize + if end > len(plaintext) { + end = len(plaintext) + } + chunks = append(chunks, plaintext[i:end]) + } + if len(chunks) == 0 { + chunks = append(chunks, []byte{}) + } + out := make([]byte, 4) + binary.BigEndian.PutUint32(out[0:4], uint32(len(chunks))) + for _, c := range chunks { + enc, err := rsa.EncryptOAEP(sha256.New(), rand.Reader, pub, c, nil) + if err != nil { + t.Fatal(err) + } + out = append(out, enc...) + } + return base64.StdEncoding.EncodeToString(out) +} + +func selfSignedCert(t *testing.T, key *rsa.PrivateKey) string { + t.Helper() + tmpl := &x509.Certificate{ + SerialNumber: big.NewInt(1), + Subject: pkix.Name{CommonName: "doriath-cli-test"}, + NotBefore: time.Now().Add(-time.Hour), + NotAfter: time.Now().Add(time.Hour), + } + der, err := x509.CreateCertificate(rand.Reader, tmpl, tmpl, &key.PublicKey, key) + if err != nil { + t.Fatal(err) + } + return string(pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: der})) +} diff --git a/cli/internal/crypto/testdata/webcrypto_envelope.json b/cli/internal/crypto/testdata/webcrypto_envelope.json new file mode 100644 index 000000000..40041a17b --- /dev/null +++ b/cli/internal/crypto/testdata/webcrypto_envelope.json @@ -0,0 +1 @@ +{"masterPw":"correct horse battery staple","blobB64":"AAAAATTCrGQwS537jfHC92jBkwVGfzjuqiOOLcon1c+71L80NbPAePGXrV3kK7hdbz8QpglLTTY97SrgnkoizLCFHvWAf9CYrruV0joIerE6d5nTY+gdyc5HosuQl3Cn1URDAPvNwjKYXPa0ve1omi0fRi7I9+UWRzng5/tfuJrSfL7unPlF6ayNFP1HUgqIgNYJeRM6oku2prrAXo5M75XNyEH6yo0nUB2hyIx/VhUJKmkABWl+lUfijZnFdFk03WkNpDd79Vk4S6TqN14EYm0P1OTv+AbCjTiAneCgx0K+0/xrtyp9y1izzSHOaPHgi6c+KbluqToKreu8G9N4NytfTRn/y/IPuY9/u9cg97vBV6GgG6+ohLrMeniBLUZw5aLzR0wLORGvgM2uy70lonhLS8MMsJoB2EYuvWXQdJD6dfUwLXV3xNRYWcBNqVcNRHeaJy2bqgG9FJcpiN9+8sKtZK37DdxqjjlIxzWVe0n9rjbISbTjYgMBb91TeYXdnT4OErZMiFWbcx7vRVIdyHEHu8z2Gs4nZPfGp+u1zgZwN5HvW+xNlO/upBjoDibTQFmUMVw8ZJPIwQn0+dVyKJ2xGuO0i0u2GfKNdfoP3VUEvJcoZTMuGpp45R9KZVYpIG4R3Hd1l6TtZuOuFwzDU7tzjOU9E0r93ux5vgtaK8MDcw+WlHgU/O3pLGW1+TfL3luxWzb9SWc9YAp/bpTLnlG6+fl60VSdn3xM7UqkPT9PFJLXS4Rsw6c3bWbmWPgCYKOgpz7ZV1QRlHIadOUnZOmdPWzz6IL9g7cRqNz5OcV5ff8vNDJL1PYUjubLF2g6Ddhk3a8xm9q/gn9UHu5SQs3cw9BWh3uOrQaa3nOw1h1cGKWs9ZH+mqk63EQmZBXWHyFFGe+QbHS7IHcVbRW9x4KF2+cEHjkd1/shty5C+Nf9FSOVagg8swqy7j6wzySw9RwRdb35zRsxdQXMfepWDQjBceotl8iMVyoiGqP0Wn86SYdV4+g0VL5GHlDg7GxZYtR6gJNRvlUYQRifrjZv/5vvIUMKRWDCJLBa+mB4iZeXhSXEVOz7jv4d+7r9Yoc+gN85Ig8kRU/b1Mo64fuykG6KTBhcANIVt9G/oCnDbhVLeldyo0fCbb1ZF8Fdc42CsCgxc/SJJH9d2yPXHnlys+QNqqye6U8UVHRZQGPslxmxRklkbHqQjm7e+6qrVYDeiTvgRJivetzga5BpCsiiHe8p8AP0VosIdvd93FvbUM2J8gWhzYDS/nCEQ+XpPecsOxDVBQxMp8JU8q5QpGzvfn5ayAees9v+p2nUlPkarN5AQNefOIL8IYNSs6lIa1kou+b+WHoGhpyC7vTLtsRBerZzTcgQrYFR2wSkCoyRopmpexNhy1T+M6Uf2GsspvUfqMLdhLAFx1IasJPjGBmDGi5beF9gf/TU9EjrzJqivILn5p6Y5vZl5BtwZvxZ7wBXLuHsU8icEVgqGTPzljpJ+yjZ5iudaObYMQOcLZuQjIklgKunQdI4IuUsEWegLxUgVctLVmJZ3V9TZ9AP3TN49RpoaCjkKKMQ053NgwiUyYB0JFnvwym7yCIbxmq64eVqjP6Ke4Z6tSvT/QhVknaP8IOUVS1O/ke3Nj6Pl3/JI5nM62dIup1MCO/wRKaC0V5fL8LXotYfy1EORjlSBJkmEeYEN7QdsS4ld41sFRpeankNbnzLtPSC6urPGGPJK9XRs3OvSLLyQDjPp/wVjS6lALlVHK83lnIEnF8sPuRplMFmQMIzfRLUjXl+xQMrvRtlZifbc3MV95Xtq8TbyHaBr+raOxq9XIRW07C5Q73izzzyOrkqvmgP8mdGyGWBvksDTDJoojE5KSb7dQp3UXSlNird40TCQ7tZTt/zM6bavePAyS+k+JxUh8CCYcsq5MwFXY9ej2vKAY4tqQf8tBFxWwxNhd1HXs4MCqz82b9Uw3nWKmud7gGNfHcnBXaqFBRxTlReTEEW4PgS3JHbpXOXvRcznC1LHcbj3SMtoygELBKRYoxTuHeePuP3j+mhrK3niPW0aOsUS1tS8CGjNzDCqUMY4j+covPhwy+UIaqxY3mVuiaY+ORaj4owazQw5ICaPfJBHK2KvzcXhn5M3r9AdmQIdsEXOzU9RCJvDvnOqsu7nZAc9P8YkbqlmFj0RixSNxlj8S70KBMSmpaYassy76hjIJ8BMQ9U1D1xTcSrE1xOJNBp2zWlrCO7oPCWMx8MOYNAgL8kO9tan1R3q+ZbraM0CUaIAH9J85GVhvEVOBtcbWagFHbf2cxGET0zead9ipeXeloGB/lwMVPycsDj63XP/oGHRHbOiCy9zbZQmBg+yhV2O48zrrsJCgDhMydXHNcTMO1LblvHvn+GBlqIv5gt9TNzQ1bEk5cEWsSzHkUgvYZaEJNM8vL2ANjyrcWR/6oo5hpVdYWaMgwrmN9UEcuFJWVWO/s0H3Mw1ROxHWnEN4d0/j3a+0D0QWWnBSs7LLPKvaYJsBmtqhrhKXAu5MvKCtaBQ4jdQ9wPtAs5nE6H1QhDkhq3nQeViHYiMYCFmDtPXzMnm3O70oXM+cSl8+ZcAwubnNqs336v4sfxNS3VP9ECbDbizPZGE7MqCEPCzB8ngtN4mN04zppFNyUnjBYhFc8ospaJWiIP0gLksp0zjftdRfILSllKc95UVSjqy/h2dX8XGxcorMTi/7r69ft4e3v5NJaWzfs0Hel+XP2w2Rl3HNUYUzuP4VBDPfG+w7UYfQRh3whFSzZFFUOsnpO6WWBzfXVUh3OxuU+GhnGKYjWKDvBhFMyzMjfR8OvoU8urmIZUXXnEmpCjrfWMLOHc9fmtimqLVgDyJ4/YpAeX3woe8UFQz4w62eYph9z3HTDCE8z2fBvwsrsF5eInFBzk7ameJA8OcwSxc4PgOjtk/2Vbg3x/3EArdR8Hxjei05U/iBqBt2S0kM3jxvQpCMedzd1QLkfEAY62YiB8RKn47fPi5QgWRL4+ClBvqFHpJsHSPgeC5bvKR/aZbFxA4xHmoMcl/4Fd0P8yS4/hYJTEyZVQItBJRx5Ucy/hoPHLcbmOnbiy2ot78hCHFfyQmCPqEaa2Wim+asx62RHWAiDj740LkY5OSpXW4xBUyLc9XT8SzC2LYNOfA2Vg0tAgc2l3ytjv5oYKXDNRG7VvDwn4W2aodVkF1xhfJV6FcN+ZW8YloX/PlEmSOS905+l9FBq9q1Vjv/tmT94fh8ibdz3gPtpIcHIRiEfS8ynUaUSoG2C0ngRe3NLqF5v63+WqSZ2qPjAq6HMBISr+v8ZErRJ2hRdm2fgpMpBj1NaXEWVjzoHMYeHpCCNYcncuiysEd781PKhxZ3ZUdqJfRe9J8VJyK9RK1v7j3dBudMVOXHzqVjwGRgh24zafddRnRWO005+LOwvNZ2hfNHsUTgeYpu7X88KGHM89hZyibkts3VbY5E1GRekcjOGjaERf7zDOD292T6q1RZVumCXPkz0Oj6fKFUsJO9OUxVXxDtWhdh26Bi4+zwlf1T7GpHwDeyGge9zDqBP9JCSU0p3u5z/EZ3SBDM8Kxf4MSrmhpZ7Jdq+wDKBT7SdOYKFDsXm5HvduBdlnBlImgViVAV/XpVd/Rd6jSnBI7RvxxpkeFkNB/a5r2lgkUmgSoQ6G0yph7FldVDW2+fAxuzOSL+uHRA7GC0RqlOGfMV06qaFraL/b2V4knPtl0d9z67eMcoV22vuuxom8u386MiOgov//66po6YjUtB8sSNf2QgxsJYqwxq55cFfNf7lpsOeUPyrhC/RchJVaChW0Le9YOE6r9sUysbAQISvK6SjSDKP2Mf7aSiZ4FvP36cGRhmzS8X6IGWMHw+3XPH1M27sJk1oyIWZKfiNAQuw0V1O4k4IRwN8gRJZ9BmvI9LgH+BUkku/F21pk5edCSu+UJcc7XFPXWRHqHsCTd9Qy/5Vo/dGLZpdQ21ZsYnhce0kDcMW08fXuRnEujYZ0DOULyrw7pF5bWhSEgS41aLMOLbN4VNdB62zrvukJJe8N0dBZuLemiao13V9KTd0r18eDMA00NBw737KtyTF3qww6w3tm3PH3BZInnHoi3m9B7I0n7bYCpA6GUzfam3HPL1EcLQj95Sx/Oxe6eD15qYXItxJ+lyvKnRmz6CXKXP4EIwsJNratjvr4mhys8R+pQU5Ncan/6fm9XJgk/MzAENjw9mpOIfz3dlkX4ZbQAYgZ4MZR/Ej6IpI4qfFyVJPx8oEZvGAweg3AHN+AKeaEKeF4RfqvEFQrgqpbEDZitytYowmHjagGXuywqJr2Jx3bWHRZ1QiUBXCbU1uswfSy7cBME6nCTLocO/NFdwh2ME7G+dppc/4AxKLk7FgTcPQAR9fX189pLbckBE1TdbVXh04wR6qqqBlaOcQ4o50vX2qrDuYATP8=","fieldB64":"AAAAAmiufaFQtdEgjRdT8vRZKiE48yiN4akgI0IflwTk6+CXnNr0enJ5jv4O6A52EWQ6QJRtLrtHvxkFy3XKq0vjRW0HPnOcgq0H6DSHOkSU7WN9MRGhU7mKWf2jy3MhxORx0Lb9MZNMOpYsXq38TLs5H1T1rN+JaGpr+V+RcvG+qf+HMZJzk/ogTXkIyc89AITvwYk/2J7ewbyRsVkNCQ0oOS1yWD9Hg3VqfJnhNzujNxwlyxXHta2SVbLt62Ppd1rwDYgrJxwhRYus/AQjfPtLHI1s5d7pI+kIWbIKtHIsUlaVTt6bwuk/ncxHKK6pbRqNs34LVhxR18Stbcypi0zF447MHExM8sVNGVx5Nf8lOymy2e4hZb6L1CIyJJZlxKp7aQEGZ77F+FtYuFDJUTo+FfRLyEYBfHN8JeTCZqSLSuYlrc1fnffAiaCwrNORXuOV5vh4bk2U8+2hEJOT3vwpnI6tyDOGZoqPlfLRI/tB0wxDRSmXDiHxjtNkyPj67QKvHAuuBgflyWIWF8kHzrHu5EjzWVrRElV15v5nHFf8aq52j0vCYunFElcAX1ZZ8P70n6Qu87VU8nxvE5czSpqeYl8zypZLTFrFXSgcg0+jokRxK/stSbIKKG6nRCZNFR27xM4YNieintU8Vtn1udvckOV9eTUTFlIJcyXo//vsqmnmN8uv7y4UF064/zM2dTeoEUC3oB1A1byKmYtm8vGOrWUHogke4UjHCGoL54nK4tVDllE1gcI5QV4Oz/ggzmClr3b4URpQxjH8jhBq+5Rpxcmyteisv/nI/jXImGOhUqCxMrooj46Dwt8id8J5SIkg8tY5p/HLZx49zT873/JPhgPfx3T3GzfYYZbf1wN44aaMByjS3CcI65tC7r1CvNhlpYjUNVynxWNH2yeiVfQTHP9iXMU2fXvtEYd6Byj0Gd0FSB9qyD4lNhKJu1dHxg11YVvALraku0GpvQIYQLvO87dy3JSJevsD/Lch+BsUO3lFS0t28DNh4OsllV+zh5qgS6RyN4Y1i14aIXwi6OWwlKxEs4Ee+bSYixY061l9UsOTh3swAEyupE+cc/JhCrkaoM/8CJFbuEtDv4oqT91KzgaoKf7N3nePGCM4U7pi7r9M6Km13eoNkP3AN1CGUSygDj11Xwg6NkJfg5B9tHKaL/OJhYwXFvY5ujUHJv/adiuxvsZBHsk3M0FezSien8H+0H+wvOPllxuYuAuVG/nUEzYx/z+9GeUmbMsDooNVSmkF/+XzLj068WKkYNP3ozkV1DP4lVh7++WlfRWeaBcb9vhZfAKBxDR9Z/JceoBvG+pj0D1mu0bhFvBzkyKjECHBSxeY5EekcZVehfJ+C40C+tc=","plaintext":"S3cr3t-value that is long enough to force TWO RSA-OAEP chunks: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","chunkCount":2} \ No newline at end of file diff --git a/cli/internal/crypto/webcrypto_live_test.go b/cli/internal/crypto/webcrypto_live_test.go new file mode 100644 index 000000000..a28dd7942 --- /dev/null +++ b/cli/internal/crypto/webcrypto_live_test.go @@ -0,0 +1,63 @@ +package crypto + +import ( + "encoding/json" + "os" + "strings" + "testing" +) + +// TestWebCryptoLiveEnvelope decrypts an envelope produced by the BROWSER's real +// WebCrypto (not Go), proving the CLI recipe matches byte-for-byte beyond the +// RFC 6070 PBKDF2 anchor. Fixture path via DORIATH_LIVE_ENV; skipped otherwise. +func TestWebCryptoLiveEnvelope(t *testing.T) { + // Defaults to the committed fixture so the cross-implementation parity check + // runs in CI; DORIATH_LIVE_ENV overrides it with a freshly-captured one. + path := os.Getenv("DORIATH_LIVE_ENV") + if path == "" { + path = "testdata/webcrypto_envelope.json" + } + raw, err := os.ReadFile(path) + if err != nil { + t.Fatal(err) + } + // The fixture is a JSON string containing the JSON object (double-encoded). + inner := string(raw) + if strings.HasPrefix(inner, "\"") { + if err := json.Unmarshal(raw, &inner); err != nil { + t.Fatal(err) + } + } + var env struct { + MasterPw string `json:"masterPw"` + BlobB64 string `json:"blobB64"` + FieldB64 string `json:"fieldB64"` + Plaintext string `json:"plaintext"` + ChunkCount int `json:"chunkCount"` + } + if err := json.Unmarshal([]byte(inner), &env); err != nil { + t.Fatal(err) + } + + pem, err := UnwrapPrivateKey(env.BlobB64, env.MasterPw) + if err != nil { + t.Fatalf("UnwrapPrivateKey: %v", err) + } + key, err := ParsePrivateKey(pem) + if err != nil { + t.Fatalf("ParsePrivateKey: %v", err) + } + got, err := DecryptField(env.FieldB64, key) + if err != nil { + t.Fatalf("DecryptField: %v", err) + } + if got != env.Plaintext { + t.Fatalf("plaintext mismatch:\n got %q\nwant %q", got, env.Plaintext) + } + t.Logf("OK: decrypted %d-chunk WebCrypto field (%d bytes) via master-password unwrap", env.ChunkCount, len(got)) + + // Wrong password must fail cleanly, not panic. + if _, err := UnwrapPrivateKey(env.BlobB64, "wrong-password"); err == nil { + t.Fatal("expected wrong-password unlock to fail") + } +} diff --git a/cli/main.go b/cli/main.go new file mode 100644 index 000000000..78e2b7d45 --- /dev/null +++ b/cli/main.go @@ -0,0 +1,289 @@ +// Command doriath is the Doriath command-line client (doriath-cli). +// +// It serves the shell audience over the SAME server surfaces the browser and +// the openconnector machine consumer already use — nothing new server-side. +// Human mode authenticates with a Nextcloud app-password and unlocks by +// deriving the master-password key and unwrapping the EncryptionSuite private +// key IN THIS PROCESS; every decryption is client-side, so no plaintext key +// material ever reaches the server (ADR-003). CI mode is an RFC 7523 machine +// consumer holding the application private key. +// +// v1 is strictly READ-ONLY (doriath-cli §5): a write in Doriath's model +// requires re-wrapping the value under every recipient's public key (the share +// fan-out), which is a separate, larger surface deferred to a follow-up. +// +// Single static binary, stdlib only — cross-compile with GOOS/GOARCH. +package main + +import ( + "bufio" + "encoding/json" + "fmt" + "os" + "os/exec" + "strings" + + "github.com/ConductionNL/doriath/cli/internal/client" + dcrypto "github.com/ConductionNL/doriath/cli/internal/crypto" +) + +// version is stamped at build time via -ldflags "-X main.version=…". +var version = "dev" + +func main() { + if len(os.Args) < 2 { + usage() + os.Exit(2) + } + cmd := os.Args[1] + args := os.Args[2:] + var err error + switch cmd { + case "version", "--version", "-v": + fmt.Printf("doriath %s\n", version) + case "login": + err = cmdLogin(args) + case "list": + err = cmdList(args) + case "show": + err = cmdShow(args) + case "get": + err = cmdGet(args) + case "copy": + err = cmdCopy(args) + case "ci": + err = cmdCI(args) + case "completion": + err = cmdCompletion(args) + case "help", "--help", "-h": + usage() + default: + fmt.Fprintf(os.Stderr, "unknown command %q\n\n", cmd) + usage() + os.Exit(2) + } + if err != nil { + fmt.Fprintf(os.Stderr, "error: %v\n", err) + os.Exit(1) + } +} + +func usage() { + fmt.Fprint(os.Stderr, `doriath — zero-knowledge secrets CLI (read-only v1) + +Human mode (decrypts client-side): + doriath login --url --user store the instance + app-password + doriath list [--output json|table] list your secrets (metadata only) + doriath show [--output json] reveal one secret (all fields) + doriath get print one field (key|login|url|name) + doriath copy [--clear-after ] copy a field to the clipboard, auto-clear + +CI mode (RFC 7523 machine consumer): + doriath ci fetch [--output env|json] fetch+decrypt an application secret + doriath ci run [,...] -- run with the secret(s) in its env + + version | completion | help + +v1 is READ-ONLY: no create/edit/update/delete (share fan-out is a follow-up). +The master password is prompted per session and never leaves this process. +`) +} + +// --- flag helpers (stdlib only, minimal) --- + +func popFlag(args []string, name string) (string, []string) { + out := make([]string, 0, len(args)) + val := "" + for i := 0; i < len(args); i++ { + if args[i] == name && i+1 < len(args) { + val = args[i+1] + i++ + continue + } + if strings.HasPrefix(args[i], name+"=") { + val = strings.TrimPrefix(args[i], name+"=") + continue + } + out = append(out, args[i]) + } + return val, out +} + +func prompt(label string) string { + fmt.Fprint(os.Stderr, label) + r := bufio.NewReader(os.Stdin) + line, _ := r.ReadString('\n') + return strings.TrimRight(line, "\r\n") +} + +func promptSecret(label string) string { + // Read without echo where possible; falls back to a visible read. + fmt.Fprint(os.Stderr, label) + if pw, ok := readPasswordNoEcho(); ok { + fmt.Fprintln(os.Stderr) + return pw + } + r := bufio.NewReader(os.Stdin) + line, _ := r.ReadString('\n') + return strings.TrimRight(line, "\r\n") +} + +// --- human mode --- + +func openHumanSession(masterPassword string) (*client.Client, *dcrypto.UnlockedSuite, error) { + cfg, err := loadConfig() + if err != nil { + return nil, nil, fmt.Errorf("not logged in (run `doriath login`): %w", err) + } + c := client.New(cfg.URL) + c.WithAppPassword(cfg.User, cfg.AppPassword) + + suite, err := c.ActiveSuite() + if err != nil { + return nil, nil, err + } + pem, err := dcrypto.UnwrapPrivateKey(suite.PrivateKey, masterPassword) + if err != nil { + return nil, nil, err + } + key, err := dcrypto.ParsePrivateKey(pem) + if err != nil { + return nil, nil, err + } + // Fast fail on a key/envelope mismatch before touching any secret (§2.2). + if err := dcrypto.PublicKeyMatchesPrivate(suite.Certificate, key); err != nil { + return nil, nil, err + } + return c, &dcrypto.UnlockedSuite{Key: key, Certificate: suite.Certificate}, nil +} + +func cmdList(args []string) error { + output, _ := popFlag(args, "--output") + c, _, err := openHumanSession(promptSecret("Master password: ")) + if err != nil { + return err + } + secrets, err := c.ListSecrets() + if err != nil { + return err + } + if output == "json" { + return emitJSON(secrets) + } + fmt.Printf("%-38s %s\n", "ID", "NAME") + for _, s := range secrets { + fmt.Printf("%-38s %s\n", s.ID, s.Name) + } + return nil +} + +func cmdShow(args []string) error { + output, args := popFlag(args, "--output") + if len(args) < 1 { + return fmt.Errorf("usage: doriath show ") + } + c, session, err := openHumanSession(promptSecret("Master password: ")) + if err != nil { + return err + } + s, err := c.GetSecret(args[0]) + if err != nil { + return err + } + fields := decryptSecret(s, session) + if output == "json" { + return emitJSON(fields) + } + for k, v := range fields { + fmt.Printf("%-10s %s\n", k+":", v) + } + return nil +} + +func cmdGet(args []string) error { + if len(args) < 2 { + return fmt.Errorf("usage: doriath get ") + } + c, session, err := openHumanSession(promptSecret("Master password: ")) + if err != nil { + return err + } + s, err := c.GetSecret(args[0]) + if err != nil { + return err + } + fields := decryptSecret(s, session) + v, ok := fields[args[1]] + if !ok { + return fmt.Errorf("no such field %q (have: name, url, key, login)", args[1]) + } + fmt.Println(v) + return nil +} + +// decryptSecret decrypts a secret's ciphertext fields IN PROCESS. +func decryptSecret(s *client.Secret, session *dcrypto.UnlockedSuite) map[string]string { + out := map[string]string{"id": s.ID, "name": s.Name, "url": s.URL} + if s.Key != "" { + if v, err := dcrypto.DecryptField(s.Key, session.Key); err == nil { + out["key"] = v + } + } + if s.Login != "" { + if v, err := dcrypto.DecryptField(s.Login, session.Key); err == nil { + out["login"] = v + } + } + return out +} + +func emitJSON(v any) error { + enc := json.NewEncoder(os.Stdout) + enc.SetIndent("", " ") + return enc.Encode(v) +} + +// --- CI mode --- + +func cmdCI(args []string) error { + if len(args) < 1 { + return fmt.Errorf("usage: doriath ci …") + } + switch args[0] { + case "fetch": + return cmdCIFetch(args[1:]) + case "run": + return cmdCIRun(args[1:]) + default: + return fmt.Errorf("unknown ci subcommand %q", args[0]) + } +} + +func cmdCompletion(args []string) error { + shell := "bash" + if len(args) > 0 { + shell = args[0] + } + // A minimal, valid completion script per shell (§1.3). + switch shell { + case "bash": + fmt.Print("complete -W 'login list show get copy ci version completion help' doriath\n") + case "zsh": + fmt.Print("#compdef doriath\ncompadd login list show get copy ci version completion help\n") + case "fish": + fmt.Print("complete -c doriath -a 'login list show get copy ci version completion help'\n") + default: + return fmt.Errorf("unsupported shell %q (bash|zsh|fish)", shell) + } + return nil +} + +func runChild(env []string, cmd []string) error { + if len(cmd) == 0 { + return fmt.Errorf("no command after --") + } + child := exec.Command(cmd[0], cmd[1:]...) + child.Env = append(os.Environ(), env...) + child.Stdin, child.Stdout, child.Stderr = os.Stdin, os.Stdout, os.Stderr + return child.Run() +} diff --git a/cli/term.go b/cli/term.go new file mode 100644 index 000000000..c03d7e1c6 --- /dev/null +++ b/cli/term.go @@ -0,0 +1,35 @@ +package main + +import ( + "bufio" + "os" + "os/exec" + "strings" +) + +// readPasswordNoEcho reads a line from stdin with terminal echo disabled, so the +// master password / app-password never appears on screen. It toggles echo via +// `stty` (present on any POSIX shell) to keep the CLI stdlib-only — no cgo, no +// external Go module, single static binary. Returns ok=false when stdin is not +// an interactive TTY (piped input), so the caller falls back to a plain read. +func readPasswordNoEcho() (string, bool) { + if _, err := exec.LookPath("stty"); err != nil { + return "", false + } + off := exec.Command("stty", "-echo") + off.Stdin = os.Stdin + if err := off.Run(); err != nil { + return "", false + } + defer func() { + on := exec.Command("stty", "echo") + on.Stdin = os.Stdin + _ = on.Run() + }() + + line, err := bufio.NewReader(os.Stdin).ReadString('\n') + if err != nil && line == "" { + return "", false + } + return strings.TrimRight(line, "\r\n"), true +} diff --git a/composer.json b/composer.json index 609d09de3..8579b2942 100644 --- a/composer.json +++ b/composer.json @@ -1,84 +1,89 @@ { - "name": "conductionnl/doriath", - "description": "Encrypted secrets manager for Nextcloud", - "license": "EUPL-1.2", - "authors": [ - { - "name": "Conduction b.v.", - "email": "info@conduction.nl", - "homepage": "https://conduction.nl" - } - ], - "autoload": { - "psr-4": { - "OCA\\Doriath\\": "lib/" - } - }, - "require": { - "php": "^8.3", - "ramsey/uuid": "^4.9", - "web-token/jwt-framework": "^3.4" - }, - "require-dev": { - "cyclonedx/cyclonedx-php-composer": "^6.2", - "edgedesign/phpqa": "^1.27", - "nextcloud/coding-standard": "^1.4", - "nextcloud/ocp": "^31.0", - "phpcsstandards/phpcsextra": "^1.4", - "phpmd/phpmd": "^2.15", - "phpmetrics/phpmetrics": "^2.8", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^10.5", - "roave/security-advisories": "dev-latest", - "twig/twig": "^3.27.0", - "squizlabs/php_codesniffer": "^3.9", - "vimeo/psalm": "^5.26" - }, - "scripts": { - "lint": "find . -name \\*.php -not -path './vendor/*' -not -path './build/*' -print0 | xargs -0 -n1 php -l", - "cs:check": "./vendor/bin/phpcs --standard=phpcs.xml", - "cs:fix": "./vendor/bin/phpcbf --standard=phpcs.xml", - "phpcs": "./vendor/bin/phpcs --standard=phpcs.xml", - "phpcs:fix": "./vendor/bin/phpcbf --standard=phpcs.xml", - "phpcs:output": "./vendor/bin/phpcs --standard=phpcs.xml --report=json lib/ 2>/dev/null | tail -1 > phpcs-output.json", - "phpmd": "phpmd lib text phpmd.xml || echo 'PHPMD not installed, skipping...'", - "phpmetrics": "./vendor/bin/phpmetrics --report-html=phpmetrics lib/", - "psalm": "./vendor/bin/psalm --threads=1 --no-cache || echo 'Psalm not installed, skipping...'", - "phpstan": "./vendor/bin/phpstan analyse --memory-limit=1G || echo 'PHPStan not installed, skipping...'", - "test:unit": "./vendor/bin/phpunit --colors=always || echo 'Tests require Nextcloud environment, skipping...'", - "test:all": "./vendor/bin/phpunit --colors=always || echo 'Tests require Nextcloud environment, skipping...'", - "check": "E=0; for CMD in lint phpcs psalm test:unit; do echo; echo \"=== $CMD ===\"; composer $CMD || E=1; done; echo; if [ $E -eq 0 ]; then echo \"ALL CHECKS PASSED\"; else echo \"SOME CHECKS FAILED (see above)\"; fi; exit $E", - "check:full": "E=0; for CMD in lint phpcs psalm phpstan test:all; do echo; echo \"=== $CMD ===\"; composer $CMD || E=1; done; echo; if [ $E -eq 0 ]; then echo \"ALL CHECKS PASSED\"; else echo \"SOME CHECKS FAILED (see above)\"; fi; exit $E", - "check:strict": "E=0; for CMD in lint phpcs phpmd psalm phpstan test:all; do echo; echo \"=== $CMD ===\"; composer $CMD || E=1; done; echo; if [ $E -eq 0 ]; then echo \"ALL CHECKS PASSED\"; else echo \"SOME CHECKS FAILED (see above)\"; fi; exit $E", - "fix": [ - "@cs:fix" - ], - "phpqa": "./vendor/bin/phpqa --report --analyzedDirs lib --buildDir phpqa", - "phpqa:full": "./vendor/bin/phpqa --report --analyzedDirs lib --buildDir phpqa --tools phpcs:0,phpmd:0,phploc:0,phpmetrics,phpcpd:0,parallel-lint:0", - "phpqa:ci": "./vendor/bin/phpqa --report --analyzedDirs lib --buildDir phpqa --tools phpcs,phpmd,phploc,phpmetrics,phpcpd,parallel-lint", - "qa:check": [ - "@phpqa" - ], - "qa:full": [ - "@phpqa:full" - ], - "test:coverage": "./vendor/bin/phpunit --coverage-html=coverage/html --coverage-clover=coverage/clover.xml --colors=always", - "quality:score": [ - "@quality:phpcs-score", - "@quality:phpmd-score", - "@quality:psalm-score", - "@quality:phpstan-score" - ] - }, - "config": { - "allow-plugins": { - "dealerdirect/phpcodesniffer-composer-installer": true, - "cyclonedx/cyclonedx-php-composer": true - }, - "optimize-autoloader": true, - "sort-packages": true, - "platform": { - "php": "8.3" - } - } + "name": "conductionnl/doriath", + "description": "Encrypted secrets manager for Nextcloud", + "license": "EUPL-1.2", + "authors": [ + { + "name": "Conduction b.v.", + "email": "info@conduction.nl", + "homepage": "https://conduction.nl" + } + ], + "autoload": { + "psr-4": { + "OCA\\Doriath\\": "lib/" + } + }, + "require": { + "php": "^8.3", + "phpseclib/phpseclib": "^3.0", + "ramsey/uuid": "^4.9", + "web-token/jwt-library": "^3.4.10" + }, + "require-dev": { + "conduction/coding-standard": "^1.0", + "conduction/hydra-gates": "^1.0", + "cyclonedx/cyclonedx-php-composer": "^6.2", + "edgedesign/phpqa": "^1.27", + "nextcloud/ocp": "^34.0", + "phpcsstandards/phpcsextra": "^1.4", + "phpmd/phpmd": "^2.15", + "phpmetrics/phpmetrics": "^2.8", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", + "roave/security-advisories": "dev-latest", + "squizlabs/php_codesniffer": "^4.0", + "twig/twig": "^3.27.0", + "vimeo/psalm": "^5.26" + }, + "scripts": { + "lint": "find . -name \\*.php -not -path './vendor/*' -not -path './build/*' -print0 | xargs -0 -n1 php -l", + "cs:check": "php-cs-fixer fix --dry-run --diff", + "cs:fix": "php-cs-fixer fix", + "phpcs": "./vendor/bin/phpcs --standard=phpcs.xml", + "phpcs:fix": "./vendor/bin/phpcbf --standard=phpcs.xml", + "phpcs:output": "./vendor/bin/phpcs --standard=phpcs.xml --report=json lib/ 2>/dev/null | tail -1 > phpcs-output.json", + "phpmd": "E=0; ./vendor/bin/phpmd lib text phpmd.xml --exclude '*/lib/Db/*' || E=$?; ./vendor/bin/phpmd lib/Db text phpmd-db.xml || E=$?; ./vendor/bin/phpmd lib text vendor/conduction/hydra-gates/quality-config/phpmd-unusedparams.xml || E=$?; exit $E", + "phpmetrics": "./vendor/bin/phpmetrics --report-html=phpmetrics lib/", + "psalm": "./vendor/bin/psalm --threads=1 --no-cache", + "phpstan": "./vendor/bin/phpstan analyse --memory-limit=1G", + "test:unit": "./vendor/bin/phpunit --colors=always --no-coverage", + "test:all": "./vendor/bin/phpunit --colors=always --no-coverage", + "check": "E=0; for CMD in lint phpcs psalm test:unit; do echo; echo \"=== $CMD ===\"; composer $CMD || E=1; done; echo; if [ $E -eq 0 ]; then echo \"ALL CHECKS PASSED\"; else echo \"SOME CHECKS FAILED (see above)\"; fi; exit $E", + "check:full": "E=0; for CMD in lint phpcs psalm phpstan test:all; do echo; echo \"=== $CMD ===\"; composer $CMD || E=1; done; echo; if [ $E -eq 0 ]; then echo \"ALL CHECKS PASSED\"; else echo \"SOME CHECKS FAILED (see above)\"; fi; exit $E", + "check:strict": "E=0; for CMD in lint phpcs phpmd psalm phpstan test:all; do echo; echo \"=== $CMD ===\"; composer $CMD || E=1; done; echo; if [ $E -eq 0 ]; then echo \"ALL CHECKS PASSED\"; else echo \"SOME CHECKS FAILED (see above)\"; fi; exit $E", + "fix": [ + "@cs:fix" + ], + "phpqa": "./vendor/bin/phpqa --report --analyzedDirs lib --buildDir phpqa", + "phpqa:full": "./vendor/bin/phpqa --report --analyzedDirs lib --buildDir phpqa --tools phpcs:0,phpmd:0,phploc:0,phpmetrics,phpcpd:0,parallel-lint:0", + "phpqa:ci": "./vendor/bin/phpqa --report --analyzedDirs lib --buildDir phpqa --tools phpcs,phpmd,phploc,phpmetrics,phpcpd,parallel-lint", + "qa:check": [ + "@phpqa" + ], + "qa:full": [ + "@phpqa:full" + ], + "test:coverage": "./vendor/bin/phpunit --coverage-html=coverage/html --coverage-clover=coverage/clover.xml --colors=always", + "quality:score": [ + "@quality:phpcs-score", + "@quality:phpmd-score", + "@quality:psalm-score", + "@quality:phpstan-score" + ], + "post-install-cmd": [ + "git config core.hooksPath .githooks || true" + ] + }, + "config": { + "allow-plugins": { + "dealerdirect/phpcodesniffer-composer-installer": true, + "cyclonedx/cyclonedx-php-composer": true + }, + "optimize-autoloader": true, + "sort-packages": true, + "platform": { + "php": "8.3" + } + } } diff --git a/composer.lock b/composer.lock index 2c2ac599a..22699ab15 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "bab65e01113035e8c7a1d34b570b24c0", + "content-hash": "961992cb09e3b051339639567a5cfad7", "packages": [ { "name": "brick/math", @@ -135,18 +135,68 @@ }, "time": "2025-09-24T15:06:41+00:00" }, + { + "name": "paragonie/random_compat", + "version": "v9.99.100", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", + "shasum": "" + }, + "require": { + "php": ">= 7" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "polyfill", + "pseudorandom", + "random" + ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/random_compat/issues", + "source": "https://github.com/paragonie/random_compat" + }, + "time": "2020-10-15T08:29:30+00:00" + }, { "name": "paragonie/sodium_compat", - "version": "v2.5.0", + "version": "v2.5.1", "source": { "type": "git", "url": "https://github.com/paragonie/sodium_compat.git", - "reference": "4714da6efdc782c06690bc72ce34fae7941c2d9f" + "reference": "e4d4933af9463a96a1a3cbaeb94327b90e3350ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/4714da6efdc782c06690bc72ce34fae7941c2d9f", - "reference": "4714da6efdc782c06690bc72ce34fae7941c2d9f", + "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/e4d4933af9463a96a1a3cbaeb94327b90e3350ca", + "reference": "e4d4933af9463a96a1a3cbaeb94327b90e3350ca", "shasum": "" }, "require": { @@ -227,9 +277,119 @@ ], "support": { "issues": "https://github.com/paragonie/sodium_compat/issues", - "source": "https://github.com/paragonie/sodium_compat/tree/v2.5.0" + "source": "https://github.com/paragonie/sodium_compat/tree/v2.5.1" + }, + "time": "2026-08-18T15:39:41+00:00" + }, + { + "name": "phpseclib/phpseclib", + "version": "3.0.56", + "source": { + "type": "git", + "url": "https://github.com/phpseclib/phpseclib.git", + "reference": "7adbbe38cde25e2df2116dbf2673c407e24fa305" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/7adbbe38cde25e2df2116dbf2673c407e24fa305", + "reference": "7adbbe38cde25e2df2116dbf2673c407e24fa305", + "shasum": "" + }, + "require": { + "paragonie/constant_time_encoding": "^1|^2|^3", + "paragonie/random_compat": "^1.4|^2.0|^9.99.99", + "php": ">=5.6.1" + }, + "require-dev": { + "phpunit/phpunit": "*" + }, + "suggest": { + "ext-dom": "Install the DOM extension to load XML formatted public keys.", + "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", + "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", + "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", + "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." + }, + "type": "library", + "autoload": { + "files": [ + "phpseclib/bootstrap.php" + ], + "psr-4": { + "phpseclib3\\": "phpseclib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jim Wigginton", + "email": "terrafrost@php.net", + "role": "Lead Developer" + }, + { + "name": "Patrick Monnerat", + "email": "pm@datasphere.ch", + "role": "Developer" + }, + { + "name": "Andreas Fischer", + "email": "bantu@phpbb.com", + "role": "Developer" + }, + { + "name": "Hans-Jürgen Petrich", + "email": "petrich@tronic-media.com", + "role": "Developer" + }, + { + "name": "Graham Campbell", + "email": "graham@alt-three.com", + "role": "Developer" + } + ], + "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", + "homepage": "http://phpseclib.sourceforge.net", + "keywords": [ + "BigInteger", + "aes", + "asn.1", + "asn1", + "blowfish", + "crypto", + "cryptography", + "encryption", + "rsa", + "security", + "sftp", + "signature", + "signing", + "ssh", + "twofish", + "x.509", + "x509" + ], + "support": { + "issues": "https://github.com/phpseclib/phpseclib/issues", + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.56" }, - "time": "2025-12-30T16:12:18+00:00" + "funding": [ + { + "url": "https://github.com/terrafrost", + "type": "github" + }, + { + "url": "https://www.patreon.com/phpseclib", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib", + "type": "tidelift" + } + ], + "time": "2026-08-03T04:36:50+00:00" }, { "name": "psr/cache", @@ -381,56 +541,6 @@ }, "time": "2021-11-05T16:47:00+00:00" }, - { - "name": "psr/event-dispatcher", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/event-dispatcher.git", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\EventDispatcher\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Standard interfaces for event handling.", - "keywords": [ - "events", - "psr", - "psr-14" - ], - "support": { - "issues": "https://github.com/php-fig/event-dispatcher/issues", - "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" - }, - "time": "2019-01-08T18:20:26+00:00" - }, { "name": "psr/http-client", "version": "1.0.3", @@ -719,20 +829,20 @@ }, { "name": "ramsey/uuid", - "version": "4.9.2", + "version": "4.9.3", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "8429c78ca35a09f27565311b98101e2826affde0" + "reference": "1df15849d00943a67d677dc9cfd80795f038c9f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/8429c78ca35a09f27565311b98101e2826affde0", - "reference": "8429c78ca35a09f27565311b98101e2826affde0", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/1df15849d00943a67d677dc9cfd80795f038c9f8", + "reference": "1df15849d00943a67d677dc9cfd80795f038c9f8", "shasum": "" }, "require": { - "brick/math": "^0.8.16 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14", + "brick/math": ">=0.8.16 <=0.18", "php": "^8.0", "ramsey/collection": "^1.2 || ^2.0" }, @@ -791,123 +901,46 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.9.2" - }, - "time": "2025-12-14T04:43:48+00:00" - }, - { - "name": "spomky-labs/aes-key-wrap", - "version": "v7.0.0", - "source": { - "type": "git", - "url": "https://github.com/Spomky-Labs/aes-key-wrap.git", - "reference": "fbeb834b1f83aa8fbdfbd4c12124f71d4c1606ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Spomky-Labs/aes-key-wrap/zipball/fbeb834b1f83aa8fbdfbd4c12124f71d4c1606ae", - "reference": "fbeb834b1f83aa8fbdfbd4c12124f71d4c1606ae", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "ext-openssl": "*", - "php": ">=8.0" - }, - "require-dev": { - "infection/infection": "^0.25.4", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-beberlei-assert": "^1.0", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.0", - "rector/rector": "^0.12.5", - "symplify/easy-coding-standard": "^10.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "AESKW\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Florent Morselli", - "homepage": "https://github.com/Spomky-Labs/aes-key-wrap/contributors" - } - ], - "description": "AES Key Wrap for PHP.", - "homepage": "https://github.com/Spomky-Labs/aes-key-wrap", - "keywords": [ - "A128KW", - "A192KW", - "A256KW", - "RFC3394", - "RFC5649", - "aes", - "key", - "padding", - "wrap" - ], - "support": { - "issues": "https://github.com/Spomky-Labs/aes-key-wrap/issues", - "source": "https://github.com/Spomky-Labs/aes-key-wrap/tree/v7.0.0" + "source": "https://github.com/ramsey/uuid/tree/4.9.3" }, - "funding": [ - { - "url": "https://github.com/Spomky", - "type": "github" - }, - { - "url": "https://www.patreon.com/FlorentMorselli", - "type": "patreon" - } - ], - "time": "2021-12-08T20:36:59+00:00" + "time": "2026-06-18T03:57:49+00:00" }, { "name": "spomky-labs/pki-framework", - "version": "1.4.2", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/Spomky-Labs/pki-framework.git", - "reference": "aa576cbd07128075bef97ac2f8af9854e67513d8" + "reference": "e0d61661962560c1cedfef02b51b431e720aae78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Spomky-Labs/pki-framework/zipball/aa576cbd07128075bef97ac2f8af9854e67513d8", - "reference": "aa576cbd07128075bef97ac2f8af9854e67513d8", + "url": "https://api.github.com/repos/Spomky-Labs/pki-framework/zipball/e0d61661962560c1cedfef02b51b431e720aae78", + "reference": "e0d61661962560c1cedfef02b51b431e720aae78", "shasum": "" }, "require": { - "brick/math": "^0.10|^0.11|^0.12|^0.13|^0.14|^0.15|^0.16|^0.17", + "brick/math": "^0.10|^0.11|^0.12|^0.13|^0.14|^0.15|^0.16|^0.17|^0.18", "ext-mbstring": "*", - "php": ">=8.1", - "psr/clock": "^1.0" + "php": ">=8.1" }, "require-dev": { "ekino/phpstan-banned-code": "^1.0|^2.0|^3.0", "ext-gmp": "*", "ext-openssl": "*", - "infection/infection": "^0.28|^0.29|^0.31|^0.32", + "infection/infection": "^0.28|^0.29|^0.31", "php-parallel-lint/php-parallel-lint": "^1.3", "phpstan/extension-installer": "^1.3|^2.0", "phpstan/phpstan": "^1.8|^2.0", "phpstan/phpstan-deprecation-rules": "^1.0|^2.0", "phpstan/phpstan-phpunit": "^1.1|^2.0", "phpstan/phpstan-strict-rules": "^1.3|^2.0", - "phpunit/phpunit": "^10.1|^11.0|^12.0|^13.0", + "phpunit/phpunit": "^10.1|^11.0|^12.0", "rector/rector": "^1.0|^2.0", "roave/security-advisories": "dev-latest", "symfony/string": "^6.4|^7.0|^8.0", "symfony/var-dumper": "^6.4|^7.0|^8.0", - "symplify/easy-coding-standard": "^12.0|^13.0" + "symplify/easy-coding-standard": "^12.0 || ^13.0" }, "suggest": { "ext-bcmath": "For better performance (or GMP)", @@ -967,7 +1000,7 @@ ], "support": { "issues": "https://github.com/Spomky-Labs/pki-framework/issues", - "source": "https://github.com/Spomky-Labs/pki-framework/tree/1.4.2" + "source": "https://github.com/Spomky-Labs/pki-framework/tree/1.5.0" }, "funding": [ { @@ -979,43 +1012,56 @@ "type": "patreon" } ], - "time": "2026-03-23T22:56:56+00:00" + "time": "2026-07-16T10:28:45+00:00" }, { - "name": "symfony/config", - "version": "v7.4.10", + "name": "symfony/console", + "version": "v7.4.16", "source": { "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "d91b6c7cd2a8c9a9c2b8d26c8f5ed48edf99ef57" + "url": "https://github.com/symfony/console.git", + "reference": "f4c69c9aed03abf933b294257d618bdd9b30a06d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/d91b6c7cd2a8c9a9c2b8d26c8f5ed48edf99ef57", - "reference": "d91b6c7cd2a8c9a9c2b8d26c8f5ed48edf99ef57", + "url": "https://api.github.com/repos/symfony/console/zipball/f4c69c9aed03abf933b294257d618bdd9b30a06d", + "reference": "f4c69c9aed03abf933b294257d618bdd9b30a06d", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/filesystem": "^7.1|^8.0", - "symfony/polyfill-ctype": "~1.8" + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^7.2|^8.0" }, "conflict": { - "symfony/finder": "<6.4", - "symfony/service-contracts": "<2.5" + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", "symfony/event-dispatcher": "^6.4|^7.0|^8.0", - "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", "symfony/messenger": "^6.4|^7.0|^8.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^6.4|^7.0|^8.0" + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Config\\": "" + "Symfony\\Component\\Console\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -1035,10 +1081,16 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", + "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], "support": { - "source": "https://github.com/symfony/config/tree/v7.4.10" + "source": "https://github.com/symfony/console/tree/v7.4.16" }, "funding": [ { @@ -1058,59 +1110,38 @@ "type": "tidelift" } ], - "time": "2026-05-03T14:20:49+00:00" + "time": "2026-07-31T12:37:14+00:00" }, { - "name": "symfony/console", - "version": "v7.4.13", + "name": "symfony/deprecation-contracts", + "version": "v3.7.1", "source": { "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "85095d2573eaefaf35e40b9513a9bf09f72cd217" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "f3202fa1b5097b0af062dc978b32ecf63404e31d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/85095d2573eaefaf35e40b9513a9bf09f72cd217", - "reference": "85095d2573eaefaf35e40b9513a9bf09f72cd217", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/f3202fa1b5097b0af062dc978b32ecf63404e31d", + "reference": "f3202fa1b5097b0af062dc978b32ecf63404e31d", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^7.2|^8.0" - }, - "conflict": { - "symfony/dependency-injection": "<6.4", - "symfony/dotenv": "<6.4", - "symfony/event-dispatcher": "<6.4", - "symfony/lock": "<6.4", - "symfony/process": "<6.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0|^8.0", - "symfony/dependency-injection": "^6.4|^7.0|^8.0", - "symfony/event-dispatcher": "^6.4|^7.0|^8.0", - "symfony/http-foundation": "^6.4|^7.0|^8.0", - "symfony/http-kernel": "^6.4|^7.0|^8.0", - "symfony/lock": "^6.4|^7.0|^8.0", - "symfony/messenger": "^6.4|^7.0|^8.0", - "symfony/process": "^6.4|^7.0|^8.0", - "symfony/stopwatch": "^6.4|^7.0|^8.0", - "symfony/var-dumper": "^6.4|^7.0|^8.0" + "php": ">=8.1" }, "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" }, - "exclude-from-classmap": [ - "/Tests/" + "branch-alias": { + "dev-main": "3.7-dev" + } + }, + "autoload": { + "files": [ + "function.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1119,24 +1150,18 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Eases the creation of beautiful and testable command line interfaces", + "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", - "keywords": [ - "cli", - "command-line", - "console", - "terminal" - ], "support": { - "source": "https://github.com/symfony/console/tree/v7.4.13" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.7.1" }, "funding": [ { @@ -1156,48 +1181,62 @@ "type": "tidelift" } ], - "time": "2026-05-24T08:56:14+00:00" + "time": "2026-06-05T06:23:12+00:00" }, { - "name": "symfony/dependency-injection", - "version": "v7.4.13", + "name": "symfony/http-client", + "version": "v7.4.15", "source": { "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "f299e20ce983be6c0744952533c6dfeaaa1448e2" + "url": "https://github.com/symfony/http-client.git", + "reference": "817bb83ef06717f67ab72a3f03e3b63fbe138de1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f299e20ce983be6c0744952533c6dfeaaa1448e2", - "reference": "f299e20ce983be6c0744952533c6dfeaaa1448e2", + "url": "https://api.github.com/repos/symfony/http-client/zipball/817bb83ef06717f67ab72a3f03e3b63fbe138de1", + "reference": "817bb83ef06717f67ab72a3f03e3b63fbe138de1", "shasum": "" }, "require": { "php": ">=8.2", - "psr/container": "^1.1|^2.0", + "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/service-contracts": "^3.6", - "symfony/var-exporter": "^6.4.20|^7.2.5|^8.0" + "symfony/http-client-contracts": "~3.4.4|^3.5.2", + "symfony/polyfill-php83": "^1.29", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "ext-psr": "<1.1|>=2", - "symfony/config": "<6.4", - "symfony/finder": "<6.4", - "symfony/yaml": "<6.4" + "amphp/amp": "<2.5", + "amphp/socket": "<1.1", + "php-http/discovery": "<1.15", + "symfony/http-foundation": "<6.4" }, "provide": { - "psr/container-implementation": "1.1|2.0", - "symfony/service-implementation": "1.1|2.0|3.0" + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "1.0", + "symfony/http-client-implementation": "3.0" }, "require-dev": { - "symfony/config": "^6.4|^7.0|^8.0", - "symfony/expression-language": "^6.4|^7.0|^8.0", - "symfony/yaml": "^6.4|^7.0|^8.0" + "amphp/http-client": "^4.2.1|^5.0", + "amphp/http-tunnel": "^1.0|^2.0", + "guzzlehttp/promises": "^1.4|^2.0", + "nyholm/psr7": "^1.0", + "php-http/httplug": "^1.0|^2.0", + "psr/http-client": "^1.0", + "symfony/amphp-http-client-meta": "^1.0|^2.0", + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\DependencyInjection\\": "" + "Symfony\\Component\\HttpClient\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -1209,18 +1248,21 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Allows you to standardize and centralize the way objects are constructed in your application", + "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", "homepage": "https://symfony.com", + "keywords": [ + "http" + ], "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v7.4.13" + "source": "https://github.com/symfony/http-client/tree/v7.4.15" }, "funding": [ { @@ -1240,20 +1282,20 @@ "type": "tidelift" } ], - "time": "2026-05-20T14:07:29+00:00" + "time": "2026-07-29T07:12:33+00:00" }, { - "name": "symfony/deprecation-contracts", - "version": "v3.7.0", + "name": "symfony/http-client-contracts", + "version": "v3.7.1", "source": { "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "50f59d1f3ca46d41ac911f97a78626b6756af35b" + "url": "https://github.com/symfony/http-client-contracts.git", + "reference": "41fc42d276aeff21192465331ebbab7d83a743c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/50f59d1f3ca46d41ac911f97a78626b6756af35b", - "reference": "50f59d1f3ca46d41ac911f97a78626b6756af35b", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/41fc42d276aeff21192465331ebbab7d83a743c0", + "reference": "41fc42d276aeff21192465331ebbab7d83a743c0", "shasum": "" }, "require": { @@ -1270,8 +1312,11 @@ } }, "autoload": { - "files": [ - "function.php" + "psr-4": { + "Symfony\\Contracts\\HttpClient\\": "" + }, + "exclude-from-classmap": [ + "/Test/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1288,10 +1333,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "A generic function and convention to trigger deprecation notices", + "description": "Generic abstractions related to HTTP clients", "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.7.0" + "source": "https://github.com/symfony/http-client-contracts/tree/v3.7.1" }, "funding": [ { @@ -1311,50 +1364,45 @@ "type": "tidelift" } ], - "time": "2026-04-13T15:52:40+00:00" + "time": "2026-06-05T06:23:12+00:00" }, { - "name": "symfony/error-handler", - "version": "v7.4.8", + "name": "symfony/polyfill-ctype", + "version": "v1.37.0", "source": { "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "8dd79d8af777ee6cba2fd4d98da6ffb839f3c0fa" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "141046a8f9477948ff284fa65be2095baafb94f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/8dd79d8af777ee6cba2fd4d98da6ffb839f3c0fa", - "reference": "8dd79d8af777ee6cba2fd4d98da6ffb839f3c0fa", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/141046a8f9477948ff284fa65be2095baafb94f2", + "reference": "141046a8f9477948ff284fa65be2095baafb94f2", "shasum": "" }, "require": { - "php": ">=8.2", - "psr/log": "^1|^2|^3", - "symfony/polyfill-php85": "^1.32", - "symfony/var-dumper": "^6.4|^7.0|^8.0" + "php": ">=7.2" }, - "conflict": { - "symfony/deprecation-contracts": "<2.5", - "symfony/http-kernel": "<6.4" + "provide": { + "ext-ctype": "*" }, - "require-dev": { - "symfony/console": "^6.4|^7.0|^8.0", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-kernel": "^6.4|^7.0|^8.0", - "symfony/serializer": "^6.4|^7.0|^8.0", - "symfony/webpack-encore-bundle": "^1.0|^2.0" + "suggest": { + "ext-ctype": "For best performance" }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Polyfill\\Ctype\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1362,18 +1410,24 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools to manage errors and ease debugging PHP code", + "description": "Symfony polyfill for ctype functions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.4.8" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.37.0" }, "funding": [ { @@ -1393,53 +1447,42 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-04-10T16:19:22+00:00" }, { - "name": "symfony/event-dispatcher", - "version": "v7.4.9", + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.41.0", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "e4a2e29753c7801f7a8340e066cfa788f3bc8101" + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "bb899c1db0aa8127dc3afe8cda4a67eb24915f8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e4a2e29753c7801f7a8340e066cfa788f3bc8101", - "reference": "e4a2e29753c7801f7a8340e066cfa788f3bc8101", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/bb899c1db0aa8127dc3afe8cda4a67eb24915f8d", + "reference": "bb899c1db0aa8127dc3afe8cda4a67eb24915f8d", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/event-dispatcher-contracts": "^2.5|^3" - }, - "conflict": { - "symfony/dependency-injection": "<6.4", - "symfony/service-contracts": "<2.5" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" + "php": ">=7.2" }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0|^8.0", - "symfony/dependency-injection": "^6.4|^7.0|^8.0", - "symfony/error-handler": "^6.4|^7.0|^8.0", - "symfony/expression-language": "^6.4|^7.0|^8.0", - "symfony/framework-bundle": "^6.4|^7.0|^8.0", - "symfony/http-foundation": "^6.4|^7.0|^8.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^6.4|^7.0|^8.0" + "suggest": { + "ext-intl": "For best performance" }, "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1447,18 +1490,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "description": "Symfony polyfill for intl's grapheme_* functions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.9" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.41.0" }, "funding": [ { @@ -1478,40 +1529,45 @@ "type": "tidelift" } ], - "time": "2026-04-18T13:18:21+00:00" + "time": "2026-07-28T08:25:59+00:00" }, { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.7.0", + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.38.0", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "ccba7060602b7fed0b03c85bf025257f76d9ef32" + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/ccba7060602b7fed0b03c85bf025257f76d9ef32", - "reference": "ccba7060602b7fed0b03c85bf025257f76d9ef32", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/2d446c214bdbe5b71bde5011b060a05fece3ae6b", + "reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/event-dispatcher": "^1" + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" }, "type": "library", "extra": { "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.7-dev" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1527,18 +1583,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to dispatching event", + "description": "Symfony polyfill for intl's Normalizer class and related functions", "homepage": "https://symfony.com", "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.7.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.38.0" }, "funding": [ { @@ -1558,38 +1614,46 @@ "type": "tidelift" } ], - "time": "2026-01-05T13:30:16+00:00" + "time": "2026-05-25T13:48:31+00:00" }, { - "name": "symfony/filesystem", - "version": "v7.4.11", + "name": "symfony/polyfill-mbstring", + "version": "v1.38.2", "source": { "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "d721ea61b4a5fba8c5b6e7c1feda19efea144b50" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/d721ea61b4a5fba8c5b6e7c1feda19efea144b50", - "reference": "d721ea61b4a5fba8c5b6e7c1feda19efea144b50", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6", + "reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8" + "ext-iconv": "*", + "php": ">=7.2" }, - "require-dev": { - "symfony/process": "^6.4|^7.0|^8.0" + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" }, "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Polyfill\\Mbstring\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1597,18 +1661,25 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides basic utilities for the filesystem", + "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.4.11" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.38.2" }, "funding": [ { @@ -1628,65 +1699,41 @@ "type": "tidelift" } ], - "time": "2026-05-11T16:38:44+00:00" + "time": "2026-05-27T06:59:30+00:00" }, { - "name": "symfony/http-client", - "version": "v7.4.13", + "name": "symfony/polyfill-php83", + "version": "v1.41.0", "source": { "type": "git", - "url": "https://github.com/symfony/http-client.git", - "reference": "e8a112b8415707265a7e614278136a9d92989a6a" + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "5ea99087fb99c273a9b9236ed4c31e78b16103c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/e8a112b8415707265a7e614278136a9d92989a6a", - "reference": "e8a112b8415707265a7e614278136a9d92989a6a", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/5ea99087fb99c273a9b9236ed4c31e78b16103c6", + "reference": "5ea99087fb99c273a9b9236ed4c31e78b16103c6", "shasum": "" }, "require": { - "php": ">=8.2", - "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-client-contracts": "~3.4.4|^3.5.2", - "symfony/polyfill-php83": "^1.29", - "symfony/service-contracts": "^2.5|^3" - }, - "conflict": { - "amphp/amp": "<2.5", - "amphp/socket": "<1.1", - "php-http/discovery": "<1.15", - "symfony/http-foundation": "<6.4" - }, - "provide": { - "php-http/async-client-implementation": "*", - "php-http/client-implementation": "*", - "psr/http-client-implementation": "1.0", - "symfony/http-client-implementation": "3.0" - }, - "require-dev": { - "amphp/http-client": "^4.2.1|^5.0", - "amphp/http-tunnel": "^1.0|^2.0", - "guzzlehttp/promises": "^1.4|^2.0", - "nyholm/psr7": "^1.0", - "php-http/httplug": "^1.0|^2.0", - "psr/http-client": "^1.0", - "symfony/amphp-http-client-meta": "^1.0|^2.0", - "symfony/cache": "^6.4|^7.0|^8.0", - "symfony/dependency-injection": "^6.4|^7.0|^8.0", - "symfony/http-kernel": "^6.4|^7.0|^8.0", - "symfony/messenger": "^6.4|^7.0|^8.0", - "symfony/process": "^6.4|^7.0|^8.0", - "symfony/rate-limiter": "^6.4|^7.0|^8.0", - "symfony/stopwatch": "^6.4|^7.0|^8.0" + "php": ">=7.2" }, "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\HttpClient\\": "" + "Symfony\\Polyfill\\Php83\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1703,13 +1750,16 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ - "http" + "compatibility", + "polyfill", + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v7.4.13" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.41.0" }, "funding": [ { @@ -1729,24 +1779,29 @@ "type": "tidelift" } ], - "time": "2026-05-24T09:57:54+00:00" + "time": "2026-07-01T12:47:55+00:00" }, { - "name": "symfony/http-client-contracts", - "version": "v3.7.0", + "name": "symfony/service-contracts", + "version": "v3.7.1", "source": { "type": "git", - "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "4a2d00c37651c0bdc2b9e1c773487a8bf4edb12d" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "c0a284bab1ed8aa0417e3d69250ab437739563a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/4a2d00c37651c0bdc2b9e1c773487a8bf4edb12d", - "reference": "4a2d00c37651c0bdc2b9e1c773487a8bf4edb12d", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/c0a284bab1ed8aa0417e3d69250ab437739563a0", + "reference": "c0a284bab1ed8aa0417e3d69250ab437739563a0", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" }, "type": "library", "extra": { @@ -1760,7 +1815,7 @@ }, "autoload": { "psr-4": { - "Symfony\\Contracts\\HttpClient\\": "" + "Symfony\\Contracts\\Service\\": "" }, "exclude-from-classmap": [ "/Test/" @@ -1780,7 +1835,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to HTTP clients", + "description": "Generic abstractions related to writing services", "homepage": "https://symfony.com", "keywords": [ "abstractions", @@ -1791,7 +1846,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v3.7.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.7.1" }, "funding": [ { @@ -1811,46 +1866,47 @@ "type": "tidelift" } ], - "time": "2026-03-06T13:17:50+00:00" + "time": "2026-06-16T09:55:08+00:00" }, { - "name": "symfony/http-foundation", - "version": "v7.4.13", + "name": "symfony/string", + "version": "v7.4.15", "source": { "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "bc354f47c62301e990b7874fa662326368508e2c" + "url": "https://github.com/symfony/string.git", + "reference": "e394af32256bf9e7bf80849d95e589167c10097b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/bc354f47c62301e990b7874fa662326368508e2c", - "reference": "bc354f47c62301e990b7874fa662326368508e2c", + "url": "https://api.github.com/repos/symfony/string/zipball/e394af32256bf9e7bf80849d95e589167c10097b", + "reference": "e394af32256bf9e7bf80849d95e589167c10097b", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "^1.1" + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.33", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "doctrine/dbal": "<3.6", - "symfony/cache": "<6.4.12|>=7.0,<7.1.5" + "symfony/translation-contracts": "<2.5" }, "require-dev": { - "doctrine/dbal": "^3.6|^4", - "predis/predis": "^1.1|^2.0", - "symfony/cache": "^6.4.12|^7.1.5|^8.0", - "symfony/clock": "^6.4|^7.0|^8.0", - "symfony/dependency-injection": "^6.4|^7.0|^8.0", - "symfony/expression-language": "^6.4|^7.0|^8.0", - "symfony/http-kernel": "^6.4|^7.0|^8.0", - "symfony/mime": "^6.4|^7.0|^8.0", - "symfony/rate-limiter": "^6.4|^7.0|^8.0" + "symfony/emoji": "^7.1|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" + "Symfony\\Component\\String\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -1862,18 +1918,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Defines an object-oriented layer for the HTTP specification", + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.4.13" + "source": "https://github.com/symfony/string/tree/v7.4.15" }, "funding": [ { @@ -1893,87 +1957,55 @@ "type": "tidelift" } ], - "time": "2026-05-24T11:20:33+00:00" + "time": "2026-07-28T07:33:02+00:00" }, { - "name": "symfony/http-kernel", - "version": "v7.4.13", + "name": "web-token/jwt-library", + "version": "3.4.10", "source": { "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9df847980c436451f4f51d1284491bb4356dd989" + "url": "https://github.com/web-token/jwt-library.git", + "reference": "8c38010d971c2313406fa1376d763cee745a833b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9df847980c436451f4f51d1284491bb4356dd989", - "reference": "9df847980c436451f4f51d1284491bb4356dd989", + "url": "https://api.github.com/repos/web-token/jwt-library/zipball/8c38010d971c2313406fa1376d763cee745a833b", + "reference": "8c38010d971c2313406fa1376d763cee745a833b", "shasum": "" }, "require": { - "php": ">=8.2", - "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^6.4|^7.0|^8.0", - "symfony/event-dispatcher": "^7.3|^8.0", - "symfony/http-foundation": "^7.4|^8.0", - "symfony/polyfill-ctype": "^1.8" + "brick/math": "^0.9|^0.10|^0.11|^0.12", + "ext-json": "*", + "ext-mbstring": "*", + "paragonie/constant_time_encoding": "^2.6|^3.0", + "paragonie/sodium_compat": "^1.20|^2.0", + "php": ">=8.1", + "psr/cache": "^2.0|^3.0", + "psr/clock": "^1.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0", + "spomky-labs/pki-framework": "^1.2.1", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/polyfill-mbstring": "^1.12" }, "conflict": { - "symfony/browser-kit": "<6.4", - "symfony/cache": "<6.4", - "symfony/config": "<6.4", - "symfony/console": "<6.4", - "symfony/dependency-injection": "<6.4", - "symfony/doctrine-bridge": "<6.4", - "symfony/flex": "<2.10", - "symfony/form": "<6.4", - "symfony/http-client": "<6.4", - "symfony/http-client-contracts": "<2.5", - "symfony/mailer": "<6.4", - "symfony/messenger": "<6.4", - "symfony/translation": "<6.4", - "symfony/translation-contracts": "<2.5", - "symfony/twig-bridge": "<6.4", - "symfony/validator": "<6.4", - "symfony/var-dumper": "<6.4", - "twig/twig": "<3.12" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" + "spomky-labs/jose": "*" }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^6.4|^7.0|^8.0", - "symfony/clock": "^6.4|^7.0|^8.0", - "symfony/config": "^6.4|^7.0|^8.0", - "symfony/console": "^6.4|^7.0|^8.0", - "symfony/css-selector": "^6.4|^7.0|^8.0", - "symfony/dependency-injection": "^6.4.1|^7.0.1|^8.0", - "symfony/dom-crawler": "^6.4|^7.0|^8.0", - "symfony/expression-language": "^6.4|^7.0|^8.0", - "symfony/finder": "^6.4|^7.0|^8.0", - "symfony/http-client-contracts": "^2.5|^3", - "symfony/process": "^6.4|^7.0|^8.0", - "symfony/property-access": "^7.1|^8.0", - "symfony/routing": "^6.4|^7.0|^8.0", - "symfony/serializer": "^7.1|^8.0", - "symfony/stopwatch": "^6.4|^7.0|^8.0", - "symfony/translation": "^6.4|^7.0|^8.0", - "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^6.4|^7.0|^8.0", - "symfony/validator": "^6.4|^7.0|^8.0", - "symfony/var-dumper": "^6.4|^7.0|^8.0", - "symfony/var-exporter": "^6.4|^7.0|^8.0", - "twig/twig": "^3.12" + "suggest": { + "ext-bcmath": "GMP or BCMath is highly recommended to improve the library performance", + "ext-gmp": "GMP or BCMath is highly recommended to improve the library performance", + "ext-openssl": "For key management (creation, optimization, etc.) and some algorithms (AES, RSA, ECDSA, etc.)", + "ext-sodium": "Sodium is required for OKP key creation, EdDSA signature algorithm and ECDH-ES key encryption with OKP keys", + "paragonie/sodium_compat": "Sodium is required for OKP key creation, EdDSA signature algorithm and ECDH-ES key encryption with OKP keys", + "spomky-labs/aes-key-wrap": "For all Key Wrapping algorithms (A128KW, A192KW, A256KW, A128GCMKW, A192GCMKW, A256GCMKW, PBES2-HS256+A128KW, PBES2-HS384+A192KW, PBES2-HS512+A256KW...)", + "symfony/http-client": "To enable JKU/X5U support." }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Jose\\Component\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1981,1015 +2013,16 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Florent Morselli", + "homepage": "https://github.com/Spomky" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "All contributors", + "homepage": "https://github.com/web-token/jwt-framework/contributors" } ], - "description": "Provides a structured process for converting a Request into a Response", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.4.13" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-05-27T08:31:43+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.37.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "141046a8f9477948ff284fa65be2095baafb94f2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/141046a8f9477948ff284fa65be2095baafb94f2", - "reference": "141046a8f9477948ff284fa65be2095baafb94f2", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.37.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-04-10T16:19:22+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.38.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "e9247d281d694a5120554d9afaf54e070e88a603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/e9247d281d694a5120554d9afaf54e070e88a603", - "reference": "e9247d281d694a5120554d9afaf54e070e88a603", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's grapheme_* functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.38.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-05-26T05:58:03+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.38.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/2d446c214bdbe5b71bde5011b060a05fece3ae6b", - "reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.38.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-05-25T13:48:31+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.38.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6", - "reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6", - "shasum": "" - }, - "require": { - "ext-iconv": "*", - "php": ">=7.2" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.38.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-05-27T06:59:30+00:00" - }, - { - "name": "symfony/polyfill-php83", - "version": "v1.38.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "796a26abb75ce49f3a84433cd81bf1009d73d5f8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/796a26abb75ce49f3a84433cd81bf1009d73d5f8", - "reference": "796a26abb75ce49f3a84433cd81bf1009d73d5f8", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php83\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.38.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-05-27T06:51:48+00:00" - }, - { - "name": "symfony/polyfill-php85", - "version": "v1.38.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php85.git", - "reference": "ba2ba04f3352cfa2dcbbcb90aee13ed967f505b1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/ba2ba04f3352cfa2dcbbcb90aee13ed967f505b1", - "reference": "ba2ba04f3352cfa2dcbbcb90aee13ed967f505b1", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php85\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.5+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php85/tree/v1.38.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-05-26T02:25:22+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.7.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "d25d82433a80eba6aa0e6c24b61d7370d99e444a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d25d82433a80eba6aa0e6c24b61d7370d99e444a", - "reference": "d25d82433a80eba6aa0e6c24b61d7370d99e444a", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.5|^3" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.7-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.7.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-03-28T09:44:51+00:00" - }, - { - "name": "symfony/string", - "version": "v7.4.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "961683010db3b27ec6ebcd7308e6e1ee8fa7ffde" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/961683010db3b27ec6ebcd7308e6e1ee8fa7ffde", - "reference": "961683010db3b27ec6ebcd7308e6e1ee8fa7ffde", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.33", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.5" - }, - "require-dev": { - "symfony/emoji": "^7.1|^8.0", - "symfony/http-client": "^6.4|^7.0|^8.0", - "symfony/intl": "^6.4|^7.0|^8.0", - "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.4|^7.0|^8.0" - }, - "type": "library", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v7.4.13" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-05-23T15:23:29+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v7.4.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "9510c3966f749a1d1ff0059e1eabef6cc621e7fd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/9510c3966f749a1d1ff0059e1eabef6cc621e7fd", - "reference": "9510c3966f749a1d1ff0059e1eabef6cc621e7fd", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/console": "<6.4" - }, - "require-dev": { - "symfony/console": "^6.4|^7.0|^8.0", - "symfony/http-kernel": "^6.4|^7.0|^8.0", - "symfony/process": "^6.4|^7.0|^8.0", - "symfony/uid": "^6.4|^7.0|^8.0", - "twig/twig": "^3.12" - }, - "bin": [ - "Resources/bin/var-dump-server" - ], - "type": "library", - "autoload": { - "files": [ - "Resources/functions/dump.php" - ], - "psr-4": { - "Symfony\\Component\\VarDumper\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides mechanisms for walking through any arbitrary PHP variable", - "homepage": "https://symfony.com", - "keywords": [ - "debug", - "dump" - ], - "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.4.8" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-03-30T13:44:50+00:00" - }, - { - "name": "symfony/var-exporter", - "version": "v7.4.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-exporter.git", - "reference": "22e03a49c95ef054a43601cd159b222bfab1c701" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/22e03a49c95ef054a43601cd159b222bfab1c701", - "reference": "22e03a49c95ef054a43601cd159b222bfab1c701", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3" - }, - "require-dev": { - "symfony/property-access": "^6.4|^7.0|^8.0", - "symfony/serializer": "^6.4|^7.0|^8.0", - "symfony/var-dumper": "^6.4|^7.0|^8.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\VarExporter\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Allows exporting any serializable PHP data structure to plain PHP code", - "homepage": "https://symfony.com", - "keywords": [ - "clone", - "construct", - "export", - "hydrate", - "instantiate", - "lazy-loading", - "proxy", - "serialize" - ], - "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.4.9" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-04-18T13:18:21+00:00" - }, - { - "name": "web-token/jwt-framework", - "version": "3.4.10", - "source": { - "type": "git", - "url": "https://github.com/web-token/jwt-framework.git", - "reference": "1e231cb4c2630c154be38e6010ff8c0b965bd487" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/web-token/jwt-framework/zipball/1e231cb4c2630c154be38e6010ff8c0b965bd487", - "reference": "1e231cb4c2630c154be38e6010ff8c0b965bd487", - "shasum": "" - }, - "require": { - "brick/math": "^0.9|^0.10|^0.11|^0.12", - "ext-json": "*", - "ext-mbstring": "*", - "ext-openssl": "*", - "ext-sodium": "*", - "paragonie/constant_time_encoding": "^2.6|^3.0", - "paragonie/sodium_compat": "^1.20|^2.0", - "php": ">=8.1", - "psr/cache": "^2.0|^3.0", - "psr/clock": "^1.0", - "psr/event-dispatcher": "^1.0", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0", - "spomky-labs/aes-key-wrap": "^7.0", - "spomky-labs/pki-framework": "^1.2.1", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/polyfill-mbstring": "^1.12" - }, - "conflict": { - "spomky-labs/jose": "*" - }, - "replace": { - "web-token/encryption-pack": "self.version", - "web-token/jwt-bundle": "self.version", - "web-token/jwt-checker": "self.version", - "web-token/jwt-console": "self.version", - "web-token/jwt-core": "self.version", - "web-token/jwt-encryption": "self.version", - "web-token/jwt-encryption-algorithm-aescbc": "self.version", - "web-token/jwt-encryption-algorithm-aesgcm": "self.version", - "web-token/jwt-encryption-algorithm-aesgcmkw": "self.version", - "web-token/jwt-encryption-algorithm-aeskw": "self.version", - "web-token/jwt-encryption-algorithm-dir": "self.version", - "web-token/jwt-encryption-algorithm-ecdh-es": "self.version", - "web-token/jwt-encryption-algorithm-experimental": "self.version", - "web-token/jwt-encryption-algorithm-pbes2": "self.version", - "web-token/jwt-encryption-algorithm-rsa": "self.version", - "web-token/jwt-experimental": "self.version", - "web-token/jwt-key-mgmt": "self.version", - "web-token/jwt-library": "self.version", - "web-token/jwt-nested-token": "self.version", - "web-token/jwt-signature": "self.version", - "web-token/jwt-signature-algorithm-ecdsa": "self.version", - "web-token/jwt-signature-algorithm-eddsa": "self.version", - "web-token/jwt-signature-algorithm-experimental": "self.version", - "web-token/jwt-signature-algorithm-hmac": "self.version", - "web-token/jwt-signature-algorithm-none": "self.version", - "web-token/jwt-signature-algorithm-rsa": "self.version", - "web-token/jwt-signature-pack": "self.version", - "web-token/jwt-util-ecc": "self.version", - "web-token/signature-pack": "self.version" - }, - "require-dev": { - "bjeavons/zxcvbn-php": "^1.3", - "ekino/phpstan-banned-code": "^1.0", - "ext-curl": "*", - "ext-gmp": "*", - "infection/infection": "^0.29", - "matthiasnoback/symfony-config-test": "^5.0", - "nyholm/psr7": "^1.8", - "php-http/mock-client": "^1.5", - "php-parallel-lint/php-parallel-lint": "^1.3", - "phpbench/phpbench": "^1.2", - "phpstan/extension-installer": "^1.3", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.4", - "phpunit/phpunit": "^10.1|^11.0", - "qossmic/deptrac": "^2.0", - "rector/rector": "^1.0", - "roave/security-advisories": "dev-latest", - "symfony/browser-kit": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/framework-bundle": "^5.4|^6.0|^7.0", - "symfony/phpunit-bridge": "^5.4|^6.0|^7.0", - "symfony/serializer": "^5.4|^6.0|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0", - "symfony/yaml": "^5.4|^6.0|^7.0", - "symplify/easy-coding-standard": "^12.0" - }, - "suggest": { - "bjeavons/zxcvbn-php": "Adds key quality check for oct keys.", - "php-http/httplug": "To enable JKU/X5U support.", - "php-http/httplug-bundle": "To enable JKU/X5U support.", - "php-http/message-factory": "To enable JKU/X5U support.", - "spomky-labs/aes-key-wrap": "To enable AES Key Wrap algorithm.", - "symfony/serializer": "Use the Symfony serializer to serialize/unserialize JWS and JWE tokens.", - "symfony/var-dumper": "Used to show data on the debug toolbar." - }, - "type": "symfony-bundle", - "autoload": { - "psr-4": { - "Jose\\": "src/", - "Jose\\Component\\": "src/Library/", - "Jose\\Experimental\\": "src/Experimental/", - "Jose\\Bundle\\JoseFramework\\": "src/Bundle/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Florent Morselli", - "homepage": "https://github.com/Spomky" - }, - { - "name": "All contributors", - "homepage": "https://github.com/web-token/jwt-bundle/contributors" - } - ], - "description": "JSON Object Signing and Encryption library for PHP and Symfony Bundle.", - "homepage": "https://github.com/web-token/jwt-framework", + "description": "JWT library", + "homepage": "https://github.com/web-token", "keywords": [ "JOSE", "JWE", @@ -3009,8 +2042,8 @@ "symfony" ], "support": { - "issues": "https://github.com/web-token/jwt-framework/issues", - "source": "https://github.com/web-token/jwt-framework/tree/3.4.10" + "issues": "https://github.com/web-token/jwt-library/issues", + "source": "https://github.com/web-token/jwt-library/tree/3.4.10" }, "funding": [ { @@ -3483,6 +2516,115 @@ ], "time": "2024-05-06T16:37:16+00:00" }, + { + "name": "conduction/coding-standard", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/ConductionNL/coding-standard.git", + "reference": "a1854f13cb735e46ecd010767593b4d7bc90d974" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ConductionNL/coding-standard/zipball/a1854f13cb735e46ecd010767593b4d7bc90d974", + "reference": "a1854f13cb735e46ecd010767593b4d7bc90d974", + "shasum": "" + }, + "require": { + "nextcloud/coding-standard": "^1.4", + "php": "^8.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Conduction\\CodingStandard\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "EUPL-1.2" + ], + "authors": [ + { + "name": "Conduction", + "homepage": "https://conduction.nl" + } + ], + "description": "Conduction coding standards for the PHP CS Fixer. Extends nextcloud/coding-standard — adds rules, never overrides them.", + "homepage": "https://github.com/ConductionNL/coding-standard", + "keywords": [ + "coding-standard", + "conduction", + "dev", + "nextcloud", + "php-cs-fixer" + ], + "support": { + "docs": "https://docs.conduction.nl/WayOfWork/ci-cd/", + "issues": "https://github.com/ConductionNL/coding-standard/issues", + "source": "https://github.com/ConductionNL/coding-standard/tree/v1.0.0" + }, + "time": "2026-08-12T08:27:21+00:00" + }, + { + "name": "conduction/hydra-gates", + "version": "v1.8.1", + "source": { + "type": "git", + "url": "https://github.com/ConductionNL/.github.git", + "reference": "8e0e9857e54d6c680e157939e78a468e58d3751a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ConductionNL/.github/zipball/8e0e9857e54d6c680e157939e78a468e58d3751a", + "reference": "8e0e9857e54d6c680e157939e78a468e58d3751a", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "bin": [ + "hydra-gates/bin/hydra-gates" + ], + "type": "library", + "extra": { + "hydra-gates": { + "runner": "hydra-gates/scripts/run-hydra-gates.sh", + "helpers": "hydra-gates/scripts/lib", + "schemas": "hydra-gates/scripts/schemas" + } + }, + "autoload": { + "psr-4": { + "OCA\\OpenRegister\\Contract\\": "hydra-gates/contracts/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "EUPL-1.2" + ], + "authors": [ + { + "name": "Conduction", + "homepage": "https://conduction.nl" + } + ], + "description": "Hydra's mechanical quality gates, packaged so any repo can run them against its own diff. The exit code is the failure COUNT.", + "homepage": "https://github.com/ConductionNL/.github/tree/main/hydra-gates", + "keywords": [ + "conduction", + "gates", + "nextcloud", + "quality", + "static-analysis" + ], + "support": { + "docs": "https://github.com/ConductionNL/.github/blob/main/hydra-gates/README.md", + "issues": "https://github.com/ConductionNL/.github/issues", + "source": "https://github.com/ConductionNL/.github/tree/v1.8.1" + }, + "time": "2026-08-20T05:07:22+00:00" + }, { "name": "consolidation/annotated-command", "version": "4.10.5", @@ -3953,16 +3095,16 @@ }, { "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v1.2.0", + "version": "v1.2.1", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/composer-installer.git", - "reference": "845eb62303d2ca9b289ef216356568ccc075ffd1" + "reference": "963f0c67bffde0eac41b56be71ac0e8ba132f0bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/845eb62303d2ca9b289ef216356568ccc075ffd1", - "reference": "845eb62303d2ca9b289ef216356568ccc075ffd1", + "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/963f0c67bffde0eac41b56be71ac0e8ba132f0bd", + "reference": "963f0c67bffde0eac41b56be71ac0e8ba132f0bd", "shasum": "" }, "require": { @@ -4045,7 +3187,7 @@ "type": "thanks_dev" } ], - "time": "2025-11-11T04:32:07+00:00" + "time": "2026-05-06T08:26:05+00:00" }, { "name": "dflydev/dot-access-data", @@ -4499,16 +3641,16 @@ }, { "name": "kubawerlos/php-cs-fixer-custom-fixers", - "version": "v3.36.1", + "version": "v3.37.2", "source": { "type": "git", "url": "https://github.com/kubawerlos/php-cs-fixer-custom-fixers.git", - "reference": "ec9776e80f5ea9bf0d8ec16d662e431bfab19a24" + "reference": "678df979ce743466b42ddb6eea46b3f4c9a7bade" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kubawerlos/php-cs-fixer-custom-fixers/zipball/ec9776e80f5ea9bf0d8ec16d662e431bfab19a24", - "reference": "ec9776e80f5ea9bf0d8ec16d662e431bfab19a24", + "url": "https://api.github.com/repos/kubawerlos/php-cs-fixer-custom-fixers/zipball/678df979ce743466b42ddb6eea46b3f4c9a7bade", + "reference": "678df979ce743466b42ddb6eea46b3f4c9a7bade", "shasum": "" }, "require": { @@ -4518,7 +3660,7 @@ "php": "^7.4 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^9.6.24 || ^10.5.51 || ^11.5.44" + "phpunit/phpunit": "^9.6.34 || ^10.5.63 || ^11.5.55" }, "type": "library", "autoload": { @@ -4539,7 +3681,7 @@ "description": "A set of custom fixers for PHP CS Fixer", "support": { "issues": "https://github.com/kubawerlos/php-cs-fixer-custom-fixers/issues", - "source": "https://github.com/kubawerlos/php-cs-fixer-custom-fixers/tree/v3.36.1" + "source": "https://github.com/kubawerlos/php-cs-fixer-custom-fixers/tree/v3.37.2" }, "funding": [ { @@ -4547,7 +3689,7 @@ "type": "github" } ], - "time": "2026-03-07T11:35:13+00:00" + "time": "2026-05-12T16:22:19+00:00" }, { "name": "league/container", @@ -4744,16 +3886,16 @@ }, { "name": "nextcloud/coding-standard", - "version": "v1.4.0", + "version": "v1.5.0", "source": { "type": "git", "url": "https://github.com/nextcloud/coding-standard.git", - "reference": "8e06808c1423e9208d63d1bd205b9a38bd400011" + "reference": "80547a93236fbb9c783e05f0f0899043851b0dba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nextcloud/coding-standard/zipball/8e06808c1423e9208d63d1bd205b9a38bd400011", - "reference": "8e06808c1423e9208d63d1bd205b9a38bd400011", + "url": "https://api.github.com/repos/nextcloud/coding-standard/zipball/80547a93236fbb9c783e05f0f0899043851b0dba", + "reference": "80547a93236fbb9c783e05f0f0899043851b0dba", "shasum": "" }, "require": { @@ -4783,35 +3925,36 @@ ], "support": { "issues": "https://github.com/nextcloud/coding-standard/issues", - "source": "https://github.com/nextcloud/coding-standard/tree/v1.4.0" + "source": "https://github.com/nextcloud/coding-standard/tree/v1.5.0" }, - "time": "2025-06-19T12:27:27+00:00" + "time": "2026-05-19T18:30:09+00:00" }, { "name": "nextcloud/ocp", - "version": "v31.0.9", + "version": "v34.0.3", "source": { "type": "git", "url": "https://github.com/nextcloud-deps/ocp.git", - "reference": "abd32429d794ede1d92b7b0a88a1070371c907b5" + "reference": "3fb764be792476e4dcf1593101d978fc1dc8ac9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/abd32429d794ede1d92b7b0a88a1070371c907b5", - "reference": "abd32429d794ede1d92b7b0a88a1070371c907b5", + "url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/3fb764be792476e4dcf1593101d978fc1dc8ac9a", + "reference": "3fb764be792476e4dcf1593101d978fc1dc8ac9a", "shasum": "" }, "require": { - "php": "~8.1 || ~8.2 || ~8.3 || ~8.4", + "php": "~8.2 || ~8.3 || ~8.4 || ~8.5", "psr/clock": "^1.0", "psr/container": "^2.0.2", "psr/event-dispatcher": "^1.0", + "psr/http-client": "^1.0.3", "psr/log": "^3.0.2" }, "type": "library", "extra": { "branch-alias": { - "dev-stable31": "31.0.0-dev" + "dev-stable34": "34.0.0-dev" } }, "notification-url": "https://packagist.org/downloads/", @@ -4831,9 +3974,9 @@ "description": "Composer package containing Nextcloud's public OCP API and the unstable NCU API", "support": { "issues": "https://github.com/nextcloud-deps/ocp/issues", - "source": "https://github.com/nextcloud-deps/ocp/tree/v31.0.9" + "source": "https://github.com/nextcloud-deps/ocp/tree/v34.0.3" }, - "time": "2025-07-31T00:57:37+00:00" + "time": "2026-08-07T02:03:36+00:00" }, { "name": "nikic/php-parser", @@ -5429,16 +4572,16 @@ }, { "name": "php-cs-fixer/shim", - "version": "v3.94.2", + "version": "v3.95.18", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/shim.git", - "reference": "80fd29f44a736136a2f05bae5464816a444b91d1" + "reference": "9b815f2ba5c581faaaec1386dcda4c16d511e6bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/shim/zipball/80fd29f44a736136a2f05bae5464816a444b91d1", - "reference": "80fd29f44a736136a2f05bae5464816a444b91d1", + "url": "https://api.github.com/repos/PHP-CS-Fixer/shim/zipball/9b815f2ba5c581faaaec1386dcda4c16d511e6bb", + "reference": "9b815f2ba5c581faaaec1386dcda4c16d511e6bb", "shasum": "" }, "require": { @@ -5475,27 +4618,27 @@ "description": "A tool to automatically fix PHP code style", "support": { "issues": "https://github.com/PHP-CS-Fixer/shim/issues", - "source": "https://github.com/PHP-CS-Fixer/shim/tree/v3.94.2" + "source": "https://github.com/PHP-CS-Fixer/shim/tree/v3.95.18" }, - "time": "2026-02-20T16:14:17+00:00" + "time": "2026-07-30T15:46:28+00:00" }, { "name": "phpcsstandards/phpcsextra", - "version": "1.5.0", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHPCSExtra.git", - "reference": "b598aa890815b8df16363271b659d73280129101" + "reference": "39467533fdb742446d68c1d10ac33d625ee0311c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHPCSExtra/zipball/b598aa890815b8df16363271b659d73280129101", - "reference": "b598aa890815b8df16363271b659d73280129101", + "url": "https://api.github.com/repos/PHPCSStandards/PHPCSExtra/zipball/39467533fdb742446d68c1d10ac33d625ee0311c", + "reference": "39467533fdb742446d68c1d10ac33d625ee0311c", "shasum": "" }, "require": { "php": ">=5.4", - "phpcsstandards/phpcsutils": "^1.2.0", + "phpcsstandards/phpcsutils": "^1.2.3", "squizlabs/php_codesniffer": "^3.13.5 || ^4.0.1" }, "require-dev": { @@ -5559,20 +4702,20 @@ "type": "thanks_dev" } ], - "time": "2025-11-12T23:06:57+00:00" + "time": "2026-07-27T11:13:17+00:00" }, { "name": "phpcsstandards/phpcsutils", - "version": "1.2.2", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHPCSUtils.git", - "reference": "c216317e96c8b3f5932808f9b0f1f7a14e3bbf55" + "reference": "5f35d9408c54d7b529501f3c688b6eae562aea1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/c216317e96c8b3f5932808f9b0f1f7a14e3bbf55", - "reference": "c216317e96c8b3f5932808f9b0f1f7a14e3bbf55", + "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/5f35d9408c54d7b529501f3c688b6eae562aea1f", + "reference": "5f35d9408c54d7b529501f3c688b6eae562aea1f", "shasum": "" }, "require": { @@ -5652,7 +4795,7 @@ "type": "thanks_dev" } ], - "time": "2025-12-08T14:27:58+00:00" + "time": "2026-07-27T10:28:41+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -5914,16 +5057,16 @@ }, { "name": "phpmetrics/phpmetrics", - "version": "v2.9.1", + "version": "v2.11.0", "source": { "type": "git", "url": "https://github.com/phpmetrics/PhpMetrics.git", - "reference": "e2e68ddd1543bc3f44402c383f7bccb62de1ece3" + "reference": "55c5e23b34afb8fa9b6c6ea95cbd59b710160235" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpmetrics/PhpMetrics/zipball/e2e68ddd1543bc3f44402c383f7bccb62de1ece3", - "reference": "e2e68ddd1543bc3f44402c383f7bccb62de1ece3", + "url": "https://api.github.com/repos/phpmetrics/PhpMetrics/zipball/55c5e23b34afb8fa9b6c6ea95cbd59b710160235", + "reference": "55c5e23b34afb8fa9b6c6ea95cbd59b710160235", "shasum": "" }, "require": { @@ -5972,7 +5115,7 @@ ], "support": { "issues": "https://github.com/PhpMetrics/PhpMetrics/issues", - "source": "https://github.com/phpmetrics/PhpMetrics/tree/v2.9.1" + "source": "https://github.com/phpmetrics/PhpMetrics/tree/v2.11.0" }, "funding": [ { @@ -5980,7 +5123,7 @@ "type": "github" } ], - "time": "2025-09-25T05:21:02+00:00" + "time": "2026-08-09T06:58:42+00:00" }, { "name": "phpowermove/docblock", @@ -6558,11 +5701,61 @@ "type": "thanks_dev" }, { - "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", - "type": "tidelift" + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2026-01-27T05:48:37+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "time": "2026-01-27T05:48:37+00:00" + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" }, { "name": "roave/security-advisories", @@ -6570,18 +5763,19 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "61130731cdf896e60028ed82193a1bc3c50d032a" + "reference": "3c9ad688ad8826203588ec49363f73f4deb590c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/61130731cdf896e60028ed82193a1bc3c50d032a", - "reference": "61130731cdf896e60028ed82193a1bc3c50d032a", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/3c9ad688ad8826203588ec49363f73f4deb590c1", + "reference": "3c9ad688ad8826203588ec49363f73f4deb590c1", "shasum": "" }, "conflict": { "3f/pygmentize": "<1.2", "adaptcms/adaptcms": "<=1.3", - "admidio/admidio": "<5.0.8", + "adawolfa/isdoc": "<1.4.3|>=1.5,<1.5.1|>=1.6,<1.6.1", + "admidio/admidio": "<=5.0.11", "adodb/adodb-php": "<=5.22.9", "aheinze/cockpit": "<2.2", "aimeos/ai-admin-graphql": ">=2022.04.1,<2022.10.10|>=2023.04.1,<2023.10.6|>=2024.04.1,<2024.07.2", @@ -6592,12 +5786,14 @@ "aimeos/aimeos-core": ">=2022.04.1,<2022.10.17|>=2023.04.1,<2023.10.17|>=2024.04.1,<2024.04.7", "aimeos/aimeos-laravel": "==2021.10", "aimeos/aimeos-typo3": "<19.10.12|>=20,<20.10.5", + "aimeos/pagible": "<0.10.4", "airesvsg/acf-to-rest-api": "<=3.1", "akaunting/akaunting": "<2.1.13", "akeneo/pim-community-dev": "<5.0.119|>=6,<6.0.53", "alextselegidis/easyappointments": "<=1.5.2", "alexusmai/laravel-file-manager": "<=3.3.1", "algolia/algoliasearch-magento-2": "<=3.16.1|>=3.17.0.0-beta1,<=3.17.1", + "almirhodzic/nova-toggle-5": "<1.3", "alt-design/alt-redirect": "<1.6.4", "altcha-org/altcha": "<1.3.1", "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", @@ -6613,8 +5809,10 @@ "aoe/restler": "<1.7.1", "apache-solr-for-typo3/solr": "<2.8.3", "apereo/phpcas": "<1.6", - "api-platform/core": "<3.4.17|>=4,<4.0.22|>=4.1,<4.1.5", + "api-platform/core": "<4.1.29|>=4.2,<4.2.25|>=4.3,<4.3.8", "api-platform/graphql": "<3.4.17|>=4,<4.0.22|>=4.1,<4.1.5", + "api-platform/hal": ">=4,<4.1.29|>=4.2,<4.2.25|>=4.3,<4.3.8", + "api-platform/json-api": ">=4,<4.1.29|>=4.2,<4.2.25|>=4.3,<4.3.8", "appwrite/server-ce": "<=1.2.1", "arc/web": "<3", "area17/twill": "<1.2.5|>=2,<2.5.3", @@ -6626,23 +5824,22 @@ "aureuserp/aureuserp": "<1.3.0.0-beta1", "austintoddj/canvas": "<=3.4.2", "auth0/auth0-php": ">=3.3,<=8.18", - "auth0/login": "<7.20", - "auth0/symfony": "<=5.5", - "auth0/wordpress": "<=5.4", - "automad/automad": "<2.0.0.0-alpha5", + "auth0/login": "<=7.20", + "auth0/symfony": "<=5.8", + "auth0/wordpress": "<=5.5", + "automad/automad": "<=2.0.0.0-beta27", "automattic/jetpack": "<9.8", - "avideo/avideo": "<=26", "awesome-support/awesome-support": "<=6.0.7", "aws/aws-sdk-php": "<=3.371.3", "ayacoo/redirect-tab": "<2.1.2|>=3,<3.1.7|>=4,<4.0.5", - "azuracast/azuracast": "<=0.23.3", + "azuracast/azuracast": "<=0.23.5", "b13/seo_basics": "<0.8.2", "backdrop/backdrop": "<=1.32", - "backpack/crud": "<3.4.9", + "backpack/crud": "<4.0.63|>=4.1,<4.1.69|>=5,<5.0.13", "backpack/filemanager": "<2.0.2|>=3,<3.0.9", "bacula-web/bacula-web": "<9.7.1", "badaso/core": "<=2.9.11", - "bagisto/bagisto": "<2.3.10", + "bagisto/bagisto": "<=2.3.15", "barrelstrength/sprout-base-email": "<1.2.7", "barrelstrength/sprout-forms": "<3.9", "barryvdh/laravel-translation-manager": "<0.6.8", @@ -6655,6 +5852,7 @@ "bedita/bedita": "<4", "bednee/cooluri": "<1.0.30", "bigfork/silverstripe-form-capture": ">=3,<3.1.1", + "billabear/billabear": "<=2025.01.03", "billz/raspap-webgui": "<3.3.6", "binarytorch/larecipe": "<2.8.1", "bk2k/bootstrap-package": ">=7.1,<7.1.2|>=8,<8.0.8|>=9,<9.0.4|>=9.1,<9.1.3|>=10,<10.0.10|>=11,<11.0.3", @@ -6675,13 +5873,14 @@ "bytefury/crater": "<6.0.2", "cachethq/cachet": "<2.5.1", "cadmium-org/cadmium-cms": "<=0.4.9", - "cakephp/cakephp": "<3.10.3|>=4,<4.0.10|>=4.1,<4.1.4|>=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10|>=5.2.10,<5.2.12|==5.3", + "cakephp/authentication": "<3.3.6|>=4,<4.1.1", + "cakephp/cakephp": "<4.5.11|>=4.6,<4.6.4|>=5,<5.1.7|>=5.2,<5.2.13|>=5.3,<5.3.6", "cakephp/database": ">=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", "cardgate/magento2": "<2.0.33", "cardgate/woocommerce": "<=3.1.15", - "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", + "cart2quote/module-quotation": ">=4.1.6,<4.4.6|>=5,<5.4.4", "cart2quote/module-quotation-encoded": ">=4.1.6,<=4.4.5|>=5,<5.4.4", - "cartalyst/sentry": "<=2.1.6", + "cartalyst/sentry": "<2.1.7", "catfan/medoo": "<1.7.5", "causal/oidc": "<4", "cecil/cecil": "<7.47.1", @@ -6690,41 +5889,42 @@ "cesnet/simplesamlphp-module-proxystatistics": "<3.1", "chriskacerguis/codeigniter-restserver": "<=2.7.1", "chrome-php/chrome": "<1.14", - "ci4-cms-erp/ci4ms": "<=0.28.6", + "ci4-cms-erp/ci4ms": "<=0.31.8", "civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3", "ckeditor/ckeditor": "<4.25", "clickstorm/cs-seo": ">=6,<6.8|>=7,<7.5|>=8,<8.4|>=9,<9.3", "co-stack/fal_sftp": "<0.2.6", - "cockpit-hq/cockpit": "<2.13.5", - "code16/sharp": "<9.20", + "cockpit-hq/cockpit": "<=2.14", + "code16/sharp": "<9.22.3", "codeception/codeception": "<3.1.3|>=4,<4.1.22", "codeigniter/framework": "<3.1.10", - "codeigniter4/framework": "<4.6.2", + "codeigniter4/framework": "<4.7.2", "codeigniter4/shield": "<1.0.0.0-beta8", "codiad/codiad": "<=2.8.4", "codingms/additional-tca": ">=1.7,<1.15.17|>=1.16,<1.16.9", "codingms/modules": "<4.3.11|>=5,<5.7.4|>=6,<6.4.2|>=7,<7.5.5", "commerceteam/commerce": ">=0.9.6,<0.9.9", "components/jquery": ">=1.0.3,<3.5", - "composer/composer": "<1.10.27|>=2,<2.2.26|>=2.3,<2.9.3", - "concrete5/concrete5": "<9.4.8", + "composer/composer": "<2.2.29|>=2.3,<2.10.2", + "concrete5/concrete5": "<9.5.2", "concrete5/core": "<8.5.8|>=9,<9.1", "contao-components/mediaelement": ">=2.14.2,<2.21.1", "contao/comments-bundle": ">=2,<4.13.40|>=5.0.0.0-RC1-dev,<5.3.4", - "contao/contao": ">=3,<3.5.37|>=4,<4.4.56|>=4.5,<4.13.56|>=5,<5.3.38|>=5.4.0.0-RC1-dev,<5.6.1", + "contao/contao": ">=3,<3.5.37|>=4,<4.4.56|>=4.5,<5.3.48|>=5.4,<5.7.9", "contao/core": "<3.5.39", - "contao/core-bundle": "<4.13.57|>=5,<5.3.42|>=5.4,<5.6.5", + "contao/core-bundle": "<5.3.48|>=5.4,<5.7.9", "contao/listing-bundle": ">=3,<=3.5.30|>=4,<4.4.8", "contao/managed-edition": "<=1.5", - "coreshop/core-shop": "<4.1.9", + "coreshop/core-shop": "<4.1.9|==5", "corveda/phpsandbox": "<1.3.5", "cosenary/instagram": "<=2.3", + "cotonti/cotonti": "<=1", "couleurcitron/tarteaucitron-wp": "<0.3", "cpsit/typo3-mailqueue": "<0.4.5|>=0.5,<0.5.2", "craftcms/aws-s3": ">=2.0.2,<=2.2.4", "craftcms/azure-blob": ">=2.0.0.0-beta1,<=2.1", - "craftcms/cms": "<=4.17.7|>=5,<=5.9.13", - "craftcms/commerce": ">=4,<4.11|>=5,<5.6", + "craftcms/cms": "<4.18|>=5,<5.10", + "craftcms/commerce": ">=4,<=4.11.1|>=5,<=5.6.4", "craftcms/composer": ">=4.0.0.0-RC1-dev,<=4.10|>=5.0.0.0-RC1-dev,<=5.5.1", "craftcms/craft": ">=3.5,<=4.16.17|>=5.0.0.0-RC1-dev,<=5.8.21", "craftcms/google-cloud": ">=2.0.0.0-beta1,<=2.2", @@ -6742,6 +5942,7 @@ "david-garcia/phpwhois": "<=4.3.1", "dbrisinajumi/d2files": "<1", "dcat/laravel-admin": "<=2.1.3|==2.2.0.0-beta|==2.2.2.0-beta", + "dedoc/scramble": ">=0.13.2,<0.13.22", "derhansen/fe_change_pwd": "<2.0.5|>=3,<3.0.3", "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1|>=7,<7.4", "desperado/xml-bundle": "<=0.1.7", @@ -6763,8 +5964,8 @@ "doctrine/mongodb-odm": "<1.0.2", "doctrine/mongodb-odm-bundle": "<3.0.1", "doctrine/orm": ">=1,<1.2.4|>=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4", - "dolibarr/dolibarr": "<=22.0.4", - "dompdf/dompdf": "<2.0.4", + "dolibarr/dolibarr": "<=23.0.2", + "dompdf/dompdf": "<3.1.6", "doublethreedigital/guest-entries": "<3.1.2", "dreamfactory/df-core": "<1.0.4", "drupal-pattern-lab/unified-twig-extensions": "<=0.1", @@ -6778,7 +5979,7 @@ "drupal/commerce_alphabank_redirect": "<1.0.3", "drupal/commerce_eurobank_redirect": "<2.1.1", "drupal/config_split": "<1.10|>=2,<2.0.2", - "drupal/core": ">=6,<6.38|>=7,<7.103|>=8,<10.4.9|>=10.5,<10.5.6|>=11,<11.1.9|>=11.2,<11.2.8", + "drupal/core": ">=6,<6.38|>=7,<7.103|>=8,<10.5.10|>=10.6,<10.6.9|>=11,<11.2.12|>=11.3,<11.3.10", "drupal/core-recommended": ">=7,<7.102|>=8,<10.2.11|>=10.3,<10.3.9|>=11,<11.0.8", "drupal/currency": "<3.5", "drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.102|>=8,<10.2.11|>=10.3,<10.3.9|>=11,<11.0.8", @@ -6805,10 +6006,11 @@ "drupal/umami_analytics": "<1.0.1", "duncanmcclean/guest-entries": "<3.1.2", "dweeves/magmi": "<=0.7.24", + "easycorp/easyadmin-bundle": ">=4,<4.29.10|>=5,<5.0.13", "ec-cube/ec-cube": "<2.4.4|>=2.11,<=2.17.1|>=3,<=3.0.18.0-patch4|>=4,<=4.3.1", "ecodev/newsletter": "<=4", "ectouch/ectouch": "<=2.7.2", - "egroupware/egroupware": "<23.1.20260113|>=26.0.20251208,<26.0.20260113", + "egroupware/egroupware": "<23.1.20260601|>=26.0.20251208,<26.5.20260507", "elefant/cms": "<2.0.7", "elgg/elgg": "<3.3.24|>=4,<4.0.5", "elijaa/phpmemcacheadmin": "<=1.3", @@ -6820,6 +6022,7 @@ "erusev/parsedown": "<1.7.2", "ether/logs": "<3.0.4", "evolutioncms/evolution": "<=3.2.3", + "evoweb/sf-register": "<13.2.4|>=14,<14.0.2", "exceedone/exment": "<4.4.3|>=5,<5.0.3", "exceedone/laravel-admin": "<2.2.3|==3", "ezsystems/demobundle": ">=5.4,<5.4.6.1-dev", @@ -6842,15 +6045,16 @@ "ezsystems/repository-forms": ">=2.3,<2.3.2.1-dev|>=2.5,<2.5.15", "ezyang/htmlpurifier": "<=4.2", "facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2", - "facturascripts/facturascripts": "<2025.81", + "facturascripts/facturascripts": "<=2026.2", "fastly/magento2": "<1.2.26", "feehi/cms": "<=2.1.1", "feehi/feehicms": "<=2.1.1", "fenom/fenom": "<=2.12.1", - "filament/actions": ">=3.2,<3.2.123", - "filament/filament": ">=4,<4.3.1", - "filament/infolists": ">=3,<3.2.115", - "filament/tables": ">=3,<3.2.115|>=4,<4.8.5|>=5,<5.3.5", + "filament/actions": ">=3.2,<3.2.123|>=4,<=4.11.3|>=5,<=5.6.3", + "filament/filament": ">=3,<=3.3.51|>=4,<4.11.5|>=5,<5.6.5", + "filament/forms": ">=3,<=3.3.52", + "filament/infolists": ">=3,<3.2.115|>=4,<=4.11.4|>=5,<=5.6.4", + "filament/tables": ">=3,<=3.3.50|>=4,<=4.11.4|>=5,<=5.6.4", "filegator/filegator": "<7.8", "filp/whoops": "<2.1.13", "fineuploader/php-traditional-server": "<=1.2.2", @@ -6858,13 +6062,14 @@ "fisharebest/webtrees": "<=2.1.18", "fixpunkt/fp-masterquiz": "<2.2.1|>=3,<3.5.2", "fixpunkt/fp-newsletter": "<1.1.1|>=1.2,<2.1.2|>=2.2,<3.2.6", - "flarum/core": "<1.8.10", + "flarum/core": "<=1.8.15|>=2.0.0.0-beta1,<=2.0.0.0-beta8", "flarum/flarum": "<0.1.0.0-beta8", "flarum/framework": "<1.8.10", "flarum/mentions": "<1.6.3", "flarum/nicknames": "<1.8.3", "flarum/sticky": ">=0.1.0.0-beta14,<=0.1.0.0-beta15", "flarum/tags": "<=0.1.0.0-beta13", + "flightphp/core": "<3.18.1", "floriangaerber/magnesium": "<0.3.1", "fluidtypo3/vhs": "<5.1.1", "fof/byobu": ">=0.3.0.0-beta2,<1.1.7", @@ -6883,19 +6088,22 @@ "friendsofsymfony1/symfony1": ">=1.1,<1.5.19", "friendsoftypo3/mediace": ">=7.6.2,<7.6.5", "friendsoftypo3/openid": ">=4.5,<4.5.31|>=4.7,<4.7.16|>=6,<6.0.11|>=6.1,<6.1.6", + "friendsoftypo3/tt-address": "<8.1.2|>=9,<9.1.1|>=10,<10.0.1", "froala/wysiwyg-editor": "<=4.3", "frosh/adminer-platform": "<2.2.1", - "froxlor/froxlor": "<=2.3.4", + "froxlor/froxlor": "<2.3.7", "frozennode/administrator": "<=5.0.12", "fuel/core": "<1.8.1", - "funadmin/funadmin": "<=7.1.0.0-RC4", + "funadmin/funadmin": "<=7.1.0.0-RC6", "gaoming13/wechat-php-sdk": "<=1.10.2", "genix/cms": "<=1.1.11", - "georgringer/news": "<1.3.3", + "georgringer/news": "<10.0.4|>=11,<11.4.4|>=12,<12.3.2|>=13,<13.0.2|>=14,<14.0.3", "geshi/geshi": "<=1.0.9.1", "getformwork/formwork": "<=2.3.3", - "getgrav/grav": "<1.11.0.0-beta1", - "getkirby/cms": "<=5.2.1", + "getgrav/grav": "<=2.0.0.0-RC8", + "getgrav/grav-plugin-api": "<1.0.0.0-beta15", + "getgrav/grav-plugin-form": "<9.1", + "getkirby/cms": "<=4.9.3|>=5,<=5.4.3", "getkirby/kirby": "<3.9.8.3-dev|>=3.10,<3.10.1.2-dev|>=4,<4.7.1", "getkirby/panel": "<2.5.14", "getkirby/starterkit": "<=3.7.0.2", @@ -6904,16 +6112,18 @@ "globalpayments/php-sdk": "<2", "goalgorilla/open_social": "<12.3.11|>=12.4,<12.4.10|>=13.0.0.0-alpha1,<13.0.0.0-alpha11", "gogentooss/samlbase": "<1.2.7", + "goodoneuz/pay-uz": "<=2.2.24", "google/protobuf": "<4.33.6", "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3", "gp247/core": "<1.1.24", "gree/jose": "<2.2.1", "gregwar/rst": "<1.0.3", - "grumpydictator/firefly-iii": "<6.1.17|>=6.4.23,<=6.5", + "grumpydictator/firefly-iii": "<=6.6.2", "gugoan/economizzer": "<=0.9.0.0-beta1", - "guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5", + "guzzlehttp/guzzle": "<7.15.1", + "guzzlehttp/guzzle-services": "<1.5.4", "guzzlehttp/oauth-subscriber": "<0.8.1", - "guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5", + "guzzlehttp/psr7": "<2.12.3", "haffner/jh_captcha": "<=2.1.3|>=3,<=3.0.2", "handcraftedinthealps/goodby-csv": "<1.4.3", "harvesthq/chosen": "<1.8.7", @@ -6942,6 +6152,7 @@ "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<6.18.31|>=7,<7.22.4", "illuminate/database": "<6.20.26|>=7,<7.30.5|>=8,<8.40", "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15", + "illuminate/mail": ">=9,<12.60|>=13,<13.10", "illuminate/view": "<6.20.42|>=7,<7.30.6|>=8,<8.75", "imdbphp/imdbphp": "<=5.1.1", "impresscms/impresscms": "<=1.4.5", @@ -6953,8 +6164,9 @@ "innologi/typo3-appointments": "<2.0.6", "intelliants/subrion": "<4.2.2", "inter-mediator/inter-mediator": "==5.5", + "intercom/intercom-php": "==5.0.2", "invoiceninja/invoiceninja": "<5.13.4", - "ipl/web": "<0.10.1", + "ipl/web": "<=0.10.2|>=0.11,<=0.13", "islandora/crayfish": "<4.1", "islandora/islandora": ">=2,<2.4.1", "ivankristianto/phpwhois": "<=4.3", @@ -6966,6 +6178,8 @@ "jasig/phpcas": "<1.3.3", "jbartels/wec-map": "<3.0.3", "jcbrand/converse.js": "<3.3.3", + "jleehr/canto-saas-api": "<=2", + "joedolson/my-calendar": "<3.7.7", "joelbutcher/socialstream": "<5.6|>=6,<6.2", "johnbillion/query-monitor": "<3.20.4", "johnbillion/wp-crontrol": "<1.16.2|>=1.17,<1.19.2", @@ -6985,29 +6199,32 @@ "juzaweb/cms": "<=3.4.2", "jweiland/events2": "<8.3.8|>=9,<9.0.6", "jweiland/kk-downloader": "<1.2.2", + "kantorge/yaffa": "<=2", "kazist/phpwhois": "<=4.2.6", "kelvinmo/simplejwt": "<=1.1", "kelvinmo/simplexrd": "<3.1.1", "kevinpapst/kimai2": "<1.16.7", - "khodakhah/nodcms": "<=3", - "kimai/kimai": "<=2.50", + "khodakhah/nodcms": "<=3.4.1", + "kimai/kimai": "<2.59", "kitodo/presentation": "<3.2.3|>=3.3,<3.3.4", "klaviyo/magento2-extension": ">=1,<3", - "knplabs/knp-snappy": "<=1.4.2", + "knplabs/knp-snappy": "<=1.7", "kohana/core": "<3.3.3", "koillection/koillection": "<1.6.12", - "krayin/laravel-crm": "<=1.3", + "krayin/laravel-crm": "<=2.2", "kreait/firebase-php": ">=3.2,<3.8.1", "kumbiaphp/kumbiapp": "<=1.1.1", "la-haute-societe/tcpdf": "<6.2.22", + "laktak/hjson": "<2.3", "laminas/laminas-diactoros": "<2.18.1|==2.19|==2.20|==2.21|==2.22|==2.23|>=2.24,<2.24.2|>=2.25,<2.25.2", "laminas/laminas-form": "<2.17.1|>=3,<3.0.2|>=3.1,<3.1.1", "laminas/laminas-http": "<2.14.2", "lara-zeus/artemis": ">=1,<=1.0.6", "lara-zeus/dynamic-dashboard": ">=3,<=3.0.1", "laravel/fortify": "<1.11.1", - "laravel/framework": "<10.48.29|>=11,<11.44.1|>=12,<12.1.1", + "laravel/framework": "<12.61.1|>=13,<13.12", "laravel/laravel": ">=5.4,<5.4.22", + "laravel/passport": ">=13,<13.7.1", "laravel/pulse": "<1.3.1", "laravel/reverb": "<1.7", "laravel/socialite": ">=1,<2.0.10", @@ -7024,7 +6241,7 @@ "librenms/librenms": "<26.3", "liftkit/database": "<2.13.2", "lightsaml/lightsaml": "<1.3.5", - "limesurvey/limesurvey": "<6.15.4", + "limesurvey/limesurvey": "<=7.0.0.0-beta1", "livehelperchat/livehelperchat": "<=3.91", "livewire-filemanager/filemanager": "<=1.0.4", "livewire/livewire": "<2.12.7|>=3.0.0.0-beta1,<3.6.4", @@ -7047,20 +6264,23 @@ "maikuolan/phpmussel": ">=1,<1.6", "mainwp/mainwp": "<=4.4.3.3", "manogi/nova-tiptap": "<=3.2.6", - "mantisbt/mantisbt": "<2.28.1", + "mantisbt/mantisbt": "<=2.28.3", "marcwillmann/turn": "<0.3.3", + "markhuot/craftql": "<=1.3.7", "marshmallow/nova-tiptap": "<5.7", "matomo/matomo": "<1.11", "matyhtf/framework": "<3.0.6", - "mautic/core": "<5.2.10|>=6,<6.0.8|>=7.0.0.0-alpha,<7.0.1", + "mautic/core": "<5.2.11|>=6,<6.0.9|>=7,<7.1.2", "mautic/core-lib": ">=1.0.0.0-beta,<4.4.13|>=5.0.0.0-alpha,<5.1.1", "mautic/grapes-js-builder-bundle": ">=4,<4.4.18|>=5,<5.2.9|>=6,<6.0.7", "maximebf/debugbar": "<1.19", + "mckenziearts/livewire-markdown-editor": "<1.3", "mdanter/ecc": "<2", "mediawiki/abuse-filter": "<1.39.9|>=1.40,<1.41.3|>=1.42,<1.42.2", "mediawiki/cargo": "<3.8.3", "mediawiki/core": "<1.39.5|==1.40", "mediawiki/data-transfer": ">=1.39,<1.39.11|>=1.41,<1.41.3|>=1.42,<1.42.2", + "mediawiki/maps": "<12.1.3", "mediawiki/matomo": "<2.4.3", "mediawiki/semantic-media-wiki": "<4.0.2", "mehrwert/phpmyadmin": "<3.2", @@ -7080,6 +6300,8 @@ "miniorange/miniorange-saml": "<1.4.3", "miraheze/ts-portal": "<=33", "mittwald/typo3_forum": "<1.2.1", + "mix/mix": ">=2,<=2.2.17", + "mmc/ceselector": "<3.0.3|>=4,<4.0.2|>=5,<5.0.1|>=6,<6.0.1", "mobiledetect/mobiledetectlib": "<2.8.32", "modx/revolution": "<=3.1", "mojo42/jirafeau": "<4.4", @@ -7092,6 +6314,7 @@ "movim/moxl": ">=0.8,<=0.10", "movingbytes/social-network": "<=1.2.1", "mpdf/mpdf": "<=7.1.7", + "mtdowling/jmespath.php": "<2.9.1", "munkireport/comment": "<4", "munkireport/managedinstalls": "<2.6", "munkireport/munki_facts": "<1.5", @@ -7099,6 +6322,7 @@ "munkireport/softwareupdate": "<1.6", "mustache/mustache": ">=2,<2.14.1", "mwdelaney/wp-enable-svg": "<=0.2", + "nabeel/phpvms": "<7.0.6", "namshi/jose": "<2.2", "nasirkhan/laravel-starter": "<11.11", "nategood/httpful": "<1", @@ -7118,20 +6342,20 @@ "nilsteampassnet/teampass": "<3.1.3.1-dev", "nitsan/ns-backup": "<13.0.1", "nonfiction/nterchange": "<4.1.1", - "notrinos/notrinos-erp": "<=0.7", + "notrinos/notrinos-erp": "<=1", "noumo/easyii": "<=0.9", "novaksolutions/infusionsoft-php-sdk": "<1", "novosga/novosga": "<=2.2.12", - "nukeviet/nukeviet": "<4.5.02", + "nukeviet/nukeviet": "<4.6.00", "nyholm/psr7": "<1.6.1", "nystudio107/craft-seomatic": "<3.4.12", "nzedb/nzedb": "<0.8", "nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1", "october/backend": "<1.1.2", "october/cms": "<1.0.469|==1.0.469|==1.0.471|==1.1.1", - "october/october": "<3.7.5", - "october/rain": "<1.0.472|>=1.1,<1.1.2", - "october/system": "<=3.7.12|>=4,<=4.0.11", + "october/october": "<3.7.14|>=4,<4.1.10", + "october/rain": "<=3.7.13|>=4,<=4.1.9", + "october/system": "<3.7.16|>=4,<4.1.16", "oliverklee/phpunit": "<3.5.15", "omeka/omeka-s": "<4.0.3", "onelogin/php-saml": "<2.21.1|>=3,<3.8.1|>=4,<4.3.1", @@ -7139,7 +6363,7 @@ "open-web-analytics/open-web-analytics": "<1.8.1", "opencart/opencart": ">=0", "openid/php-openid": "<2.3", - "openmage/magento-lts": "<20.16.1", + "openmage/magento-lts": "<=20.17", "opensolutions/vimbadmin": "<=3.0.15", "opensource-workshop/connect-cms": "<1.41.1|>=2,<2.41.1", "orchid/platform": ">=8,<14.43", @@ -7150,8 +6374,10 @@ "oro/customer-portal": ">=4.1,<=4.1.13|>=4.2,<=4.2.10|>=5,<=5.0.11|>=5.1,<=5.1.3", "oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<=4.2.10|>=5,<=5.0.12|>=5.1,<=5.1.3", "oveleon/contao-cookiebar": "<1.16.3|>=2,<2.1.3", - "oxid-esales/oxideshop-ce": "<=7.0.5", + "oxid-esales/oxideshop-ce": "<4.5|>=6,<6.14.4", + "oxid-esales/oxideshop-metapackage-ce": ">=6,<6.5.5", "oxid-esales/paymorrow-module": ">=1,<1.0.2|>=2,<2.0.1", + "oxid-esales/smarty-component": "<1.0.1", "packbackbooks/lti-1-3-php-library": "<5", "padraic/humbug_get_contents": "<1.1.2", "pagarme/pagarme-php": "<3", @@ -7160,6 +6386,7 @@ "paragonie/random_compat": "<2", "paragonie/sodium_compat": "<1.24|>=2,<2.5", "passbolt/passbolt_api": "<4.6.2", + "paymenter/paymenter": "<=1.5.4", "paypal/adaptivepayments-sdk-php": "<=3.9.2", "paypal/invoice-sdk-php": "<=3.9", "paypal/merchant-sdk-php": "<3.12", @@ -7172,65 +6399,70 @@ "pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1", "personnummer/personnummer": "<3.0.2", "ph7software/ph7builder": "<=17.9.1", - "phanan/koel": "<5.1.4", + "phanan/koel": "<=9.7", + "pheditor/pheditor": "<2.0.8", "phenx/php-svg-lib": "<0.5.2", "php-censor/php-censor": "<2.0.13|>=2.1,<2.1.5", "php-mod/curl": "<2.3.2", - "phpbb/phpbb": "<3.3.11", + "php-standard-library/h2": ">=6.1,<6.1.2|>=6.2,<6.2.1", + "php-standard-library/php-standard-library": ">=6.1,<6.1.2|>=6.2,<6.2.1", + "phpbb/phpbb": "<3.3.16|==4.0.0.0-alpha1", "phpems/phpems": ">=6,<=6.1.3", "phpfastcache/phpfastcache": "<6.1.5|>=7,<7.1.2|>=8,<8.0.7", "phpmailer/phpmailer": "<6.5", "phpmussel/phpmussel": ">=1,<1.6", "phpmyadmin/phpmyadmin": "<5.2.2", - "phpmyfaq/phpmyfaq": "<=4.1", + "phpmyfaq/phpmyfaq": "<4.1.4", "phpoffice/common": "<0.2.9", "phpoffice/math": "<=0.2", "phpoffice/phpexcel": "<=1.8.2", - "phpoffice/phpspreadsheet": "<1.30|>=2,<2.1.12|>=2.2,<2.4|>=3,<3.10|>=4,<5", + "phpoffice/phpspreadsheet": "<=1.30.5|>=2,<=2.1.17|>=2.2,<=2.4.6|>=3,<=3.10.6|>=4,<=5.8", "phppgadmin/phppgadmin": "<=7.13", - "phpseclib/phpseclib": "<=2.0.51|>=3,<=3.0.49", + "phpseclib/phpseclib": "<=2.0.54|>=3,<=3.0.53", "phpservermon/phpservermon": "<3.6", "phpsysinfo/phpsysinfo": "<3.4.3", - "phpunit/phpunit": "<8.5.52|>=9,<9.6.33|>=10,<10.5.62|>=11,<11.5.50|>=12,<12.5.8", + "phpunit/phpunit": "<8.5.52|>=9,<9.6.33|>=10,<10.5.62|>=11,<11.5.50|>=12,<12.5.8|>=12.5.21,<12.5.22|>=13.1.5,<13.1.6", "phpwhois/phpwhois": "<=4.2.5", "phpxmlrpc/extras": "<0.6.1", "phpxmlrpc/phpxmlrpc": "<4.9.2", "phraseanet/phraseanet": "==4.0.3", "pi/pi": "<=2.5", - "pimcore/admin-ui-classic-bundle": "<=1.7.15|>=2.0.0.0-RC1-dev,<=2.2.2", + "pimcore/admin-ui-classic-bundle": "<1.7.18|>=2.0.0.0-RC1-dev,<=2.3.5", "pimcore/customer-management-framework-bundle": "<4.2.1", "pimcore/data-hub": "<1.2.4", "pimcore/data-importer": "<1.8.9|>=1.9,<1.9.3", "pimcore/demo": "<10.3", "pimcore/ecommerce-framework-bundle": "<1.0.10", "pimcore/perspective-editor": "<1.5.1", - "pimcore/pimcore": "<=11.5.14.1|>=12,<12.3.3", + "pimcore/pimcore": "<=12.3.8|>=2026.1,<2026.1.3", "pimcore/web2print-tools-bundle": "<=5.2.1|>=6.0.0.0-RC1-dev,<=6.1", "piwik/piwik": "<1.11", "pixelfed/pixelfed": "<0.12.5", "plotly/plotly.js": "<2.25.2", "pocketmine/bedrock-protocol": "<8.0.2", - "pocketmine/pocketmine-mp": "<5.32.1", + "pocketmine/pocketmine-mp": "<5.42.1", "pocketmine/raklib": ">=0.14,<0.14.6|>=0.15,<0.15.1", + "pontedilana/php-weasyprint": "<=2.5.1", + "poweradmin/poweradmin": "<4.2.5|>=4.3,<4.3.4", "pressbooks/pressbooks": "<5.18", "prestashop/autoupgrade": ">=4,<4.10.1", "prestashop/blockreassurance": "<=5.1.3", "prestashop/blockwishlist": ">=2,<2.1.1", "prestashop/contactform": ">=1.0.1,<4.3", "prestashop/gamification": "<2.3.2", - "prestashop/prestashop": "<8.2.5|>=9.0.0.0-alpha1,<9.1", + "prestashop/prestashop": "<8.2.6|>=9,<9.1.1", "prestashop/productcomments": "<5.0.2", - "prestashop/ps_checkout": "<4.4.1|>=5,<5.0.5", + "prestashop/ps_checkout": "<5.3", "prestashop/ps_contactinfo": "<=3.3.2", "prestashop/ps_emailsubscription": "<2.6.1", - "prestashop/ps_facetedsearch": "<3.4.1", + "prestashop/ps_facetedsearch": "<4.0.4", "prestashop/ps_linklist": "<3.1", "privatebin/privatebin": "<1.4|>=1.5,<1.7.4|>=1.7.7,<2.0.3", - "processwire/processwire": "<=3.0.246", - "propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7", - "propel/propel1": ">=1,<=1.7.1", + "processwire/processwire": "<=3.0.255", + "propel/propel": ">=2.0.0.0-alpha1,<2.0.0.0-alpha8", + "propel/propel1": ">=1,<1.7.2", "psy/psysh": "<=0.11.22|>=0.12,<=0.12.18", - "pterodactyl/panel": "<1.12.1", + "pterodactyl/panel": "<=1.12.4", "ptheofan/yii2-statemachine": ">=2.0.0.0-RC1-dev,<=2", "ptrofimov/beanstalk_console": "<1.7.14", "pubnub/pubnub": "<6.1", @@ -7250,20 +6482,22 @@ "rap2hpoutre/laravel-log-viewer": "<0.13", "react/http": ">=0.7,<1.9", "really-simple-plugins/complianz-gdpr": "<6.4.2", - "redaxo/source": "<=5.20.1", + "redaxo/source": "<5.21.1", "remdex/livehelperchat": "<4.29", "renolit/reint-downloadmanager": "<4.0.2|>=5,<5.0.1", "reportico-web/reportico": "<=8.1", - "rhukster/dom-sanitizer": "<1.0.7", + "rhukster/dom-sanitizer": "<1.0.10", "rmccue/requests": ">=1.6,<1.8", "roadiz/documents": "<2.3.42|>=2.4,<2.5.44|>=2.6,<2.6.28|>=2.7,<2.7.9", + "roadiz/openid": "<2.3.43|>=2.5,<2.5.45|>=2.6,<2.6.31|>=2.7,<2.7.18", "robrichards/xmlseclibs": "<3.1.5", "roots/soil": "<4.1", - "roundcube/roundcubemail": "<1.5.10|>=1.6,<1.6.11", + "roundcube/roundcubemail": "<1.5.10|>=1.6,<1.6.11|>=1.7.0.0-beta,<1.7.0.0-RC5-dev", "rudloff/alltube": "<3.0.3", "rudloff/rtmpdump-bin": "<=2.3.1", "s-cart/core": "<=9.0.5", "s-cart/s-cart": "<6.9", + "s9y/serendipity": "<2.6", "sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1", "sabre/dav": ">=1.6,<1.7.11|>=1.8,<1.8.9", "saloonphp/saloon": "<4", @@ -7271,24 +6505,26 @@ "scheb/two-factor-bundle": "<3.26|>=4,<4.11", "sensiolabs/connect": "<4.2.3", "serluck/phpwhois": "<=4.2.6", - "setasign/fpdi": "<2.6.4", + "setasign/fpdi": "<2.6.7", "sfroemken/url_redirect": "<=1.2.1", "sheng/yiicms": "<1.2.1", - "shopware/core": "<6.6.10.15-dev|>=6.7,<6.7.8.1-dev", - "shopware/platform": "<6.6.10.15-dev|>=6.7,<6.7.8.1-dev", + "shopper/cart": "<2.8", + "shopper/framework": "<2.8", + "shopware/core": "<6.6.10.18-dev|>=6.7,<6.7.10.1-dev", + "shopware/platform": "<6.6.10.18-dev|>=6.7,<6.7.10.1-dev", "shopware/production": "<=6.3.5.2", - "shopware/shopware": "<=5.7.17|>=6.4.6,<6.6.10.10-dev|>=6.7,<6.7.6.1-dev", + "shopware/shopware": "<=6.3.5.2|>=6.4.6,<6.6.10.10-dev|>=6.7,<6.7.6.1-dev", "shopware/storefront": "<6.6.10.10-dev|>=6.7,<6.7.5.1-dev", "shopxo/shopxo": "<=6.4", - "showdoc/showdoc": "<2.10.4", + "showdoc/showdoc": "<3.8.1", "shuchkin/simplexlsx": ">=1.0.12,<1.1.13", "silverstripe-australia/advancedreports": ">=1,<=2", "silverstripe/admin": "<1.13.19|>=2,<2.1.8", - "silverstripe/assets": ">=1,<1.11.1", - "silverstripe/cms": "<4.11.3", + "silverstripe/assets": "<2.4.5|>=3,<3.1.3", + "silverstripe/cms": "<6.2.1", "silverstripe/comments": ">=1.3,<3.1.1", - "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", - "silverstripe/framework": "<5.3.23", + "silverstripe/forum": "<0.6.2|>=0.7,<0.7.4", + "silverstripe/framework": "<6.2.2", "silverstripe/graphql": ">=2,<2.0.5|>=3,<3.8.2|>=4,<4.3.7|>=5,<5.1.3", "silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1", "silverstripe/recipe-cms": ">=4.5,<4.5.3", @@ -7298,13 +6534,15 @@ "silverstripe/silverstripe-omnipay": "<2.5.2|>=3,<3.0.2|>=3.1,<3.1.4|>=3.2,<3.2.1", "silverstripe/subsites": ">=2,<2.6.1", "silverstripe/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1", - "silverstripe/userforms": "<3|>=5,<5.4.2", + "silverstripe/userforms": "<6.4.9|>=7,<7.0.7|>=7.1,<7.1.1", + "silverstripe/versioned": "<3.2.1", "silverstripe/versioned-admin": ">=1,<1.11.1", "simogeo/filemanager": "<=2.5", "simple-updates/phpwhois": "<=1", - "simplesamlphp/saml2": "<=4.16.15|>=5.0.0.0-alpha1,<=5.0.0.0-alpha19", - "simplesamlphp/saml2-legacy": "<=4.16.15", - "simplesamlphp/simplesamlphp": "<1.18.6", + "simplesamlphp/saml2": "<=4.20.2|>=5,<5.0.6|>=6,<6.2.1", + "simplesamlphp/saml2-legacy": "<=4.20.2", + "simplesamlphp/simplesamlphp": "<=2.4.6|>=2.5,<=2.5.1", + "simplesamlphp/simplesamlphp-module-casserver": "<=7.0.2", "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", "simplesamlphp/simplesamlphp-module-openid": "<1", "simplesamlphp/simplesamlphp-module-openidprovider": "<0.9", @@ -7316,19 +6554,23 @@ "sjbr/sr-freecap": "<2.4.6|>=2.5,<2.5.3", "sjbr/static-info-tables": "<2.3.1", "slim/psr7": "<1.4.1|>=1.5,<1.5.1|>=1.6,<1.6.1", - "slim/slim": "<2.6", + "slim/slim": "<2.6|>=4.4,<=4.15.1", "slub/slub-events": "<3.0.3", "smarty/smarty": "<4.5.3|>=5,<5.1.1", - "snipe/snipe-it": "<8.3.7", + "snipe/snipe-it": "<=8.6.1", "socalnick/scn-social-auth": "<1.15.2", "socialiteproviders/steam": "<1.1", + "solidinvoice/solidinvoice": "<=2.3.15", "solspace/craft-freeform": "<4.1.29|>=5,<=5.14.6", "soosyze/soosyze": "<=2", "spatie/browsershot": "<5.0.5", "spatie/image-optimizer": "<1.7.3", + "spatie/laravel-medialibrary": "<11.23", + "spatie/schema-org": ">=3.23.1,<3.23.2|>=4,<4.0.2", "spencer14420/sp-php-email-handler": "<1", "spipu/html2pdf": "<5.2.8", "spiral/roadrunner": "<2025.1", + "spomky-labs/otphp": "<11.4.3", "spoon/library": "<1.4.1", "spoonity/tcpdf": "<6.2.22", "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", @@ -7337,14 +6579,14 @@ "starcitizentools/short-description": ">=4,<4.0.1", "starcitizentools/tabber-neue": ">=1.9.1,<2.7.2|>=3,<3.1.1", "starcitizenwiki/embedvideo": "<=4", - "statamic/cms": "<5.73.16|>=6,<6.7.2", + "statamic/cms": "<5.74|>=6,<6.20.3", "stormpath/sdk": "<9.9.99", - "studio-42/elfinder": "<=2.1.64", + "studio-42/elfinder": "<=2.1.67", "studiomitte/friendlycaptcha": "<0.1.4", "subhh/libconnect": "<7.0.8|>=8,<8.1", "sukohi/surpass": "<1", "sulu/form-bundle": ">=2,<2.5.3", - "sulu/sulu": "<2.6.22|>=3,<3.0.5", + "sulu/sulu": "<=2.6.22|>=3,<=3.0.5", "sumocoders/framework-user-bundle": "<1.4", "superbig/craft-audit": "<3.0.2", "svewap/a21glossary": "<=0.4.10", @@ -7354,50 +6596,65 @@ "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", "sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1", "sylius/grid-bundle": "<1.10.1", + "sylius/mollie-plugin": "<2.2.8|>=3,<3.2.4|>=3.3,<3.3.1", "sylius/paypal-plugin": "<1.6.2|>=1.7,<1.7.2|>=2,<2.0.2", "sylius/resource-bundle": ">=1,<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4", - "sylius/sylius": "<1.9.12|>=1.10,<1.10.16|>=1.11,<1.11.17|>=1.12,<=1.12.22|>=1.13,<=1.13.14|>=1.14,<=1.14.17|>=2,<=2.0.15|>=2.1,<=2.1.11|>=2.2,<=2.2.2", + "sylius/sylius": "<1.9.12|>=1.10,<1.10.16|>=1.11,<1.11.17|>=1.12,<=1.12.22|>=1.13,<=1.13.14|>=1.14,<=1.14.17|>=2,<2.0.18|>=2.1,<2.1.15|>=2.2,<2.2.6", + "symbiote/silverstripe-advancedworkflow": "<6.4.5|>=7,<7.1.3|>=7.2,<7.2.1", "symbiote/silverstripe-multivaluefield": ">=3,<3.1", "symbiote/silverstripe-queuedjobs": ">=3,<3.0.2|>=3.1,<3.1.4|>=4,<4.0.7|>=4.1,<4.1.2|>=4.2,<4.2.4|>=4.3,<4.3.3|>=4.4,<4.4.3|>=4.5,<4.5.1|>=4.6,<4.6.4", "symbiote/silverstripe-seed": "<6.0.3", "symbiote/silverstripe-versionedfiles": "<=2.0.3", "symfont/process": ">=0", - "symfony/cache": ">=3.1,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8", + "symfony/cache": "<5.4.52|>=6,<6.4.40|>=7,<7.4.12|>=8,<8.0.12", "symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/dom-crawler": "<5.4.52|>=6,<6.4.40|>=7,<7.4.12|>=8,<8.0.12", "symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4", "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<5.3.15|>=5.4.3,<5.4.4|>=6.0.3,<6.0.4", - "symfony/http-client": ">=4.3,<5.4.47|>=6,<6.4.15|>=7,<7.1.8", - "symfony/http-foundation": "<5.4.50|>=6,<6.4.29|>=7,<7.3.7", - "symfony/http-kernel": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", + "symfony/html-sanitizer": ">=6.1,<6.4.41|>=7,<7.4.13|>=8,<8.0.13", + "symfony/http-client": ">=4.3,<5.4.53|>=6,<6.4.15|>=7,<7.1.8", + "symfony/http-foundation": "<5.4.50|>=6,<6.4.41|>=7,<7.4.13|>=8,<8.0.13", + "symfony/http-kernel": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6|>=7.4,<7.4.12|>=8,<8.0.12", "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", + "symfony/json-path": ">=7.3,<7.4.12|>=8,<8.0.12", + "symfony/lox24-notifier": ">=7.1,<7.4.12|>=8,<8.0.12", + "symfony/mailer": "<5.4.52|>=6,<6.4.40|>=7,<7.4.12|>=8,<8.0.12", + "symfony/mailjet-mailer": ">=6.4,<6.4.40|>=7,<7.4.12|>=8,<8.0.12", + "symfony/mailomat-mailer": ">=7.2,<7.4.13|>=8,<8.0.13", + "symfony/mailtrap-mailer": ">=7.2,<7.4.12|>=8,<8.0.12", "symfony/maker-bundle": ">=1.27,<1.29.2|>=1.30,<1.31.1", - "symfony/mime": ">=4.3,<4.3.8", + "symfony/mime": "<5.4.52|>=6,<6.4.40|>=7,<7.4.12|>=8,<8.0.12", + "symfony/monolog-bridge": "<5.4.52|>=6,<6.4.40|>=7,<7.4.12|>=8,<8.0.12", "symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", - "symfony/polyfill": ">=1,<1.10", + "symfony/polyfill": ">=1,<1.10|>=1.17.1,<1.38.1", + "symfony/polyfill-intl-idn": ">=1.17.1,<1.38.1", "symfony/polyfill-php55": ">=1,<1.10", "symfony/process": "<5.4.51|>=6,<6.4.33|>=7,<7.1.7|>=7.3,<7.3.11|>=7.4,<7.4.5|>=8,<8.0.5", "symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", - "symfony/routing": ">=2,<2.0.19", - "symfony/runtime": ">=5.3,<5.4.46|>=6,<6.4.14|>=7,<7.1.7", + "symfony/routing": "<5.4.53|>=6,<6.4.41|>=7,<7.4.13|>=8,<8.0.13", + "symfony/runtime": ">=5.3,<5.4.52|>=6,<6.4.40|>=7,<7.4.12|>=8,<8.0.12", "symfony/security": ">=2,<2.7.51|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.8", "symfony/security-bundle": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.4.10|>=7,<7.0.10|>=7.1,<7.1.3", "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.9", "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", "symfony/security-guard": ">=2.8,<3.4.48|>=4,<4.4.23|>=5,<5.2.8", - "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.4.47|>=6,<6.4.15|>=7,<7.1.8", + "symfony/security-http": "<5.4.53|>=6,<6.4.41|>=7,<7.4.13|>=8,<8.0.13", "symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12", - "symfony/symfony": "<5.4.51|>=6,<6.4.33|>=7,<7.3.11|>=7.4,<7.4.5|>=8,<8.0.5", + "symfony/symfony": "<5.4.53|>=6,<6.4.41|>=7,<7.4.13|>=8,<8.0.13", "symfony/translation": ">=2,<2.0.17", - "symfony/twig-bridge": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8", - "symfony/ux-autocomplete": "<2.11.2", - "symfony/ux-live-component": "<2.25.1", + "symfony/twig-bridge": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8|>=6.4.24,<6.4.40", + "symfony/twilio-notifier": ">=6.4,<6.4.40|>=7,<7.4.12|>=8,<8.0.12", + "symfony/ux-autocomplete": "<2.36|>=3,<3.1", + "symfony/ux-icons": ">=2.17,<2.36.1|>=3,<3.2", + "symfony/ux-live-component": "<2.36|>=3,<3.1", + "symfony/ux-toolkit": ">=2.32,<2.36.1|>=3,<3.2", "symfony/ux-twig-component": "<2.25.1", "symfony/validator": "<5.4.43|>=6,<6.4.11|>=7,<7.1.4", "symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8", - "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", + "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4|>=7.2.9,<7.4.12|>=8,<8.0.12", "symfony/webhook": ">=6.3,<6.3.8", - "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7|>=2.2.0.0-beta1,<2.2.0.0-beta2", + "symfony/yaml": "<5.4.52|>=6,<6.4.40|>=7,<7.4.12|>=8,<8.0.12", "symphonycms/symphony-2": "<2.6.4", "t3/dce": "<0.11.5|>=2.2,<2.6.2", "t3g/svg-sanitizer": "<1.0.3", @@ -7408,45 +6665,50 @@ "tecnickcom/tcpdf": "<6.8", "terminal42/contao-tablelookupwizard": "<3.3.5", "thelia/backoffice-default-template": ">=2.1,<2.1.2", - "thelia/thelia": ">=2.1,<2.1.3", + "thelia/thelia": ">=2.0.0.0-beta1,<2.1.3", "theonedemon/phpwhois": "<=4.2.5", "thinkcmf/thinkcmf": "<6.0.8", - "thorsten/phpmyfaq": "<4.1.1", + "thorsten/phpmyfaq": "<4.1.4", "tikiwiki/tiki-manager": "<=17.1", "timber/timber": ">=0.16.6,<1.23.1|>=1.24,<1.24.1|>=2,<2.1", - "tinymce/tinymce": "<7.2", + "tinymce/tinymce": "<7.9.3|>=8,<8.5.1", "tinymighty/wiki-seo": "<1.2.2", "titon/framework": "<9.9.99", "tltneon/lgsl": "<7", "tobiasbg/tablepress": "<=2.0.0.0-RC1", + "tomasnorre/crawler": "<11.0.13|>=12,<12.0.11", "topthink/framework": "<6.0.17|>=6.1,<=8.0.4", "topthink/think": "<=6.1.1", "topthink/thinkphp": "<=3.2.3|>=6.1.3,<=8.0.4", "torrentpier/torrentpier": "<=2.8.8", - "tpwd/ke_search": "<4.0.3|>=4.1,<4.6.6|>=5,<5.0.2", + "tpwd/ke_search": "<5.6.2|>=6,<6.6.1|>=7,<7.0.1", "tribalsystems/zenario": "<=9.7.61188", "truckersmp/phpwhois": "<=4.3.1", "ttskch/pagination-service-provider": "<1", "twbs/bootstrap": "<3.4.1|>=4,<4.3.1", - "twig/twig": "<3.11.2|>=3.12,<3.14.1|>=3.16,<3.19", - "typicms/core": "<16.1.7", + "twig/cssinliner-extra": "<3.26", + "twig/intl-extra": "<3.26", + "twig/markdown-extra": "<3.26", + "twig/twig": "<3.27", + "typicms/core": "<12.0.5|>=13,<13.0.9|>=14,<14.0.27|>=15,<15.0.29|>=16,<16.1.7", "typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2", - "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<9.5.55|>=10,<=10.4.54|>=11,<=11.5.48|>=12,<=12.4.40|>=13,<=13.4.22|>=14,<=14.0.1", + "typo3/cms-backend": "<10.4.57|>=11,<11.5.51|>=12,<12.4.46|>=13,<13.4.31|>=14,<14.3.3", "typo3/cms-belog": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", "typo3/cms-beuser": ">=9,<9.5.55|>=10,<10.4.54|>=11,<11.5.48|>=12,<12.4.37|>=13,<13.4.18", - "typo3/cms-core": "<=8.7.56|>=9,<9.5.55|>=10,<=10.4.54|>=11,<=11.5.48|>=12,<=12.4.40|>=13,<=13.4.22|>=14,<=14.0.1", + "typo3/cms-core": "<10.4.57|>=11,<11.5.51|>=12,<12.4.46|>=13,<13.4.31|>=14,<14.3.3", "typo3/cms-dashboard": ">=10,<10.4.54|>=11,<11.5.48|>=12,<12.4.37|>=13,<13.4.18", "typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1", "typo3/cms-extensionmanager": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", "typo3/cms-felogin": ">=4.2,<4.2.3", - "typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1", - "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", + "typo3/cms-filelist": ">=11,<11.5.51|>=12,<12.4.46|>=13,<13.4.31|>=14,<14.3.3", + "typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1|>=8,<8.7.23|>=9,<9.5.4", + "typo3/cms-form": "<10.4.57|>=11,<11.5.51|>=12,<12.4.46|>=13,<13.4.31|>=14,<14.3.5", "typo3/cms-frontend": "<4.3.9|>=4.4,<4.4.5", - "typo3/cms-indexed-search": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", + "typo3/cms-indexed-search": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<13.4.31|>=14,<14.3.3", "typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8|==13.4.2", "typo3/cms-lowlevel": ">=11,<=11.5.41", "typo3/cms-recordlist": ">=11,<11.5.48", - "typo3/cms-recycler": ">=9,<9.5.55|>=10,<=10.4.54|>=11,<=11.5.48|>=12,<=12.4.40|>=13,<=13.4.22|>=14,<=14.0.1", + "typo3/cms-recycler": "<10.4.57|>=11,<11.5.51|>=12,<12.4.46|>=13,<13.4.31|>=14,<14.3.3", "typo3/cms-redirects": ">=10,<=10.4.54|>=11,<=11.5.48|>=12,<=12.4.40|>=13,<=13.4.22|>=14,<=14.0.1", "typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30", "typo3/cms-scheduler": ">=11,<=11.5.41", @@ -7454,7 +6716,7 @@ "typo3/cms-webhooks": ">=12,<=12.4.30|>=13,<=13.4.11", "typo3/cms-workspaces": ">=9,<9.5.55|>=10,<10.4.54|>=11,<11.5.48|>=12,<12.4.37|>=13,<13.4.18", "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", - "typo3/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3", + "typo3/html-sanitizer": "<2.3.2", "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3", "typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1", "typo3/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5", @@ -7470,7 +6732,7 @@ "uvdesk/core-framework": "<=1.1.1", "vanilla/safecurl": "<0.9.2", "verbb/comments": "<1.5.5", - "verbb/formie": "<=2.1.43", + "verbb/formie": "<3.1.28", "verbb/image-resizer": "<2.0.9", "verbb/knock-knock": "<1.2.8", "verot/class.upload.php": "<=2.1.6", @@ -7484,15 +6746,20 @@ "wallabag/wallabag": "<2.6.11", "wanglelecc/laracms": "<=1.0.3", "wapplersystems/a21glossary": "<=0.4.10", - "web-auth/webauthn-framework": ">=3.3,<3.3.4|>=4.5,<4.9|>=5.2,<5.2.4", - "web-auth/webauthn-lib": ">=4.5,<4.9|>=5.2,<5.2.4", - "web-auth/webauthn-symfony-bundle": ">=5.2,<5.2.4", + "web-auth/webauthn-framework": ">=3.3,<3.3.4|>=4.5,<4.9|>=5.2,<5.2.4|>=5.3,<5.3.1", + "web-auth/webauthn-lib": ">=4.5,<5.3.5", + "web-auth/webauthn-symfony-bundle": "<5.3.4", "web-feet/coastercms": "==5.5", + "web-token/jwt-bundle": "<3.4.10|>=4,<4.0.7|>=4.1,<4.1.7", + "web-token/jwt-experimental": "<4.1.7", + "web-token/jwt-framework": "<4.1.7", + "web-token/jwt-library": "<3.4.10|>=4,<4.0.7|>=4.1,<4.1.7", "web-tp3/wec_map": "<3.0.3", "webbuilders-group/silverstripe-kapost-bridge": "<0.4", "webcoast/deferred-image-processing": "<1.0.2", "webklex/laravel-imap": "<5.3", "webklex/php-imap": "<5.3", + "webonyx/graphql-php": "<=15.32.2", "webpa/webpa": "<3.1.2", "webreinvent/vaahcms": "<=2.3.1", "wikibase/wikibase": "<=1.39.3", @@ -7504,25 +6771,27 @@ "winter/wn-system-module": "<1.2.4", "wintercms/winter": "<=1.2.3", "wireui/wireui": "<1.19.3|>=2,<2.1.3", + "wnx/laravel-backup-restore": "<=1.9.3", "woocommerce/woocommerce": "<6.6|>=8.8,<8.8.5|>=8.9,<8.9.3", "wp-cli/wp-cli": ">=0.12,<2.5", - "wp-graphql/wp-graphql": "<=1.14.5", + "wp-coding-standards/wpcs": ">=0.14.1,<3.4.1", + "wp-graphql/wp-graphql": "<=2.6", "wp-premium/gravityforms": "<2.4.21", "wpanel/wpanel4-cms": "<=4.3.1", "wpcloud/wp-stateless": "<3.2", "wpglobus/wpglobus": "<=1.9.6", "wpmetabox/meta-box": "<5.11.2", - "wwbn/avideo": "<=26", + "wwbn/avideo": "<=29", "xataface/xataface": "<3", "xpressengine/xpressengine": "<3.0.15", "yab/quarx": "<2.4.5", "yansongda/pay": "<=3.7.19", - "yeswiki/yeswiki": "<4.6", + "yeswiki/yeswiki": "<4.6.6", "yetiforce/yetiforce-crm": "<6.5", "yidashi/yii2cmf": "<=2", "yii2mod/yii2-cms": "<1.9.2", "yiisoft/yii": "<1.1.31", - "yiisoft/yii2": "<2.0.52", + "yiisoft/yii2": "<2.0.55", "yiisoft/yii2-authclient": "<2.2.15", "yiisoft/yii2-bootstrap": "<2.0.4", "yiisoft/yii2-dev": "<=2.0.45", @@ -7584,51 +6853,309 @@ ], "authors": [ { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "role": "maintainer" + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "role": "maintainer" + }, + { + "name": "Ilya Tribusean", + "email": "slash3b@gmail.com", + "role": "maintainer" + } + ], + "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", + "keywords": [ + "dev" + ], + "support": { + "issues": "https://github.com/Roave/SecurityAdvisories/issues", + "source": "https://github.com/Roave/SecurityAdvisories/tree/latest" + }, + "funding": [ + { + "url": "https://github.com/Ocramius", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/roave/security-advisories", + "type": "tidelift" + } + ], + "time": "2026-08-01T00:01:24+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:12:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:58:43+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:59:15+00:00" + }, + { + "name": "sebastian/comparator", + "version": "5.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "55dfef806eb7dfeb6e7a6935601fef866f8ca48d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55dfef806eb7dfeb6e7a6935601fef866f8ca48d", + "reference": "55dfef806eb7dfeb6e7a6935601fef866f8ca48d", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/diff": "^5.0", + "sebastian/exporter": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" }, { - "name": "Ilya Tribusean", - "email": "slash3b@gmail.com", - "role": "maintainer" + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" } ], - "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", "keywords": [ - "dev" + "comparator", + "compare", + "equality" ], "support": { - "issues": "https://github.com/Roave/SecurityAdvisories/issues", - "source": "https://github.com/Roave/SecurityAdvisories/tree/latest" + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.5" }, "funding": [ { - "url": "https://github.com/Ocramius", + "url": "https://github.com/sebastianbergmann", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/roave/security-advisories", + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", "type": "tidelift" } ], - "time": "2026-04-02T00:32:12+00:00" + "time": "2026-01-24T09:25:16+00:00" }, { - "name": "sebastian/cli-parser", - "version": "2.0.1", + "name": "sebastian/complexity", + "version": "3.2.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "68ff824baeae169ec9f2137158ee529584553799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", - "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", "shasum": "" }, "require": { + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1" }, "require-dev": { @@ -7637,7 +7164,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.0-dev" + "dev-main": "3.2-dev" } }, "autoload": { @@ -7656,12 +7183,12 @@ "role": "lead" } ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" }, "funding": [ { @@ -7669,32 +7196,33 @@ "type": "github" } ], - "time": "2024-03-02T07:12:49+00:00" + "time": "2023-12-21T08:37:17+00:00" }, { - "name": "sebastian/code-unit", - "version": "2.0.0", + "name": "sebastian/diff", + "version": "5.1.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", - "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", "shasum": "" }, "require": { "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^10.0", + "symfony/process": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -7709,15 +7237,25 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" } ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" + "issues": "https://github.com/sebastianbergmann/diff/issues", + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" }, "funding": [ { @@ -7725,20 +7263,20 @@ "type": "github" } ], - "time": "2023-02-03T06:58:43+00:00" + "time": "2024-03-02T07:15:17+00:00" }, { - "name": "sebastian/code-unit-reverse-lookup", - "version": "3.0.0", + "name": "sebastian/environment", + "version": "6.1.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", - "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", "shasum": "" }, "require": { @@ -7747,10 +7285,13 @@ "require-dev": { "phpunit/phpunit": "^10.0" }, + "suggest": { + "ext-posix": "*" + }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "6.1-dev" } }, "autoload": { @@ -7768,11 +7309,17 @@ "email": "sebastian@phpunit.de" } ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "https://github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" + "issues": "https://github.com/sebastianbergmann/environment/issues", + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/6.1.0" }, "funding": [ { @@ -7780,28 +7327,26 @@ "type": "github" } ], - "time": "2023-02-03T06:59:15+00:00" + "time": "2024-03-23T08:47:14+00:00" }, { - "name": "sebastian/comparator", - "version": "5.0.5", + "name": "sebastian/exporter", + "version": "5.1.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55dfef806eb7dfeb6e7a6935601fef866f8ca48d" + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "0735b90f4da94969541dac1da743446e276defa6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55dfef806eb7dfeb6e7a6935601fef866f8ca48d", - "reference": "55dfef806eb7dfeb6e7a6935601fef866f8ca48d", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/0735b90f4da94969541dac1da743446e276defa6", + "reference": "0735b90f4da94969541dac1da743446e276defa6", "shasum": "" }, "require": { - "ext-dom": "*", "ext-mbstring": "*", "php": ">=8.1", - "sebastian/diff": "^5.0", - "sebastian/exporter": "^5.0" + "sebastian/recursion-context": "^5.0" }, "require-dev": { "phpunit/phpunit": "^10.5" @@ -7809,7 +7354,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -7834,22 +7379,25 @@ "name": "Volker Dusch", "email": "github@wallbash.com" }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, { "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" + "email": "bschussek@gmail.com" } ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", "keywords": [ - "comparator", - "compare", - "equality" + "export", + "exporter" ], "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.5" + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.4" }, "funding": [ { @@ -7865,24 +7413,86 @@ "type": "thanks_dev" }, { - "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", "type": "tidelift" } ], - "time": "2026-01-24T09:25:16+00:00" + "time": "2025-09-24T06:09:11+00:00" }, { - "name": "sebastian/complexity", - "version": "3.2.0", + "name": "sebastian/global-state", + "version": "6.0.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "68ff824baeae169ec9f2137158ee529584553799" + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:19:19+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", - "reference": "68ff824baeae169ec9f2137158ee529584553799", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", "shasum": "" }, "require": { @@ -7895,7 +7505,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.2-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -7914,12 +7524,12 @@ "role": "lead" } ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" }, "funding": [ { @@ -7927,33 +7537,34 @@ "type": "github" } ], - "time": "2023-12-21T08:37:17+00:00" + "time": "2023-12-21T08:38:20+00:00" }, { - "name": "sebastian/diff", - "version": "5.1.1", + "name": "sebastian/object-enumerator", + "version": "5.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", - "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^10.0", - "symfony/process": "^6.4" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.1-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -7969,24 +7580,13 @@ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" } ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" }, "funding": [ { @@ -7994,20 +7594,20 @@ "type": "github" } ], - "time": "2024-03-02T07:15:17+00:00" + "time": "2023-02-03T07:08:32+00:00" }, { - "name": "sebastian/environment", - "version": "6.1.0", + "name": "sebastian/object-reflector", + "version": "3.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", - "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", "shasum": "" }, "require": { @@ -8016,13 +7616,10 @@ "require-dev": { "phpunit/phpunit": "^10.0" }, - "suggest": { - "ext-posix": "*" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.1-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -8040,17 +7637,11 @@ "email": "sebastian@phpunit.de" } ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "https://github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/6.1.0" + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" }, "funding": [ { @@ -8058,26 +7649,24 @@ "type": "github" } ], - "time": "2024-03-23T08:47:14+00:00" + "time": "2023-02-03T07:06:18+00:00" }, { - "name": "sebastian/exporter", - "version": "5.1.4", + "name": "sebastian/recursion-context", + "version": "5.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "0735b90f4da94969541dac1da743446e276defa6" + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "47e34210757a2f37a97dcd207d032e1b01e64c7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/0735b90f4da94969541dac1da743446e276defa6", - "reference": "0735b90f4da94969541dac1da743446e276defa6", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/47e34210757a2f37a97dcd207d032e1b01e64c7a", + "reference": "47e34210757a2f37a97dcd207d032e1b01e64c7a", "shasum": "" }, "require": { - "ext-mbstring": "*", - "php": ">=8.1", - "sebastian/recursion-context": "^5.0" + "php": ">=8.1" }, "require-dev": { "phpunit/phpunit": "^10.5" @@ -8085,7 +7674,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "5.1-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -8106,29 +7695,17 @@ "name": "Jeff Welch", "email": "whatthejeff@gmail.com" }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, { "name": "Adam Harvey", "email": "aharvey@php.net" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" } ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "https://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.4" + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.1" }, "funding": [ { @@ -8144,39 +7721,36 @@ "type": "thanks_dev" }, { - "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", "type": "tidelift" } ], - "time": "2025-09-24T06:09:11+00:00" + "time": "2025-08-10T07:50:56+00:00" }, { - "name": "sebastian/global-state", - "version": "6.0.2", + "name": "sebastian/type", + "version": "4.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", - "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", "shasum": "" }, "require": { - "php": ">=8.1", - "sebastian/object-reflector": "^3.0", - "sebastian/recursion-context": "^5.0" + "php": ">=8.1" }, "require-dev": { - "ext-dom": "*", "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -8191,18 +7765,15 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Snapshotting of global state", - "homepage": "https://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2" + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" }, "funding": [ { @@ -8210,33 +7781,29 @@ "type": "github" } ], - "time": "2024-03-02T07:19:19+00:00" + "time": "2023-02-03T07:10:45+00:00" }, { - "name": "sebastian/lines-of-code", - "version": "2.0.2", + "name": "sebastian/version", + "version": "4.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", - "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", "shasum": "" }, "require": { - "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1" }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -8255,12 +7822,11 @@ "role": "lead" } ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" }, "funding": [ { @@ -8268,337 +7834,439 @@ "type": "github" } ], - "time": "2023-12-21T08:38:20+00:00" + "time": "2023-02-07T11:34:05+00:00" }, { - "name": "sebastian/object-enumerator", - "version": "5.0.0", + "name": "spatie/array-to-xml", + "version": "3.4.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" + "url": "https://github.com/spatie/array-to-xml.git", + "reference": "88b2f3852a922dd73177a68938f8eb2ec70c7224" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", - "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", + "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/88b2f3852a922dd73177a68938f8eb2ec70c7224", + "reference": "88b2f3852a922dd73177a68938f8eb2ec70c7224", "shasum": "" }, "require": { - "php": ">=8.1", - "sebastian/object-reflector": "^3.0", - "sebastian/recursion-context": "^5.0" + "ext-dom": "*", + "php": "^8.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "mockery/mockery": "^1.2", + "pestphp/pest": "^1.21", + "spatie/pest-plugin-snapshots": "^1.1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "3.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Spatie\\ArrayToXml\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://freek.dev", + "role": "Developer" } ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "description": "Convert an array to xml", + "homepage": "https://github.com/spatie/array-to-xml", + "keywords": [ + "array", + "convert", + "xml" + ], "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" + "source": "https://github.com/spatie/array-to-xml/tree/3.4.4" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", "type": "github" } ], - "time": "2023-02-03T07:08:32+00:00" + "time": "2025-12-15T09:00:41+00:00" }, { - "name": "sebastian/object-reflector", - "version": "3.0.0", + "name": "squizlabs/php_codesniffer", + "version": "4.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" + "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", + "reference": "bbdc3d0532623e21838b7041a4364383a8126f96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", - "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/bbdc3d0532623e21838b7041a4364383a8126f96", + "reference": "bbdc3d0532623e21838b7041a4364383a8126f96", "shasum": "" }, "require": { - "php": ">=8.1" + "ext-libxml": "*", + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=7.2.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } + "phpunit/phpunit": "^8.4.0 || ^9.3.4 || ^10.5.32 || 11.3.3 - 11.5.28 || ^11.5.31" }, - "autoload": { - "classmap": [ - "src/" - ] + "suggest": { + "ext-iconv": "For accurate character length calculation when the checked files contain multi-byte characters.", + "ext-pcntl": "For parallel processing support via the --parallel CLI option." }, + "bin": [ + "bin/phpcbf", + "bin/phpcs" + ], + "type": "library", "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Greg Sherwood", + "role": "Former lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "Current lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" } ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "description": "PHP_CodeSniffer tokenizes PHP files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards", + "static analysis" + ], "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" + "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", + "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", + "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://github.com/PHPCSStandards", "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcsstandards", + "type": "thanks_dev" } ], - "time": "2023-02-03T07:06:18+00:00" + "time": "2026-08-06T02:45:27+00:00" }, { - "name": "sebastian/recursion-context", - "version": "5.0.1", + "name": "symfony/config", + "version": "v7.4.10", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "47e34210757a2f37a97dcd207d032e1b01e64c7a" + "url": "https://github.com/symfony/config.git", + "reference": "d91b6c7cd2a8c9a9c2b8d26c8f5ed48edf99ef57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/47e34210757a2f37a97dcd207d032e1b01e64c7a", - "reference": "47e34210757a2f37a97dcd207d032e1b01e64c7a", + "url": "https://api.github.com/repos/symfony/config/zipball/d91b6c7cd2a8c9a9c2b8d26c8f5ed48edf99ef57", + "reference": "d91b6c7cd2a8c9a9c2b8d26c8f5ed48edf99ef57", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/filesystem": "^7.1|^8.0", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/finder": "<6.4", + "symfony/service-contracts": "<2.5" }, "require-dev": { - "phpunit/phpunit": "^10.5" + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Config\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Adam Harvey", - "email": "aharvey@php.net" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "https://github.com/sebastianbergmann/recursion-context", + "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.1" + "source": "https://github.com/symfony/config/tree/v7.4.10" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "url": "https://symfony.com/sponsor", + "type": "custom" }, { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" + "url": "https://github.com/fabpot", + "type": "github" }, { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" + "url": "https://github.com/nicolas-grekas", + "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-08-10T07:50:56+00:00" + "time": "2026-05-03T14:20:49+00:00" }, { - "name": "sebastian/type", - "version": "4.0.0", + "name": "symfony/dependency-injection", + "version": "v7.4.13", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "f299e20ce983be6c0744952533c6dfeaaa1448e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", - "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f299e20ce983be6c0744952533c6dfeaaa1448e2", + "reference": "f299e20ce983be6c0744952533c6dfeaaa1448e2", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/service-contracts": "^3.6", + "symfony/var-exporter": "^6.4.20|^7.2.5|^8.0" + }, + "conflict": { + "ext-psr": "<1.1|>=2", + "symfony/config": "<6.4", + "symfony/finder": "<6.4", + "symfony/yaml": "<6.4" + }, + "provide": { + "psr/container-implementation": "1.1|2.0", + "symfony/service-implementation": "1.1|2.0|3.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\DependencyInjection\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", + "description": "Allows you to standardize and centralize the way objects are constructed in your application", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" + "source": "https://github.com/symfony/dependency-injection/tree/v7.4.13" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2023-02-03T07:10:45+00:00" + "time": "2026-05-20T14:07:29+00:00" }, { - "name": "sebastian/version", - "version": "4.0.1", + "name": "symfony/event-dispatcher", + "version": "v7.4.15", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "336e7f3b9e95aba04f93ea9143920c2186abfbb9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/336e7f3b9e95aba04f93ea9143920c2186abfbb9", + "reference": "336e7f3b9e95aba04f93ea9143920c2186abfbb9", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^7.0|^8.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.15" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2023-02-07T11:34:05+00:00" + "time": "2026-07-21T15:13:06+00:00" }, { - "name": "spatie/array-to-xml", - "version": "3.4.4", + "name": "symfony/event-dispatcher-contracts", + "version": "v3.7.1", "source": { "type": "git", - "url": "https://github.com/spatie/array-to-xml.git", - "reference": "88b2f3852a922dd73177a68938f8eb2ec70c7224" + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "c7de7a00ffb67842132da02ea92988a39ccd9f4e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/88b2f3852a922dd73177a68938f8eb2ec70c7224", - "reference": "88b2f3852a922dd73177a68938f8eb2ec70c7224", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c7de7a00ffb67842132da02ea92988a39ccd9f4e", + "reference": "c7de7a00ffb67842132da02ea92988a39ccd9f4e", "shasum": "" }, "require": { - "ext-dom": "*", - "php": "^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.2", - "pestphp/pest": "^1.21", - "spatie/pest-plugin-snapshots": "^1.1" + "php": ">=8.1", + "psr/event-dispatcher": "^1" }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { - "dev-main": "3.x-dev" + "dev-main": "3.7-dev" } }, "autoload": { "psr-4": { - "Spatie\\ArrayToXml\\": "src" + "Symfony\\Contracts\\EventDispatcher\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -8607,125 +8275,129 @@ ], "authors": [ { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://freek.dev", - "role": "Developer" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Convert an array to xml", - "homepage": "https://github.com/spatie/array-to-xml", + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", "keywords": [ - "array", - "convert", - "xml" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "source": "https://github.com/spatie/array-to-xml/tree/3.4.4" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.7.1" }, "funding": [ { - "url": "https://spatie.be/open-source/support-us", + "url": "https://symfony.com/sponsor", "type": "custom" }, { - "url": "https://github.com/spatie", + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2025-12-15T09:00:41+00:00" + "time": "2026-06-05T06:23:12+00:00" }, { - "name": "squizlabs/php_codesniffer", - "version": "3.13.5", + "name": "symfony/filesystem", + "version": "v7.4.15", "source": { "type": "git", - "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "0ca86845ce43291e8f5692c7356fccf3bcf02bf4" + "url": "https://github.com/symfony/filesystem.git", + "reference": "ff16a16bf87fdf264638b8f6995b3515975e3c79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/0ca86845ce43291e8f5692c7356fccf3bcf02bf4", - "reference": "0ca86845ce43291e8f5692c7356fccf3bcf02bf4", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/ff16a16bf87fdf264638b8f6995b3515975e3c79", + "reference": "ff16a16bf87fdf264638b8f6995b3515975e3c79", "shasum": "" }, "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" + "symfony/process": "^6.4|^7.0|^8.0" }, - "bin": [ - "bin/phpcbf", - "bin/phpcs" - ], "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Greg Sherwood", - "role": "Former lead" - }, - { - "name": "Juliette Reinders Folmer", - "role": "Current lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Contributors", - "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards", - "static analysis" - ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", - "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", - "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", - "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" + "source": "https://github.com/symfony/filesystem/tree/v7.4.15" }, "funding": [ { - "url": "https://github.com/PHPCSStandards", - "type": "github" + "url": "https://symfony.com/sponsor", + "type": "custom" }, { - "url": "https://github.com/jrfnl", + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://opencollective.com/php_codesniffer", - "type": "open_collective" + "url": "https://github.com/nicolas-grekas", + "type": "github" }, { - "url": "https://thanks.dev/u/gh/phpcsstandards", - "type": "thanks_dev" + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2025-11-04T16:30:35+00:00" + "time": "2026-07-22T07:36:05+00:00" }, { "name": "symfony/finder", - "version": "v7.4.8", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "e0be088d22278583a82da281886e8c3592fbf149" + "reference": "13b38720174286f55d1761152b575a8d1436fc25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/e0be088d22278583a82da281886e8c3592fbf149", - "reference": "e0be088d22278583a82da281886e8c3592fbf149", + "url": "https://api.github.com/repos/symfony/finder/zipball/13b38720174286f55d1761152b575a8d1436fc25", + "reference": "13b38720174286f55d1761152b575a8d1436fc25", "shasum": "" }, "require": { @@ -8760,7 +8432,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.4.8" + "source": "https://github.com/symfony/finder/tree/v7.4.14" }, "funding": [ { @@ -8780,7 +8452,7 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-06-27T08:31:18+00:00" }, { "name": "symfony/polyfill-php81", @@ -8927,6 +8599,87 @@ ], "time": "2026-05-23T16:05:06+00:00" }, + { + "name": "symfony/var-exporter", + "version": "v7.4.9", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-exporter.git", + "reference": "22e03a49c95ef054a43601cd159b222bfab1c701" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/22e03a49c95ef054a43601cd159b222bfab1c701", + "reference": "22e03a49c95ef054a43601cd159b222bfab1c701", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "require-dev": { + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\VarExporter\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows exporting any serializable PHP data structure to plain PHP code", + "homepage": "https://symfony.com", + "keywords": [ + "clone", + "construct", + "export", + "hydrate", + "instantiate", + "lazy-loading", + "proxy", + "serialize" + ], + "support": { + "source": "https://github.com/symfony/var-exporter/tree/v7.4.9" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-04-18T13:18:21+00:00" + }, { "name": "symfony/yaml", "version": "v7.4.12", @@ -9055,16 +8808,16 @@ }, { "name": "twig/twig", - "version": "v3.27.0", + "version": "v3.28.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "04ae1bfe9463c816cf72ca0abe7eae2c77a9a9ed" + "reference": "597c12ed286fb9d1701a36684ce6e0cbe28ebc8b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/04ae1bfe9463c816cf72ca0abe7eae2c77a9a9ed", - "reference": "04ae1bfe9463c816cf72ca0abe7eae2c77a9a9ed", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/597c12ed286fb9d1701a36684ce6e0cbe28ebc8b", + "reference": "597c12ed286fb9d1701a36684ce6e0cbe28ebc8b", "shasum": "" }, "require": { @@ -9119,7 +8872,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.27.0" + "source": "https://github.com/twigphp/Twig/tree/v3.28.0" }, "funding": [ { @@ -9131,7 +8884,7 @@ "type": "tidelift" } ], - "time": "2026-05-27T13:05:51+00:00" + "time": "2026-07-03T20:44:34+00:00" }, { "name": "vimeo/psalm", @@ -9316,9 +9069,9 @@ "platform": { "php": "^8.3" }, - "platform-dev": [], + "platform-dev": {}, "platform-overrides": { "php": "8.3" }, - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.9.0" } diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..adb718968 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,87 @@ +# Local development stack for Doriath. +# +# Brings up PostgreSQL + Nextcloud 32 on http://localhost:8080 (admin/admin), +# with this repo bind-mounted as the `doriath` custom app and the sibling +# `../openregister` checkout mounted alongside it — Doriath builds on +# OpenRegister's AppHost engine, so both apps are enabled automatically on +# every start by the before-starting hook (docker/nextcloud/enable-apps.sh): +# +# docker compose up -d +# +# Mirrors openregister/docker-compose.yml (same port, same container name for +# the `docker exec nextcloud php occ ...` habit) — run only ONE of these app +# stacks at a time; they all claim port 8080 and the `nextcloud` name. +# +# SPDX-License-Identifier: EUPL-1.2 +# SPDX-FileCopyrightText: 2026 Conduction B.V. + +volumes: + nextcloud: + db: + +networks: + default: + name: doriath-network + +services: + db: + # pgvector image: the mounted OpenRegister backend uses the vector and + # pg_trgm extensions (enabled by the init script below). + image: pgvector/pgvector:pg16 + restart: always + container_name: doriath-postgres + volumes: + - db:/var/lib/postgresql/data + - ./docker/postgres/init-extensions.sql:/docker-entrypoint-initdb.d/01-init-extensions.sql:ro + environment: + - POSTGRES_DB=nextcloud + - POSTGRES_USER=nextcloud + - POSTGRES_PASSWORD=!ChangeMe! + ports: + - "5432:5432" + healthcheck: + test: ["CMD-SHELL", "pg_isready -U nextcloud -d nextcloud"] + interval: 10s + timeout: 5s + retries: 5 + + nextcloud: + # NC 32 — within Doriath's info.xml min/max-version window (32–34) and + # matches the openregister reference stack. + image: nextcloud:32 + user: root + container_name: nextcloud + restart: always + ports: + - "8080:80" + depends_on: + db: + condition: service_healthy + volumes: + - nextcloud:/var/www/html:rw + # Mount the whole custom_apps dir from the host BEFORE the subdir + # mounts. Without it, Docker creates the intermediate custom_apps + # directory inside the named volume as root:root, www-data cannot + # write into it, and /settings/apps 500s with "Cannot write into + # 'apps' directory" (custom_apps is the image's only writable + # apps_paths entry). Host mounts are world-writable, so this also + # gives App Store installs a place to land. + - ./custom_apps:/var/www/html/custom_apps + - .:/var/www/html/custom_apps/doriath + - ../openregister:/var/www/html/custom_apps/openregister + # before-starting hooks run as www-data on every start, after + # install/upgrade — this one enables openregister + doriath. Do NOT + # replace the image's entrypoint for this (that broke startup before). + - ./docker/nextcloud/enable-apps.sh:/docker-entrypoint-hooks.d/before-starting/enable-apps.sh:ro + environment: + - POSTGRES_DB=nextcloud + - POSTGRES_USER=nextcloud + - POSTGRES_PASSWORD=!ChangeMe! + - POSTGRES_HOST=db + - NEXTCLOUD_ADMIN_USER=admin + - NEXTCLOUD_ADMIN_PASSWORD=admin + - NEXTCLOUD_TRUSTED_DOMAINS=localhost nextcloud + - TZ=Europe/Amsterdam + - PHP_MEMORY_LIMIT=4G + - PHP_UPLOAD_LIMIT=2G + - PHP_POST_MAX_SIZE=2G diff --git a/docker/nextcloud/enable-apps.sh b/docker/nextcloud/enable-apps.sh new file mode 100644 index 000000000..11cb7572f --- /dev/null +++ b/docker/nextcloud/enable-apps.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# before-starting hook for the official nextcloud image: runs as www-data on +# every container start, after install/upgrade and before Apache. A previous +# attempt used `entrypoint: occ app:enable ...`, which replaces the image's +# entrypoint entirely and prevents Nextcloud from starting — hence this hook. +# +# app:enable is idempotent, so re-running on every start is harmless. +# openregister must be enabled first: doriath builds on its AppHost engine. +# +# SPDX-License-Identifier: EUPL-1.2 +# SPDX-FileCopyrightText: 2026 Conduction B.V. +set -eu + +php /var/www/html/occ app:enable openregister +php /var/www/html/occ app:enable doriath diff --git a/docker/postgres/init-extensions.sql b/docker/postgres/init-extensions.sql new file mode 100644 index 000000000..a58269361 --- /dev/null +++ b/docker/postgres/init-extensions.sql @@ -0,0 +1,14 @@ +-- PostgreSQL extension initialization for the Doriath dev stack. +-- +-- Doriath's own tables need nothing beyond stock PostgreSQL; these +-- extensions are for the OpenRegister backend mounted alongside it +-- (vector/trigram search). Trimmed copy of openregister's +-- docker/postgres/init-extensions.sql. + +CREATE EXTENSION IF NOT EXISTS vector; +CREATE EXTENSION IF NOT EXISTS pg_trgm; +CREATE EXTENSION IF NOT EXISTS btree_gin; +CREATE EXTENSION IF NOT EXISTS btree_gist; +CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; + +ALTER DATABASE nextcloud SET pg_trgm.similarity_threshold = 0.3; diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 5ce38a90f..da49219f2 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -553,6 +553,38 @@ All entities use Nextcloud's `ISchemaWrapper` migration pattern. Migrations are | SecretRequest | `doriath_secret_requests` | Unique index on `token` | | SuiteMigration | `doriath_suite_migrations` | — | +### 4.1 Public endpoint rate limits + +Every controller method registered with `#[PublicPage]` (reachable without a +Nextcloud session) also carries a Nextcloud-native +`#[AnonRateLimit(limit: N, period: 60)]` attribute. Limits are sized per +endpoint sensitivity — tighter for the highest-value credential-custody +targets, looser for polling machine clients — and are intentionally +documented here so a future PR loosening one has to consciously edit +documented intent rather than silently drop a limit during refactoring. + +| Controller::method | Limit | Rationale | +|---|---|---| +| `ApplicationTokenController::exchange` | 10 / 60s | JWT-bearer token exchange (`POST /api/v1/token`) is the single highest-value target — a successful forced/guessed exchange yields a bearer token good for reading an application's secrets. Legitimate callers retry infrequently. | +| `LinkShareAccessController::show` | 15 / 60s | Phase 1 of the public link-share access protocol. Composes with the existing `recordFailedAttempt` domain-level brute-force counter (auto-delete after N failed attempts): the rate limit rejects with 429 on an over-limit burst *before* the domain counter increments, so a rate-limited request is never double-counted as a "failed attempt". | +| `LinkShareAccessController::confirm` | 15 / 60s | Phase 2 confirmation of a successful client-side decryption. Legitimate recipients make a handful of requests per session, not bursts. | +| `SecretRequestFillController::show` | 20 / 60s | Public token-based recipient fill-in flow, phase 1 (resolve token metadata). | +| `SecretRequestFillController::fill` | 20 / 60s | Fill-in flow phase 2 (submit encrypted fields). | +| `ApplicationSecretsController::index` | 30 / 60s | Bearer-authenticated but the route is `#[PublicPage]` so anonymous traffic reaches the controller before `JwtAuthMiddleware` validates the header. Limit protects the pre-auth surface; generous enough for a legitimate polling machine client. | +| `ApplicationSecretsController::show` | 30 / 60s | Same rationale as `index`. | +| `ApplicationController::create` | 10 / 60s | Anonymous application self-registration — only reachable when an admin opts in via `anonymous_application_registration_enabled`. Admins enabling anonymous registration inherit this rate limit. | +| `MachineLeaseController::index` | 30 / 60s | Bearer-authenticated lease list (machine-secret-leases §4.1); `#[PublicPage]` pre-auth surface, same polling profile as the secrets endpoints. | +| `MachineLeaseController::renew` | 30 / 60s | Lease renewal — legitimate connectors renew at most once per default-TTL window. | +| `MachineLeaseController::revoke` | 30 / 60s | Lease self-revocation — rare in legitimate use; the limit caps abuse of the rotation-flag side effect. | +| `EphemeralSendAccessController::peek` | 15 / 60s | Anonymous ephemeral-send metadata (ephemeral-send §4.2); the ≥256-bit token is the real access control, the limit caps enumeration attempts. | +| `EphemeralSendAccessController::access` | 15 / 60s | Ciphertext fetch phase of the two-phase protocol; a view is only consumed on confirm. | +| `EphemeralSendAccessController::confirm` | 15 / 60s | Decrypt confirmation (consumes a view, burns at cap). | +| `EphemeralSendAccessController::failure` | 15 / 60s | Failed-password reporting (burns the send at 5); the limit caps deliberate burn-griefing bursts. | + +All limits are keyed anonymously (per-IP) by Nextcloud's rate-limiter +middleware, which is available since NC 24; Doriath's `info.xml` floor +(NC 31) already satisfies this. + ## 5. Open Research Questions 1. **Application API authentication** — RFC 7523 (JWT Bearer / Private Key JWT) is the lean for how approved applications authenticate to retrieve secrets. Uses existing RSA key infrastructure, short-lived tokens, no new credential. Needs team discussion before finalizing. See [application-mgmt spec](../openspec/specs/application-mgmt/spec.md). diff --git a/docs/FEATURES.md b/docs/FEATURES.md index dae0f9086..dada440b9 100644 --- a/docs/FEATURES.md +++ b/docs/FEATURES.md @@ -195,8 +195,8 @@ There is **no production-ready Nextcloud-native encrypted vault with application | CA health status card (admin only) | **V1** | Certificate lifecycle visibility | | Recently accessed secrets widget | **V1** | Quick access | | Sharing activity summary | **V1** | Collaboration overview | -| Password health report (weak, reused, old passwords) | **Enterprise** | Security audit | -| Breach detection (HaveIBeenPwned integration) | **Enterprise** | Proactive security | +| Password health report (weak, reused, old passwords) | **V1** ✅ | Security audit — implemented in `password-health` (client-side vault health report) | +| Breach detection (HaveIBeenPwned integration) | **V1** ✅ | Proactive security — implemented in `password-health` (`BreachProxyController` k-anonymity range proxy) | | Vault usage analytics (admin) | **Enterprise** | Adoption tracking | ### Admin Settings @@ -477,3 +477,26 @@ Large organizations, multi-instance deployments, and compliance-driven environme 88. Field-level encryption audit 89. Data retention policies 90. Nextcloud Flows automation triggers + +## 7. Deep-Research Refresh (2026-07-16) + +Full findings are logged in the Spectr register (`sourceRef: deepdive-2026-07-16-app-doriath`): 22 competitors, 62 competitor features, 20 canonical demand-ranked features, 12 insights, 3 ecosystem gaps, 3 stakeholders, 7 customer journeys, 10 user stories, 12 external sources. Highlights that update the analysis above: + +### Regulatory tailwind (new since the original analysis) +- **BIO2** (Baseline Informatiebeveiliging Overheid 2, est. 2025-09-24, v1.3 2026-01) **explicitly names "een wachtwoordmanager aanbieden" (provide a password manager to employees) as a measure** for Dutch government bodies — a named procurement driver. +- **NIS2 / Cyberbeveiligingswet** enters into force ~2026-08-15 for ~8,000 Dutch organisations including all municipalities; Art. 21(2)(j) is the first EU law mandating MFA by name, with credential-hygiene requirements. +- **Sovereignty whitespace**: Germany's openDesk and the Dutch Centric/SURF Nextcloud stacks ship **no** password/secrets component; VNG Common Ground has none either. Doriath can position as the missing sovereign-workplace module. + +### Market corrections and additions +- **Vaultwarden** is the de-facto self-hosted default (~60k stars, not 42k); it structurally **cannot** ship SSO/SCIM (Bitwarden licensing) — Doriath inherits Nextcloud identity for free, a structural wedge. +- **HashiCorp Vault** is BUSL-1.1 (Aug 2023) and IBM-owned (Feb 2025); **OpenBao** (MPL-2.0, Linux Foundation) is the open fork, v2.5.x in 2026. +- **Infisical** (MIT core, ~27.5k stars) expanded into PKI/PAM/honey tokens — machine-side only, no end-user vault. +- **Bitwarden** remains the only vendor bridging human vault + machine secrets (Secrets Manager, paid bolt-on) and the only one with shipped **passkey vault-login**; it is also first on **FIDO CXP** portability. +- **Passbolt v5.7** added secret version history; **AliasVault** (AGPL, 2024) is the notable new OSS entrant (passkeys shipped, team features still roadmap). **Padloc is abandoned** (no updates since 2022-09). +- **LastPass** trust erosion continued (ICO fine ~GBP 1.2M late 2025); **Dashlane** dropped its free plan (2025-09); **Proton Pass** shipped an audited CLI for CI/CD (2025-11). + +### 2026 table stakes vs. the original tiering +Passkey **storage**, TOTP, attachments, breach reports and reliable autofill are now tier-1 expectations, not Enterprise extras. Verified top user wishes on the Nextcloud platform (NC Passwords open issues by reactions): group sharing (63), folder sharing (60), TOTP (39, built in Doriath), passkeys (#615/#792), attachments (#176), bulk actions (#610). + +### Resulting spec wave (all changes created 2026-07-16) +`team-folder-sharing`, `browser-extension-autofill`, `passkey-item-type`, `cxf-import-export`, `encrypted-attachments`, `secret-version-history`, `rotation-expiry-policies`, `machine-secret-leases` — see `openspec/ROADMAP.md` Phase 3.5 for ordering and evidence. diff --git a/docs/application-secret-requests.md b/docs/application-secret-requests.md new file mode 100644 index 000000000..a0a992e4c --- /dev/null +++ b/docs/application-secret-requests.md @@ -0,0 +1,77 @@ + + +# What an application is asking people for + +An approved application can ask a human to put a credential **into** the +application's own vault, using a secret request. The person filling it in needs no +Nextcloud account, and the application cannot read anything else in the vault. + +Those requests used to be invisible to every person on the instance. They are +recorded as created by `application:`, which no user's request listing can +match, and the Secrets they target belong to the application, so they appear in +nobody's vault. The only way to list them was the application's own API token. The +events were in the audit trail, but there was nowhere to see what was +**outstanding**. + +## Where to look + +Open **Applications → the application → Outstanding secret requests**. Each row +shows: + +| Column | Notes | +|---|---| +| Status | Pending, Fulfilled, Declined, Expired | +| Expiry | "Expires ", "Expired ", or **"No expiry"** — a link that works forever | +| Token | Truncated. The full value goes to the clipboard only via **Copy fill link** | +| Requested fields | The field names asked for, e.g. `key, login` | + +Every status is listed, not only the outstanding ones, so the question "what has +this application been asking people for" has an answer after the fact too. + +**A row can read "Expired" while the database still says pending.** The sweeper +runs hourly, but a lapsed link is refused the moment it is opened, so the list +judges the expiry on its timestamp rather than on the stored status. What you see +is what a recipient would get. + +## Who can see it + +**Administrators only** — including for applications they did not register. + +This is deliberate, and the cheaper alternative was rejected: showing the requests +to whoever registered the application. An application's vault belongs to no single +user, registering it is a historical act rather than an ongoing responsibility, and +the registrar may have left the organisation. Tying audit visibility to that would +make "who may see this" depend on who happened to click Register months ago. + +What is shown is plaintext metadata — status, timestamps, and the names of the +requested fields. **No submitted value is readable from the listing**, by anyone, +including an administrator. That is the write-without-read property the whole +feature rests on and it is unaffected by who is looking. + +## Revoking a request + +A pending fill link is a **bearer credential in a URL**: whoever holds it can +submit against it. So it needs an off switch that does not depend on the +application cooperating, and **Revoke** is it. + +Revoking asks for confirmation, and names the fields being asked for, because the +consequences reach outside Doriath: + +- the fill link stops working immediately, even if someone already has it; +- the empty placeholder Secret the request created is deleted; +- if the application was waiting on that credential, **its integration may stop + working mid-flow**. + +A Secret that already holds a value is never deleted by a revoke — a request being +withdrawn must not cost anyone a working credential. + +The revoke is recorded in the audit trail against **the administrator who did it**, +not against the application, so the trail answers "who ended this link". + +## Reference + +- [Secret request expiry](./secret-request-expiry.md) — how expiry is set and swept. +- [Audit trail](./audit-trail.md) — where revocations are recorded. diff --git a/docs/build/404.html b/docs/build/404.html deleted file mode 100644 index 6e42d3819..000000000 --- a/docs/build/404.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -Page Not Found | Doriath - - - - - - - - -

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- - \ No newline at end of file diff --git a/docs/build/CNAME b/docs/build/CNAME deleted file mode 100644 index b16a48df7..000000000 --- a/docs/build/CNAME +++ /dev/null @@ -1 +0,0 @@ -doriath.conduction.nl diff --git a/docs/build/assets/css/styles.28363669.css b/docs/build/assets/css/styles.28363669.css deleted file mode 100644 index 2e9df6e46..000000000 --- a/docs/build/assets/css/styles.28363669.css +++ /dev/null @@ -1 +0,0 @@ -@import url(https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap);@import url(https://fonts.googleapis.com/css2?family=Figtree:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500&display=swap);.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.markdown li,body{word-wrap:break-word}.bg_ItJZ,.onLight_HlEE{--cbg-accent:var(--c-orange-knvb)}.button,.dropdown__link,.pill_PL2G,.statusPill_I15T,.text--truncate{white-space:nowrap}.body_rmUs>ul,.clean-list,.containsTaskList_mC6p,.details_cCPi summary,.details_lb9f>summary,.dropdown__menu,.endList_exyn,.facetList_sW6c,.grid_GCc_,.menu__list,.opts_EEks,.rows_uopa,.summary_KabM{list-style:none}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem}.markdown>h2,:root{--ifm-h2-font-size:2rem}.markdown>h3,:root{--ifm-h3-font-size:1.5rem}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}*{box-sizing:border-box}html{background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_NmtK,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}.container_lyt7,.container_lyt7>svg,img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol,ol ul,ul ol,ul ul{margin:0}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration);-webkit-text-decoration:underline;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;color:var(--conduction-color-link-default);transition:color .14s}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){-webkit-text-decoration:none;text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom);margin:0;text-wrap:pretty}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_uzNF .wordWrapButtonIcon_b1P5{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.alert__heading,.avatar_wR1r,.badge_MZ6q,.becomeEyebrow_HPav,.crumb,.eyebrow_E9Fz,.eyebrow_LQhi,.pill_PL2G,.sectorTag_cl4m,.text--uppercase,.theme-doc-breadcrumbs,.tier_qjzU,.v-on-dark-primary_TlyP,.v-on-dark-secondary_WITB{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}:root,[data-theme=dark]{--ifm-link-color:var(--c-orange-knvb)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after,.label_RVvm,.label_Y2YF,.titleText_CFnw{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);-webkit-text-decoration:none;text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.appPill_Dck4,.chip_HuUi,.chip_HuUi:hover,.chip_dHYU,.crumb a,.crumb_cjh6 a,.dropdown__link--active,.dropdown__link:hover,.ghost_SGJf,.ghost_SGJf:hover,.iconLink_GxoH,.iconLink_GxoH:hover,.link_CwQh,.link_CwQh:hover,.menu__link:hover,.navbar__brand:hover,.navbar__link--active,.navbar__link:hover,.pagination-nav__link:hover,.pagination__link:hover,.rowLink_rfne,.rowLink_rfne:hover,.seeAll_DL0x,.seeAll_DL0x:hover,.solutionLink_TrcY,.solutionLink_TrcY:hover,a.appPill_Dck4:hover,a.chip_dHYU:hover{-webkit-text-decoration:none;text-decoration:none}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card--full-height{height:100%}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);-webkit-text-decoration:none;text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.badge__IZW,.bg_ItJZ,.bg_SCHC,.decoFrame_l5OC,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]),.pagination__item--disabled,.pagination__item[disabled],.panelHexBg_PUpd,.steps_cAsq:before,.tip_ojjV,.watermark_UqPF{pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color)}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}[data-theme=dark],body{-webkit-font-smoothing:antialiased}.cta_K6Qw,.lastUpdated_JAkA,.muted_UUom,.never_ygaU{font-style:italic}.body_piwG p:first-child,.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*,.footer__item,.group_Nfvo:first-child,.legendItem_f3v8 .statusHex_RulL,.row_hxa6:first-child,main.marketing-page .markdown h1,main.marketing-page .markdown h1:first-child,main.marketing-page .markdown h2,main.marketing-page .markdown h3,main.marketing-page .markdown>*,main.marketing-page .markdown>:first-child{margin-top:0}.admonitionContent_BuS1>:last-child,.body_Tz2C p:last-child,.cardContainer_KhuF :last-child,.collapsibleContent_i85q p:last-child,.details_lb9f>summary>p:last-child,.footer__items{margin-bottom:0}.codeBlockStandalone_MEMb,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_cCPi[open] summary:before,.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;top:0;visibility:hidden;left:0}.menu__link{color:var(--ifm-menu-color);flex:1}.menu__link:hover{color:var(--ifm-menu-color)}.menu__caret:before,.menu__link--sublist-caret:after{filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;content:""}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color)}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.body_adfd p,.body_rmUs>p,.menu__list-item,.navbar__items--center .navbar__brand,.row_jVO9,body{margin:0}.docCardListItem_W1sv>*,.navbar__logo img{height:100%}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.am_aiTx .topbar_nV5p .spacer_bGaz,.navbar__items--center+.navbar__items--right,.zoneFrame_rS50 .am-pageHeader .am-spacer,.zoneFrame_rS50 .am-topbar .am-spacer{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color)}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:1rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.btn_iG9q,.card_wgDh.linked_JNYj,.cell_kEcq.linked_zQp0,.chipRemove_X4nY,.clearAll_Qqft,.dropdownNavbarItemMobile_J0Sd,.facetList_sW6c label,.link_GY1u,.pills__item,.summary_KabM,.tabs__item{cursor:pointer}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);position:fixed;transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;position:fixed;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav{display:grid;grid-gap:var(--ifm-spacing-horizontal);gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.align-split_AvgR,.hero_bX8M{grid-template-columns:1.1fr 1fr}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover)}.pagination-nav__link--next{grid-column:2/3;text-align:right}.am_aiTx .caption_YOoV,.banner_W9qP,.cardPhoto_ia2Q,.content_knG7,.empty_G7CZ,.empty_kS7V,.footnote_KjDp,.step_ZxPD,.title_dOje,.wordmark_JGPA{text-align:center}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto;padding-left:0}.avatar_wR1r,.thumb_m_mH{overflow:hidden;clip-path:var(--hex-pointy-top)}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}:root{--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#4376fc;--ifm-color-primary-dark:#2a62fb;--ifm-color-primary-darker:#1d57fb;--ifm-color-primary-darkest:#053fe8;--ifm-color-primary-light:#5c8afd;--ifm-color-primary-lighter:#6a96fd;--ifm-color-primary-lightest:#94b3fe;--ifm-font-family-base:"Poppins",system-ui,-apple-system,sans-serif;--ifm-heading-font-family:"Poppins",system-ui,-apple-system,sans-serif;--ifm-font-weight-semibold:600;--ifm-heading-font-weight:600;--ifm-h1-font-size:2.5rem;--ifm-h4-font-size:1.25rem;--ifm-code-font-size:95%;--docusaurus-highlighted-code-line-bg:#0000001a;--c-blue-cobalt:#21468b;--c-orange-knvb:#f36c21;--c-red-vermillion:#ae1c28;--c-white:#fff;--c-nextcloud-blue:#0082c9;--c-nextcloud-cyan:#1cafff;--c-commonground-yellow:#f6ad00;--c-cobalt-50:#eef2f8;--c-cobalt-100:#dce3f0;--c-cobalt-200:#b6c2dd;--c-cobalt-300:#8095bd;--c-cobalt-400:#4d69a4;--c-cobalt-500:#21468b;--c-cobalt-600:#1b3a75;--c-cobalt-700:#152d5c;--c-cobalt-800:#102246;--c-cobalt-900:#0a172f;--c-lavender-300:#b7a7e3;--c-lavender-500:#7e66c9;--c-mint-300:#87cfa8;--c-mint-500:#2e9866;--c-forest-300:#7daa7c;--c-forest-500:#3d7c3a;--c-terracotta-300:#da9d8a;--c-terracotta-500:#b25e48;--c-workspaceblue-300:#67beea;--c-workspaceblue-500:#0082c9;--c-coral-300:#fab29c;--c-coral-500:#f36c21;--c-gold-300:#ecc668;--c-gold-500:#c99a1f;--c-gray-300:#b7bdc9;--c-gray-500:#6b7280;--c-workspace-300:var(--c-workspaceblue-300);--c-workspace-500:var(--c-workspaceblue-500);--conduction-color-brand-primary:var(--c-blue-cobalt);--conduction-color-brand-secondary:var(--c-orange-knvb);--conduction-color-brand-tertiary:var(--c-red-vermillion);--conduction-color-brand-nextcloud:var(--c-nextcloud-blue);--conduction-color-brand-commonground:var(--c-commonground-yellow);--conduction-color-background-default:var(--c-white);--conduction-color-background-inverse:var(--c-blue-cobalt);--conduction-color-background-muted:var(--c-cobalt-50);--conduction-color-text-default:var(--c-blue-cobalt);--conduction-color-text-inverse:var(--c-white);--conduction-color-text-accent:var(--c-orange-knvb);--conduction-color-text-muted:var(--c-cobalt-400);--conduction-color-link-default:var(--c-blue-cobalt);--conduction-color-link-hover:var(--c-orange-knvb);--conduction-color-status-error:var(--c-red-vermillion);--conduction-color-border-default:var(--c-cobalt-200);--conduction-color-border-strong:var(--c-blue-cobalt);--conduction-typography-font-family-body:"Figtree",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--conduction-typography-font-family-heading:"Figtree",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--conduction-typography-font-family-code:"IBM Plex Mono",ui-monospace,"SF Mono",Menlo,Consolas,monospace;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--fs-xs:12px;--fs-sm:14px;--fs-base:16px;--fs-lg:18px;--fs-xl:20px;--fs-2xl:24px;--fs-3xl:32px;--fs-4xl:40px;--fs-5xl:48px;--lh-tight:1.2;--lh-normal:1.5;--lh-relaxed:1.75;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-7:28px;--space-8:32px;--space-9:36px;--space-10:40px;--space-12:48px;--space-16:64px;--space-20:80px;--space-24:96px;--radius-sm:4px;--radius-md:6px;--radius-lg:10px;--radius-xl:16px;--radius-pill:999px;--shadow-1:0 1px 2px #21468b14;--shadow-2:0 2px 8px #21468b1a;--shadow-3:0 8px 24px #21468b1f;--hex-pointy-top:polygon(50% 0%,100% 25%,100% 75%,50% 100%,0% 75%,0% 25%);--cut-sm:6px;--cut-md:10px;--cut-lg:16px;--cut-xl:24px;--clip-cut-tlbr-sm:polygon(6px 0,100% 0,100% calc(100% - 6px),calc(100% - 6px) 100%,0 100%,0 6px);--clip-cut-tlbr-md:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px);--clip-cut-tlbr-lg:polygon(16px 0,100% 0,100% calc(100% - 16px),calc(100% - 16px) 100%,0 100%,0 16px);--clip-cut-tlbr-xl:polygon(24px 0,100% 0,100% calc(100% - 24px),calc(100% - 24px) 100%,0 100%,0 24px);--clip-cut-tlbr:var(--clip-cut-tlbr-md);--clip-cut-trbl-sm:polygon(0 0,calc(100% - 6px) 0,100% 6px,100% 100%,6px 100%,0 calc(100% - 6px));--clip-cut-trbl-md:polygon(0 0,calc(100% - 10px) 0,100% 10px,100% 100%,10px 100%,0 calc(100% - 10px));--clip-cut-trbl-lg:polygon(0 0,calc(100% - 16px) 0,100% 16px,100% 100%,16px 100%,0 calc(100% - 16px));--clip-cut-trbl-xl:polygon(0 0,calc(100% - 24px) 0,100% 24px,100% 100%,24px 100%,0 calc(100% - 24px));--clip-cut-trbl:var(--clip-cut-trbl-md);--clip-cut-all-sm:polygon(6px 0,calc(100% - 6px) 0,100% 6px,100% calc(100% - 6px),calc(100% - 6px) 100%,6px 100%,0 calc(100% - 6px),0 6px);--clip-cut-all-md:polygon(10px 0,calc(100% - 10px) 0,100% 10px,100% calc(100% - 10px),calc(100% - 10px) 100%,10px 100%,0 calc(100% - 10px),0 10px);--clip-cut-all-lg:polygon(16px 0,calc(100% - 16px) 0,100% 16px,100% calc(100% - 16px),calc(100% - 16px) 100%,16px 100%,0 calc(100% - 16px),0 16px);--clip-cut-all-xl:polygon(24px 0,calc(100% - 24px) 0,100% 24px,100% calc(100% - 24px),calc(100% - 24px) 100%,24px 100%,0 calc(100% - 24px),0 24px);--clip-cut-all:var(--clip-cut-all-md);--paper-a4-w:210mm;--paper-a4-h:297mm;--paper-a5-w:148mm;--paper-a5-h:210mm;--paper-a3-w:297mm;--paper-a3-h:420mm;--card-w:85mm;--card-h:55mm;--env-c5-w:229mm;--env-c5-h:162mm;--env-c4-w:324mm;--env-c4-h:229mm;--env-dl-w:220mm;--env-dl-h:110mm;--slide-w:338.67mm;--slide-h:190.5mm;--slide-w-px:1280px;--slide-h-px:720px;--banner-rollup-w:850mm;--banner-rollup-h:2000mm;--banner-event-w:3000mm;--banner-event-h:2000mm;--banner-linkedin-w:1584px;--banner-linkedin-h:396px;--banner-x-w:1500px;--banner-x-h:500px;--banner-fb-w:820px;--banner-fb-h:312px;--space-mm-1:2mm;--space-mm-2:4mm;--space-mm-3:6mm;--space-mm-4:8mm;--space-mm-5:10mm;--space-mm-6:12mm;--space-mm-8:16mm;--space-mm-10:20mm;--space-mm-12:24mm;--bleed:0mm;--ifm-color-primary:var(--c-blue-cobalt);--ifm-color-primary-dark:var(--c-cobalt-600);--ifm-color-primary-darker:var(--c-cobalt-700);--ifm-color-primary-darkest:var(--c-cobalt-800);--ifm-color-primary-light:var(--c-cobalt-400);--ifm-color-primary-lighter:var(--c-cobalt-300);--ifm-color-primary-lightest:var(--c-cobalt-200);--ifm-link-hover-color:var(--c-cobalt-700);--ifm-button-color:#fff;--ifm-font-family-base:var(--conduction-typography-font-family-body);--ifm-font-family-monospace:var(--conduction-typography-font-family-code);--ifm-heading-color:var(--c-cobalt-900);--ifm-code-font-size:92%;--ifm-code-background:var(--c-cobalt-50);--ifm-pre-background:var(--c-cobalt-900);--ifm-pre-color:var(--c-cobalt-100);--ifm-navbar-background-color:#fff;--ifm-navbar-shadow:0 1px 0 var(--c-cobalt-100);--ifm-toc-border-color:var(--c-cobalt-100);--ifm-footer-background-color:var(--c-cobalt-900);--ifm-footer-color:var(--c-cobalt-200);--ifm-footer-link-color:#fff;--ifm-footer-title-color:var(--c-cobalt-200);--ifm-spacing-horizontal:var(--space-6);--ifm-spacing-vertical:var(--space-6);--ifm-line-height-base:1.55;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--docusaurus-announcement-bar-height:auto;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}[data-theme=dark]{--ifm-color-primary:#6a96fd;--ifm-color-primary-dark:#4376fc;--ifm-color-primary-darker:#2a62fb;--ifm-color-primary-darkest:#1d57fb;--ifm-color-primary-light:#80a6fd;--ifm-color-primary-lighter:#94b3fe;--ifm-color-primary-lightest:#b3c8fe;--docusaurus-highlighted-code-line-bg:#0000004d;--ifm-background-color:#1e1e1e;--ifm-background-surface-color:#242526;--ifm-font-color-base:#e5e5e5;--ifm-color-content:#e5e5e5;--ifm-color-content-secondary:#b0b0b0;--ifm-navbar-background-color:#242526;--ifm-navbar-link-color:#e5e5e5;--ifm-navbar-link-hover-color:#6a96fd;--ifm-sidebar-background-color:#1e1e1e;--ifm-menu-color:#e5e5e5;--ifm-menu-color-active:#6a96fd;--ifm-code-background:#0000004d;--ifm-code-color:#e5e5e5;--ifm-table-border-color:#3a3a3a;--ifm-table-stripe-background:#ffffff0d;--ifm-card-background-color:#242526;--ifm-card-border-color:#3a3a3a;-moz-osx-font-smoothing:grayscale;--ifm-background-color:var(--c-cobalt-900);--ifm-background-surface-color:var(--c-cobalt-800);--ifm-color-primary:var(--c-cobalt-300);--ifm-color-primary-light:var(--c-cobalt-200);--ifm-heading-color:#fff;--ifm-font-color-base:var(--c-cobalt-100);--ifm-code-background:var(--c-cobalt-800)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1;font-weight:400;line-height:1.8}.markdown h1,.markdown h2,.markdown h3,.markdown h4{font-weight:600;margin-bottom:1rem;margin-top:2rem}.name__W4N,.navbar,.num_uueY{font-weight:500}.menu{font-weight:400}html{transition:background-color .2s,color .2s;font-family:var(--conduction-typography-font-family-body)}.byline_kgtp,.crumb,.eyebrow_LQhi,.theme-doc-breadcrumbs,code,kbd,pre,samp{font-family:var(--conduction-typography-font-family-code)}body{background:var(--conduction-color-background-default);font-size:var(--fs-base);line-height:var(--lh-normal)}h1{font-size:var(--fs-5xl)}h1,h2{font-weight:var(--fw-bold)}h2{font-size:var(--fs-4xl);letter-spacing:-.015em}h3{font-size:var(--fs-3xl);letter-spacing:-.01em}h3,h4,h5,h6{font-weight:var(--fw-semibold)}h4{font-size:var(--fs-2xl)}h5{font-size:var(--fs-xl)}h6{font-size:var(--fs-lg)}code,kbd,pre,samp{font-size:.92em}.hex-pattern,.hex-pattern--bold,.hex-pattern--soft{--hex-pattern-color:var(--c-blue-cobalt);--hex-pattern-opacity:0.06;background-blend-mode:multiply;background-repeat:repeat;background-size:56px 64px;position:relative;background-blend-mode:normal;background-image:none}.hex-pattern--bold:before,.hex-pattern--soft:before,.hex-pattern:before{background-image:inherit;background-repeat:inherit;background-size:inherit;content:"";inset:0;opacity:var(--hex-pattern-opacity);pointer-events:none;position:absolute}.hex-pattern--soft{--hex-pattern-opacity:0.04}.hex-pattern--bold{--hex-pattern-opacity:0.12}.cardDetail_D6pk>*,.card_xTi4,.hex-pattern--bold>*,.hex-pattern--soft>*,.hex-pattern>*,.pitch_SSlM{position:relative;z-index:1}.crumb{color:var(--c-cobalt-400);font-size:12px;letter-spacing:.1em}.chip_HuUi,.chip_HuUi:hover,.crumb a,.crumb_cjh6 a{color:var(--c-cobalt-700)}.bOrange_YDns,.bgCobalt_HTUI .crumb_McrY a:hover,.clearAll_Qqft:hover,.crumb a:hover,.crumb_McrY a:hover,.ghost_SGJf:hover,.knvb-orange,.linkActive_jOIb,.link_CwQh:hover,.seeAll_DL0x:hover,.statusText_bgyH{color:var(--c-orange-knvb)}body{font-family:var(--conduction-typography-font-family-body);text-rendering:optimizeLegibility}body,h1,h2,h3,h4,h5,h6{color:var(--conduction-color-text-default)}h1,h2,h3,h4,h5,h6{line-height:var(--lh-tight);text-wrap:balance;font-family:var(--conduction-typography-font-family-heading);margin:0}a:hover{color:var(--conduction-color-link-hover)}.cn-hex-clip{clip-path:var(--hex-pointy-top);display:inline-block}.next-blue{color:var(--conduction-color-brand-nextcloud)}.cg-yellow{color:var(--conduction-color-brand-commonground)}.cg-plus-common,.contactsInline_ZHtP a:hover,.crumb_cjh6 a:hover,.facetList_sW6c li:hover,.itemOpen_h1X0 .chevron_ZHn4,.itemOpen_h1X0 .itemTitle_SEj5,.tone-cobalt_Rv4q .cardCta_qv1e,.tone-cobalt_Rv4q .cardEyebrow_Jb8V{color:var(--c-blue-cobalt)}.cg-plus-plus{color:var(--conduction-color-brand-nextcloud);font-weight:inherit}.button--primary{background-color:var(--c-blue-cobalt);border-color:var(--c-blue-cobalt);color:#fff}.button--primary:hover{background-color:var(--c-cobalt-700);border-color:var(--c-cobalt-700);color:#fff}:focus-visible{outline:2px solid var(--c-orange-knvb);outline-offset:2px}h1,h2,h3{letter-spacing:-.02em}main.marketing-page,main.marketing-page .markdown,main.marketing-page>article,main.marketing-page>article>.theme-doc-markdown,main.marketing-page>article>div{margin:0!important;max-width:none!important;padding:0!important;width:100%}.body_rmUs>p+p,.quote__rgF p+p{margin-top:var(--space-3)}a:not(.navbar__link):not(.footer__link-item):not(.button){text-decoration-color:var(--c-cobalt-200);text-underline-offset:2px}a:not(.navbar__link):not(.footer__link-item):not(.button):hover{text-decoration-color:var(--c-orange-knvb)}.theme-doc-sidebar-container{background:#fff;border-right:1px solid var(--c-cobalt-100)!important;width:280px!important}.menu{font-size:13px;padding:var(--space-6) var(--space-5)!important}.menu__list .menu__list{margin-left:0;padding-left:var(--space-3)}.menu__link{border-radius:var(--radius-sm);color:var(--c-cobalt-700);font-weight:400;line-height:1.4;margin-bottom:2px;padding:4px 10px}.menu__link:hover{background:var(--c-cobalt-50);color:var(--c-cobalt-900)}.menu__link--active,.menu__link--active:hover{background:var(--c-cobalt-50);border-left:2px solid var(--c-blue-cobalt);color:var(--c-blue-cobalt);font-weight:500;padding-left:8px}.menu__link--sublist,.menu__list-item-collapsible>.menu__link{color:var(--c-cobalt-400);font-family:var(--conduction-typography-font-family-code);font-size:10px;font-weight:500;letter-spacing:.1em;margin:var(--space-4) 0 var(--space-2);text-transform:uppercase}.menu__list-item-collapsible>.menu__link:hover,.theme-doc-breadcrumbs .breadcrumbs__item--active .breadcrumbs__link{background:#0000;color:var(--c-cobalt-700)}.menu__caret:before,.menu__link--sublist-caret:after{filter:opacity(.5)}.theme-doc-markdown{max-width:900px;padding:var(--space-8) var(--space-10)}.theme-doc-markdown h1{color:var(--c-cobalt-900);font-size:40px;font-weight:700;letter-spacing:-.02em;line-height:1.1;margin:0 0 var(--space-4)}.theme-doc-markdown h2{color:var(--c-cobalt-900);font-size:26px;font-weight:600;letter-spacing:-.01em;margin:var(--space-8) 0 var(--space-3)}.theme-doc-markdown h3{color:var(--c-cobalt-900);font-size:20px;font-weight:600;margin:var(--space-6) 0 var(--space-3)}.theme-doc-markdown ol,.theme-doc-markdown p,.theme-doc-markdown ul{color:var(--c-cobalt-800);font-size:15px;line-height:1.65;margin:0 0 var(--space-3)}.theme-doc-markdown ol,.theme-doc-markdown ul{padding-left:var(--space-5)}.theme-doc-markdown li{margin-bottom:var(--space-2)}.body_f8Uy a:hover,.body_f8Uy code,.body_rk5K a:hover,.body_rk5K code,.citeName_KMn9,.theme-doc-markdown strong,a.card_fJ6r:hover .cta_fxqO{color:var(--c-cobalt-900)}.theme-doc-breadcrumbs{color:var(--c-cobalt-400);font-size:11px;letter-spacing:.08em;margin-bottom:var(--space-4)}.theme-doc-breadcrumbs .breadcrumbs__link{background:#0000;color:var(--c-cobalt-400);padding:0}.theme-doc-breadcrumbs .breadcrumbs__link:hover{background:#0000;color:var(--c-orange-knvb)}.hash-link,.hash-link:active,.hash-link:focus,.hash-link:focus-visible,.hash-link:hover,.hash-link:visited{border-bottom:0!important;color:var(--c-orange-knvb)!important;-webkit-text-decoration:none!important;text-decoration:none!important}.btn_iG9q,.card_GBkq,.card_djmx,.card_djmx:hover,.cell_kEcq,.clearAll_Qqft,.contactsInline_ZHtP a,.crumb_McrY a,.cta_G5Px,.cta_G5Px:hover,.cta_gEIx,.cta_gEIx:hover,.hex_kG8J,.link_D8_x,.link_D8_x:hover,.tag_zVej:hover,.v-ghost__okS:hover,.v-on-dark-tertiary_tOA5:hover,.v-primary_VicA:hover,.v-secondary_aIVG:hover{-webkit-text-decoration:none;text-decoration:none}body,html{min-height:100vh;height:100%}#__docusaurus-base-url-issue-banner-container,.themedComponent_mlkZ{display:none}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color)}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.card_tsB9:hover,.card_wgDh.linked_JNYj:hover,.cell_kEcq.linked_zQp0:hover{transform:translateY(-2px)}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}.lastUpdated_JAkA{font-size:smaller;margin-top:.2rem}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.card_Beq7,.thumb_m_mH,.visual_SfkZ{position:relative}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}.logo_H9hi,.metaBits_JRi_ .metaSep_gLFi,.metaSep_zODN,.sep_CXt6{opacity:.6}[data-theme=dark] .themedComponent--dark_xIcU,[data-theme=light] .themedComponent--light_NVdE,html:not([data-theme]) .themedComponent--light_NVdE{display:initial}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.hex_LAHd{background:var(--c-orange-knvb);clip-path:var(--hex-pointy-top);display:inline-block;flex-shrink:0}.sm_qFQ6{height:9px;width:8px}.md_UwWv{height:14px;width:12px}.lg_znfx{height:50px;width:44px}.thumb_m_mH{align-items:center;color:#fff;display:inline-flex;flex-shrink:0;justify-content:center}.avatar_bIEI img,.avatar_rVPZ img,.coverImg_mbqB,.thumb_m_mH img{height:100%;object-fit:cover;width:100%}.thumb_m_mH svg{fill:none;stroke:currentColor;stroke-width:1.6}.size-sm_gHBw{height:64px;width:56px}.size-sm_gHBw svg{height:22px;width:22px}.size-md_R9io{height:100px;width:88px}.size-md_R9io svg{height:36px;width:36px}.size-lg_nBP8{height:184px;width:160px}.am_UFYc.ii_LEif.xl_lPXF,.size-lg_nBP8 svg{height:64px;width:64px}.size-xl_RJss{height:280px;width:240px}.size-xl_RJss svg{height:96px;width:96px}.am_aiTx .nav_qMav .item_h8Kq.active_IbeB .ico_k1qU,.am_aiTx .w-graph-donut_C5Bf .legend_al36 .swatch_HnIz.a_Mhjp,.cell_kEcq.center_v4KE .cellInner_cv8P,.num_lBN3,.panel-cobalt_Db_8,.sector-public_na81 .iconHex_X66A,.tier-1_Rclg .num_lBN3,.tone-cobalt_kvXT,.tryButton_ak7v:hover,.zoneFrame_rS50 .am-nav .am-item.am-active .am-ico{background:var(--c-blue-cobalt)}.sector-mkb_vTuG .iconHex_X66A,.tier-3_M_ZZ .num_lBN3,.tone-cobalt-dark_Ovrv{background:var(--c-cobalt-700)}.cta_gEIx:hover,.panel-cobalt-deep_X6FU,.tone-cobalt-700_gv9x .hexB_Q1K6,.tone-cobalt-deep_BRHh{background:var(--c-cobalt-900)}.iconLink_GxoH:hover,.tone-cobalt-50_Xe8M{background:var(--c-cobalt-50);color:var(--c-blue-cobalt)}.am_aiTx .detail_jxoG.rich_h6dR .sb-tab_cUTr.active_IbeB .ii_FE6P,.avatar_wR1r,.close_BDR2,.panel_H2Bg,.tone-default_pILj .name__W4N,.tone-muted_Bh94 .name__W4N,.tone-workspace_HGXQ .cardCta_qv1e,.tone-workspace_HGXQ .cardEyebrow_Jb8V{color:var(--c-cobalt-700)}.am_aiTx .opencatalogi_VWIk .card_GLk2.e_UXne .ico_k1qU,.am_aiTx .w-launcher_ZCI2.mint_gYAI,.am_aiTx .w-subgrid_pngF .grid_SQp8 .cell_ESnZ.c_s3oN .ico_k1qU,.gridItemFound_bJ8w .gridHex_a8lU,.panel-mint_SSvG,.tone-mint_PCIc{background:var(--c-mint-500)}.am_R3o6 .sb-body_wEAG .row_BVnI.accent_KJfN,.am_R3o6 .sb-body_wEAG .smLog_duYr.warn_Xezh .ts_ysJ1,.am_R3o6 .sb-body_wEAG .smPerson_aAXJ.c_tw5z .av_reBp,.am_R3o6 .sb-body_wEAG .smPerson_aAXJ.pending_fZU8 .pip_NgSb,.am_R3o6 .sb-body_wEAG .smPii_ozG_.suggested_f40d,.am_R3o6 .sb-body_wEAG .smStage_w3gq.now_GjwU .h_F5BC,.am_aiTx .kpi_XMFT.amber_MIfM .ico_k1qU,.am_aiTx .procest_Ffgk .timeline_QvpS .step_LVAM.now_pZpU .h_fVj_,.am_aiTx .stack_pfrq .item_h8Kq .av_GP0q.c_s3oN,.am_aiTx .statusPill_lg4d.beta_gsAa .h_fVj_,.am_aiTx .w-calendar_xsDO .grid_SQp8 .day_YzA2.today_k04d,.am_aiTx .w-files_BMSZ .item_h8Kq.folder_C12s .ico_k1qU,.am_aiTx .w-graph-bar_eTQI .bar_iTAm.accent_yXEa,.am_aiTx .w-graph-donut_C5Bf .legend_al36 .swatch_HnIz.b_KP8c,.am_aiTx .w-jira_ikGh .item_h8Kq.review_XGGa .pip_DWke,.am_aiTx .w-launcher_ZCI2.amber_MIfM,.am_aiTx .w-mail_HLGe .item_h8Kq.c_s3oN .av_GP0q,.am_aiTx .w-subgrid_pngF .grid_SQp8 .cell_ESnZ.b_KP8c .ico_k1qU,.am_aiTx .w-werkvoorraad_Kyca .item_h8Kq.now_pZpU .stage_gYTG,.beta_BGXC,.beta_Kra3,.panel-orange_ZAhs,.s3Orange_jaIZ,.sector-health_WAIv .iconHex_X66A,.tier-2_WFMV .num_lBN3,.tone-orange_jzSO,.zoneFrame_rS50 .am-kpi.am-amber .am-ico{background:var(--c-orange-knvb)}.byline_kgtp{font-size:12px;gap:8px;letter-spacing:.04em}.avatar_wR1r,.btn_iG9q,.byline_kgtp,.cardTitle_mcqP,.chipRemove_X4nY,.chip_WYle,.icon_Vbzo,.itemIcon_E6Nt,.titleGroup_AMOj{align-items:center;display:inline-flex}.avatar_wR1r{background:var(--c-cobalt-100);flex-shrink:0;font-size:10px;font-weight:600;height:25px;justify-content:center;width:22px}.avatarLarge_WA_u img,.avatar_UzYt img,.avatar_wR1r img{display:block;height:100%;object-fit:cover;width:100%}.avatar__r5j img,.hexLogo_ys7Z,.itemIconImg_OfKn,.logo_CoRJ,.logo_H9hi,.wordmarkIcon_boru{object-fit:contain}.tone-default_pILj,.tone-default_pILj .date_TPWZ,.tone-default_pILj .sep_CXt6,.versionBadge_C6FH{color:var(--c-cobalt-400)}.bDone_P6cu,.bgCobalt_HTUI .downloadsBadge_ypk7,.bgCobalt_HTUI .titleText_CFnw,.bgCobalt_HTUI .title_IlJO,.cell_kEcq.center_v4KE .wordmark_JGPA,.inverse_K3wz .title_dfrX,.noteText_X3Dh,.rowLink_rfne:hover .rowIcon_WV0y,.tier-certified_mFII .name_I6S_,.tone-on-dark_JlbR .name__W4N{color:#fff}.bgCobalt_HTUI .versionBadge_C6FH,.chip_HuUi.active_o1JX .count_UlTF,.expand_mdtr,.inverse_K3wz .lede_mQGs,.modeText_uNJb,.muted_sDlZ,.tone-on-dark_JlbR,.tone-on-dark_JlbR .date_TPWZ,.tone-on-dark_JlbR .sep_CXt6{color:var(--c-cobalt-200)}.cta_qTzg:hover,.tone-on-dark_JlbR .avatar_wR1r{background:var(--c-cobalt-700);color:#fff}.am_aiTx .detail_jxoG.rich_h6dR .sb-tab_cUTr .ii_FE6P,.bgCobalt_HTUI .sep_fk34,.modeArrow_cOfG,.tone-muted_Bh94,.tone-muted_Bh94 .date_TPWZ,.tone-muted_Bh94 .sep_CXt6{color:var(--c-cobalt-300)}.eyebrow_LQhi{align-items:center;color:var(--c-cobalt-400);display:inline-flex;font-size:12px;gap:10px;letter-spacing:.1em;margin-bottom:24px}.card_Beq7,.section_HYk5,.section_g7yS{font-family:var(--conduction-typography-font-family-body)}.label_cEG6 .next-blue{color:var(--c-nextcloud-blue)}.label_cEG6 .cg-yellow{color:var(--c-commonground-yellow)}.inner_wUIo{margin:0 auto;max-width:1280px;padding:0 64px}.bg-default_W4Ct,.bg-white_j7fT,.card_Beq7,.tone-surface_dnGD{background:#fff}.bg-tinted_y41r{background:var(--c-cobalt-50);border-bottom:1px solid var(--c-cobalt-100);border-top:1px solid var(--c-cobalt-100)}.bg-inverse_Akiw,.chipActive__lp6,.contacts_d_ww a:hover,.itemOpen_h1X0 .itemIcon_E6Nt,.linksRow_kssp a:hover,.solutionLink_TrcY:hover,.tone-solid_qIlV,a.appPill_Dck4:hover,a.chip_dHYU:hover{background:var(--c-blue-cobalt);color:#fff}.sp-default_t7r_ .inner_wUIo{padding-block:96px}.sp-tight_ZJTO .inner_wUIo{padding-block:48px}.sp-flush_sDNu .inner_wUIo{padding-block:0}.head_SzK3{margin-bottom:48px}.align-split_AvgR{align-items:end;display:grid;gap:64px}.align-stack_r6W2,.avatar__r5j img,.body_f8Uy,.body_rk5K,.link_GY1u,.tocCollapsibleContent_vkbj a{display:block}.align-stack_r6W2 .lede_mA5S{margin-top:16px;max-width:60ch}.title_IVS9,.title__KEL{color:var(--c-cobalt-900);font-size:44px;font-weight:700;letter-spacing:-.02em;line-height:1.1;margin:0}.lede_mA5S .next-blue,.lede_ns_m .next-blue,.title_IhTs .next-blue,.title__KEL .next-blue,.title_lLoT .next-blue{color:var(--c-nextcloud-blue)}.lede_NAwo .cg-yellow,.lede_mA5S .cg-yellow,.lede_ns_m .cg-yellow,.outcome_M0bR .cg-yellow,.title__KEL .cg-yellow,.title_cX0o .cg-yellow,.title_lLoT .cg-yellow{color:var(--c-commonground-yellow)}.cardSummary_aTcj,.lede_mA5S{color:var(--c-cobalt-700);font-size:17px;line-height:1.55;margin:0}.card_Beq7{border:1px solid var(--c-cobalt-100);border-radius:var(--radius-lg);color:var(--c-cobalt-700);transition:border-color .14s,transform .14s,box-shadow .14s}.tone-ghost_JAqj{background:#0000;border-color:var(--c-cobalt-200);border-style:dashed}.tone-inverse_N27u{background:var(--c-cobalt-900);border-color:var(--c-cobalt-700);color:#fff}.pad-sm_mcRp{padding:16px}.pad-md_xHdB{padding:20px}.pad-lg_aMAN{padding:28px}.pad-xl_qNEh{padding:32px}.cardCompact_tMLX,.cardCompact_tMLX:hover,.card_BSFA,.card_BSFA:hover,.card_DbNc,.card_DbNc:hover,.card_EP4w,.card_EP4w:hover,.card_Zgum,.card_Zgum:hover,.card_r3Dt,.card_r3Dt:hover,.card_tsB9,.card_tsB9:hover,.link_GY1u,.link_GY1u:hover,.other_P6fJ,.other_P6fJ:hover{color:inherit;-webkit-text-decoration:none;text-decoration:none}.facetList_sW6c input[type=checkbox]:hover,.link_GY1u:hover{border-color:var(--c-blue-cobalt)}.pill_PL2G{align-items:center;border-radius:var(--radius-pill);display:inline-flex;font-family:var(--conduction-typography-font-family-code);font-size:11px;gap:6px;letter-spacing:.06em;line-height:1.4;padding:4px 10px}.status-backend-ready_oNSp .statusPill_I15T,.status-built-in_wFUN .statusPill_I15T,.tone-default_gU1e{background:var(--c-cobalt-50);color:var(--c-cobalt-700)}.btn_iG9q{border:1px solid #0000;border-radius:var(--radius-md);font-family:inherit;font-weight:500;gap:8px;transition:background .14s,border-color .14s,color .14s}.banner_W9qP,.panel_RoZS{border-radius:var(--radius-xl);overflow:hidden}.icon_Vbzo{font-size:1.05em;justify-content:center;line-height:1}.iconGlyph_nphr svg,.icon_Vbzo svg{display:block;height:1em;width:1em}.s-sm_TEhc{font-size:13px;padding:9px 14px}.s-md_l62V{font-size:15px;padding:13px 22px}.s-lg_cTht{font-size:16px;padding:16px 28px}.card_tsB9.tier-certified_mFII,.chip_HuUi.active_o1JX,.tier-certified_dvXR .tierCard_yJfI,.v-primary_VicA{background:var(--c-blue-cobalt);border-color:var(--c-blue-cobalt);color:#fff}.v-primary_VicA:hover{background:var(--c-cobalt-700);border-color:var(--c-cobalt-700);color:#fff}.v-secondary_aIVG{border-color:var(--c-cobalt-200)}.card_tsB9.tier-certified_mFII a.appPill_Dck4:hover,.tier-certified_mFII .tier_qjzU,.v-secondary_aIVG,.v-secondary_aIVG:hover{background:#fff;color:var(--c-blue-cobalt)}.v-secondary_aIVG:hover{border-color:var(--c-blue-cobalt)}.v-ghost__okS{background:#0000;color:var(--c-cobalt-700);font-size:14px;padding-inline:4px}.v-ghost__okS:hover{background:#0000;color:var(--c-orange-knvb)}.v-on-dark-primary_TlyP{background:#fff;border-color:#fff;color:var(--c-blue-cobalt);font-size:14px;font-weight:600;letter-spacing:.04em}.v-on-dark-primary_TlyP:hover{color:var(--c-blue-cobalt);opacity:.92}.v-on-dark-secondary_WITB{background:#0000;border-color:#fff6;color:#fff;font-size:14px;font-weight:600;letter-spacing:.04em}.v-on-dark-secondary_WITB:hover{background:#ffffff14;border-color:#fff;color:#fff}.v-on-dark-tertiary_tOA5{background:#0000;border-color:#fff;color:#fff}.v-on-dark-tertiary_tOA5:hover{background:#ffffff1f;border-color:#fff;color:#fff}.bgCobalt_HTUI .intro_ZCy_ .next-blue,.bgCobalt_HTUI .tagline_cZrs .next-blue,.lede_NAwo .next-blue,.tier-certified_mFII .summary_Jh7o .next-blue,.title_cX0o .next-blue,.v-on-dark-primary_TlyP .next-blue,.v-primary_VicA .next-blue{color:var(--c-nextcloud-cyan)}.t-orange_jA8I.v-primary_VicA{background:var(--c-orange-knvb);border-color:var(--c-orange-knvb)}.t-orange_jA8I.v-primary_VicA:hover{background:var(--c-orange-knvb-700,#c8482f);border-color:var(--c-orange-knvb-700,#c8482f)}.t-orange_jA8I.v-secondary_aIVG{border-color:var(--c-orange-knvb);color:var(--c-orange-knvb)}.t-orange_jA8I.v-secondary_aIVG:hover{border-color:var(--c-orange-knvb-700,#c8482f);color:var(--c-orange-knvb-700,#c8482f)}.section_fCe7,.strip_wFhM{border-bottom:1px solid var(--c-cobalt-100);border-top:1px solid var(--c-cobalt-100)}.hero_bX8M{display:grid;font-family:var(--conduction-typography-font-family-body);gap:72px;margin:0 auto;max-width:1280px;padding:0 64px}.copy_LoR6{align-self:center;padding-block:96px}.title_lLoT{color:var(--c-cobalt-900);font-size:72px;font-weight:700;letter-spacing:-.025em;line-height:1.02;margin:0 0 24px}.title_cX0o,.title_sOKV,.value_qVU2{font-weight:700;letter-spacing:-.02em}.lede_ns_m{color:var(--c-cobalt-700);font-size:21px;line-height:1.5;margin:0 0 32px;max-width:52ch}.actions_MyFj,.actions_Wy3O{align-items:center;display:flex;flex-wrap:wrap;gap:14px}.meta_BSur{color:var(--c-cobalt-400);display:flex;flex-direction:column;font-family:var(--conduction-typography-font-family-code);font-size:13px;gap:2px;margin-left:8px}.meta_BSur strong,.section_H2vg,.section_a4c7,.section_d5sB,.section_fCe7,.strip_wFhM{font-family:var(--conduction-typography-font-family-body)}.meta_BSur strong{color:var(--c-cobalt-700);font-size:14px;font-weight:600}.visual_SfkZ{min-height:0}.visual_SfkZ>*{height:100%;width:100%}.strip_wFhM{background:var(--c-cobalt-50)}.inner_xwuB{display:grid;gap:32px;grid-template-columns:repeat(var(--stats-count,4),minmax(0,1fr));margin:0 auto;max-width:1280px;padding:48px 64px}.value_qVU2{color:var(--c-blue-cobalt);font-size:42px;line-height:1}.label_wp1M{color:var(--c-cobalt-700);font-size:14px;line-height:1.4;margin-top:8px}.bg_ItJZ{inset:0;overflow:hidden;position:absolute;--cbg-hex:#fff}.onLight_HlEE{--cbg-hex:var(--c-blue-cobalt)}.hex_OeqG{animation:a var(--cbg-dur,14s) ease-in-out var(--cbg-delay,0s) infinite;background:var(--cbg-hex);clip-path:var(--hex-pointy-top);position:absolute;transform:translate(-50%,-50%);will-change:transform,opacity}.actions_u6dm,.card_tsB9,.lede_NAwo,.panel_RoZS{position:relative}.accent_mgBm{background:var(--cbg-accent)}@keyframes a{0%,to{opacity:var(--cbg-opa-min,.04)}50%{opacity:var(--cbg-opa-max,.18)}}.section_H2vg,.section_d5sB{background:#fff;margin:0 auto;max-width:1280px;padding:96px 64px}.banner_W9qP{background:var(--c-blue-cobalt);padding:72px 64px}.banner_W9qP,.title_sOKV{color:#fff;position:relative}.title_sOKV{font-size:40px;line-height:1.15;margin:0 0 12px}.lede_NAwo{color:#ffffffc7;font-size:17px;line-height:1.5;margin:0 auto 32px;max-width:560px}.actions_u6dm{align-items:center;display:inline-flex;flex-wrap:wrap;gap:14px;justify-content:center}.section_fCe7{background:var(--c-cobalt-50);margin-top:-200px}.inner_GhLk{margin:0 auto;max-width:1280px;padding:24px 64px}.panel_RoZS{align-items:center;background:var(--c-cobalt-800);color:#fff;display:grid;gap:56px;grid-template-columns:1fr 440px;isolation:isolate;padding:56px}.title_cX0o{color:#fff;font-size:32px;line-height:1.2;margin:0 0 var(--space-5)}.lede_PG5w{color:#ffffffc7;font-size:15px;line-height:1.6;margin:0 0 var(--space-4);max-width:520px}.meta_DuaP{color:#ffffff8c;font-size:13px;line-height:1.5;margin:0;max-width:520px}.card_xTi4{align-items:flex-start;background:#fff;border-radius:var(--radius-lg);clip-path:var(--clip-cut-tlbr-lg);color:var(--conduction-color-text-default);display:flex;flex-direction:column;gap:var(--space-4);padding:36px}.cardTitle_jPEK{color:var(--c-blue-cobalt);font-size:20px;font-weight:600;letter-spacing:-.005em;margin:0}.cardBody_ZeyB,.cardDesc_BxDB,.itemSummary_DfX8,.lede_DjN6,.lede_T3Kx,.summary_hXzm{color:var(--c-cobalt-700);font-size:14px;line-height:1.55;margin:0}.cardCta_YHPj{margin-top:var(--space-2)}.section_a4c7{background:#fff;padding:96px 64px 32px}.badge_MZ6q,.card_fJ6r .body_y02c code,.cta_fxqO,.eyebrow_E9Fz,.ver_bc3N{font-family:var(--conduction-typography-font-family-code)}.inner_dC61,.inner_g_dZ{margin:0 auto;max-width:1280px}.head_ktSB{align-items:end;display:grid;gap:48px;grid-template-columns:1.1fr 1fr;margin-bottom:64px}.eyebrow_E9Fz{align-items:center;color:var(--c-cobalt-400);display:inline-flex;font-size:12px;gap:10px;letter-spacing:.1em;margin-bottom:16px}.eyebrowHex_FOFx{background:var(--c-orange-knvb);clip-path:var(--hex-pointy-top);display:inline-block;height:14px;width:12px}.iconHex_X66A,.iconWrap_fsfE{height:64px;width:56px;clip-path:var(--hex-pointy-top)}.title_IhTs{color:var(--c-blue-cobalt);font-size:44px;font-weight:700;letter-spacing:-.02em;line-height:1.05;margin:0;max-width:16ch}.lede__GE4{color:var(--c-cobalt-700);font-size:16px;line-height:1.55;margin:0;max-width:50ch}.body_WSu9 .next-blue,.body_fcSd .next-blue,.intro_ZCy_ .next-blue,.lede__GE4 .next-blue,.outcome_M0bR .next-blue,.summary_Jh7o .next-blue,.tagline_V8rM .next-blue,.tagline_cZrs .next-blue,.title_FGbU .next-blue,.title_IlJO .next-blue{color:var(--c-nextcloud-blue)}.grid_qZIP,.row_msiJ{display:grid;gap:20px;grid-template-columns:repeat(3,1fr)}.card_BSFA{align-content:start;align-items:start;background:#fff;border:1px solid var(--c-cobalt-100);border-radius:var(--radius-lg);column-gap:20px;display:grid;grid-template-columns:auto 1fr;padding:28px;row-gap:6px;transition:.16s}.card_BSFA:hover,.card_Zgum:hover{border-color:var(--c-blue-cobalt);box-shadow:var(--shadow-2);transform:translateY(-2px)}.iconWrap_fsfE{align-items:center;align-self:start;background:var(--c-blue-cobalt);color:#fff;display:flex;flex-shrink:0;grid-column:1;grid-row:1/span 2;justify-content:center}.glyph_XIte svg,.iconWrap_fsfE svg{fill:none;height:26px;stroke:currentColor;stroke-width:2;width:26px}.name_zXhL{color:var(--c-cobalt-900);font-size:20px;font-weight:700;grid-column:2;letter-spacing:-.01em}.badge_MZ6q,.tagline_V8rM{color:var(--c-cobalt-700)}.tagline_V8rM{font-size:15px;grid-column:2;line-height:1.5}.meta__k9I{align-items:center;border-top:1px solid var(--c-cobalt-100);display:flex;grid-column:1/-1;justify-content:space-between;margin-top:auto;padding-top:20px}.badge_MZ6q,.seeAll_DL0x{display:inline-flex;gap:8px}.badge_MZ6q{align-items:center;font-size:11px;letter-spacing:.06em}.ver_bc3N{color:var(--c-cobalt-400);font-size:12px}.seeAll_DL0x{align-items:center;border-bottom:2px solid var(--c-orange-knvb);color:var(--c-blue-cobalt);font-size:15px;font-weight:600;margin-top:32px;padding-bottom:2px}.grid_HUlG{display:grid;gap:20px}.card_Zgum,.top_dPbi{gap:18px;display:flex}.cols-2_CpFX,.cols-2_Dhdc,.cols-2_Pkpv,.cols-2_UwoA,.cols-2_nmME,.cols-2_uBG1,.cols-2_uGW0,.cols-2_yqXD,.cols-2_znKc{grid-template-columns:repeat(2,1fr)}.cols-3_AkmB,.cols-3_Bpae,.cols-3_MlW9,.cols-3_PvjQ,.cols-3_XNZ2,.cols-3_dNh1,.cols-3_fFMc,.cols-3_ffYz,.cols-3_uoVN{grid-template-columns:repeat(3,1fr)}.card_Zgum{background:#fff;border:1px solid var(--c-cobalt-100);border-radius:var(--radius-lg);flex-direction:column;font-family:var(--conduction-typography-font-family-body);padding:28px;transition:.16s}.become_ZDW_,.top_dPbi{align-items:flex-start}.top_dPbi{justify-content:space-between}.iconHex_X66A{align-items:center;background:var(--c-blue-cobalt);color:#fff;display:flex;flex-shrink:0;justify-content:center}.iconHex_X66A svg{fill:none;height:24px;stroke:currentColor;stroke-width:2;width:24px}.sectorTag_cl4m{align-items:center;background:var(--c-cobalt-50);border-radius:var(--radius-pill);color:var(--c-cobalt-700);display:inline-flex;font-family:var(--conduction-typography-font-family-code);font-size:10px;gap:6px;letter-spacing:.1em;padding:4px 10px}.card_tsB9,.grid_i2eB{font-family:var(--conduction-typography-font-family-body)}.heading_bCjS,.title_KyCr{color:var(--c-cobalt-900);font-size:22px;font-weight:700;letter-spacing:-.01em;margin:0}.outcome_M0bR,.tier_qjzU{color:var(--c-cobalt-700)}.outcome_M0bR{font-size:15px;line-height:1.55;margin:0}.apps_AWdk,.builtOn_yg9O{border-top:1px solid var(--c-cobalt-100);margin-top:auto}.builtOn_yg9O{display:flex;flex-wrap:wrap;gap:6px;padding-top:18px}.grid_i2eB{align-items:stretch;display:grid;gap:24px}.card_tsB9{background:#fff;border:1px solid var(--c-cobalt-100);border-radius:var(--radius-lg);box-shadow:var(--shadow-1);display:flex;flex-direction:column;gap:16px;padding:28px;transition:.16s}.appPill_Dck4,.becomeEyebrow_HPav,.tier_qjzU{font-family:var(--conduction-typography-font-family-code)}.card_tsB9:hover{box-shadow:var(--shadow-2)}.cardLink_tgri{border-radius:inherit;inset:0;position:absolute;z-index:1}.cardLink_tgri:focus-visible{outline:2px solid var(--c-blue-cobalt);outline-offset:-2px}.tier_qjzU{background:var(--c-cobalt-50);border-radius:var(--radius-pill);font-size:10px;font-weight:600;letter-spacing:.1em;padding:4px 9px;position:absolute;right:16px;top:16px}.tier-service_tNuV .tier_qjzU{background:var(--c-gold-500);color:var(--c-cobalt-900)}.avatar__r5j{align-items:center;align-self:flex-start;background:#fff;border-radius:var(--radius-sm);box-sizing:initial;display:inline-flex;height:36px;padding:8px 12px}.appPill_Dck4,.become_ZDW_{background:var(--c-cobalt-50)}.avatar__r5j img{height:auto;max-height:36px;max-width:140px;width:auto}.name_I6S_{color:var(--c-cobalt-900);font-size:18px;font-weight:700}.body_adfd,.card_fJ6r .body_y02c,.summary_Jh7o{color:var(--c-cobalt-700);font-size:14px;line-height:1.55}.tier-certified_dvXR .tierLabel_sPSu,.tier-certified_mFII .summary_Jh7o{color:#ffffffc7}.apps_AWdk{display:flex;flex-wrap:wrap;gap:6px;padding-top:16px}.tier-certified_mFII .apps_AWdk{border-top-color:#ffffff2e}.appPill_Dck4{align-items:center;border-radius:var(--radius-pill);color:var(--c-cobalt-700);display:inline-flex;font-size:12px;gap:6px;padding:4px 10px;position:relative;transition:background .16s,color .16s;z-index:2}.tier-certified_mFII .appPill_Dck4{background:#ffffff1f;color:#fff}.become_ZDW_{border:1px dashed var(--c-cobalt-300);box-shadow:none;justify-content:center;padding:32px}.become_ZDW_:hover{border-color:var(--c-blue-cobalt);box-shadow:var(--shadow-1);transform:none}.becomeEyebrow_HPav{color:var(--c-cobalt-400);font-size:11px;letter-spacing:.12em;margin-bottom:8px}.card_r3Dt,.filters_Xnpf,.other_P6fJ{font-family:var(--conduction-typography-font-family-body)}.becomeTitle_z8OO{color:var(--c-cobalt-900);font-size:22px;font-weight:700;letter-spacing:-.01em;margin:0 0 6px}.becomeBody_x50X{color:var(--c-cobalt-700);font-size:14px;line-height:1.55;margin:0 0 14px;max-width:56ch}.becomeArrow_kCBB{color:var(--c-blue-cobalt);font-size:14px;font-weight:600}.card_r3Dt,.other_P6fJ{align-items:flex-start;background:#fff;border:1px solid var(--c-cobalt-100);border-radius:var(--radius-lg);display:flex;gap:14px;padding:20px;transition:.16s}.card_r3Dt:hover,.other_P6fJ:hover{border-color:var(--c-blue-cobalt);transform:translateY(-1px)}.miniAvatar_ryhS{align-items:center;background:#fff;clip-path:var(--hex-pointy-top);display:flex;flex-shrink:0;height:50px;justify-content:center;overflow:hidden;width:44px}.miniAvatar_ryhS img{max-height:28px;max-width:28px;object-fit:contain}.other_P6fJ.tier-service_tNuV .miniAvatar_ryhS{box-shadow:inset 0 0 0 2px var(--c-gold-500)}.focusCol_Jnz3 .am-body>.am-col,.focusDetail_dCRH .am-body>.am-detail,.focusNav_KvXS .am-body>.am-nav,.other_P6fJ.tier-certified_mFII .miniAvatar_ryhS{box-shadow:inset 0 0 0 2px var(--c-orange-knvb)}.name_J9mJ,.otherName_T1e5{color:var(--c-cobalt-900);font-size:15px;font-weight:600;margin-bottom:4px}.otherWhy_Rnrc,.why_KqlW{color:var(--c-cobalt-700);font-size:13px;line-height:1.5}.filters_Xnpf{width:240px}.count_f39h,.facetTitle_xX6o{font-family:var(--conduction-typography-font-family-code);font-size:11px;color:var(--c-cobalt-400)}.facet_HujN{border:none;margin-bottom:28px;padding:0}.facetTitle_xX6o{font-weight:500;letter-spacing:.14em;margin:0 0 10px;text-transform:uppercase}.sectionTitle_AFxe,.tierLabel_sPSu{font-weight:600;letter-spacing:.12em;text-transform:uppercase}.facetList_sW6c{display:flex;flex-direction:column;gap:8px;margin:0;padding:0}.facetList_sW6c li{align-items:center;color:var(--c-cobalt-700);display:grid;font-size:14px;gap:10px;grid-template-columns:18px 1fr auto;padding:4px 0}.facetList_sW6c input[type=checkbox]{appearance:none;background:#fff;border:1.5px solid var(--c-cobalt-300);border-radius:3px;cursor:pointer;height:16px;position:relative;transition:.12s;width:16px}.facetList_sW6c input[type=checkbox]:checked{background:var(--c-blue-cobalt);border-color:var(--c-blue-cobalt)}.facetList_sW6c input[type=checkbox]:checked:after{border:solid #fff;border-width:0 1.6px 1.6px 0;content:"";height:9px;left:4px;position:absolute;top:1px;transform:rotate(45deg);width:5px}.clearAll_Qqft{align-items:center;background:none;border:none;color:var(--c-cobalt-400);display:inline-flex;font-family:inherit;font-size:13px;gap:6px;margin-top:8px;padding:0}.chip_WYle{background:var(--c-cobalt-50);border-radius:var(--radius-pill);color:var(--c-cobalt-900);font-family:var(--conduction-typography-font-family-code);font-size:13px;gap:6px;padding:5px 8px 5px 12px}.chipRemove_X4nY,.empty_G7CZ,.tierBlurb_FlOl,.tierLabel_sPSu{color:var(--c-cobalt-700)}.chipRemove_X4nY{background:var(--c-cobalt-100);border:none;border-radius:50%;font-family:inherit;font-size:14px;height:18px;justify-content:center;line-height:1;transition:.12s;width:18px}.chipRemove_X4nY:hover{background:var(--c-orange-knvb);color:#fff}.layout_Ru7Q{align-items:start;display:grid;gap:56px;grid-template-columns:240px 1fr}.body_jF8b,.copy_ll_e,.form_DBmw,.results_kbGf{min-width:0}.empty_G7CZ{font-size:16px;margin:0;padding:64px 0 32px}.card_E3dE,.section_LiBm,.tierCard_yJfI{background:#fff;box-shadow:var(--shadow-1);padding:var(--space-5)}.rail_Vhr9{display:flex;flex-direction:column;font-family:var(--conduction-typography-font-family-body);gap:var(--space-5);max-width:320px;width:100%}.chip_dHYU,.sectionTitle_AFxe,.tierLabel_sPSu{font-family:var(--conduction-typography-font-family-code)}.tierCard_yJfI{border:1px solid var(--c-cobalt-100);border-radius:var(--radius-lg);position:relative}.tier-service_l5RW .tierCard_yJfI{border-top:4px solid var(--c-gold-500)}.tierBadge_mxIg{display:block;height:44px;margin:0 0 var(--space-3);width:44px}.tierLabel_sPSu{font-size:11px;margin-bottom:var(--space-2)}.tier-service_l5RW .tierLabel_sPSu{color:var(--c-gold-600,#8b6914)}.tierBlurb_FlOl{font-size:13px;line-height:1.5;margin:0}.rowLink_rfne:hover .rowArrow_JTWO,.rowLink_rfne:hover .rowHint_kfTw,.tier-certified_dvXR .tierBlurb_FlOl{color:#ffffffd9}.card_E3dE,.section_LiBm{border:1px solid var(--c-cobalt-100);border-radius:var(--radius-lg)}.sectionTitle_AFxe{color:var(--c-cobalt-400);font-size:11px;margin:0 0 var(--space-3)}.appsList_BR2o,.chipRow_FVkR,.tags__TgB{display:flex;flex-wrap:wrap;gap:6px}.chip_dHYU,.solutionLink_TrcY{align-items:center;transition:background .16s,color .16s;background:var(--c-cobalt-50)}.chip_dHYU{border-radius:var(--radius-pill);color:var(--c-cobalt-700);display:inline-flex;font-size:12px;padding:4px 10px}.cta_gEIx,.solutionLink_TrcY{border-radius:var(--radius-md)}.chipColumn_lGYd{display:flex;flex-direction:column;gap:var(--space-2)}.solutionLink_TrcY{color:var(--c-cobalt-900);display:flex;gap:var(--space-3);padding:var(--space-2) var(--space-3)}.cta_gEIx,.iconWrap_Urgh{background:var(--c-blue-cobalt)}.cta_gEIx,.solutionIcon_f5ca{align-items:center;display:inline-flex}.solutionIcon_f5ca{color:currentColor;flex:0 0 auto;height:22px;justify-content:center;width:22px}.rowIcon_WV0y svg,.solutionIcon_f5ca svg{fill:none;height:22px;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.6;width:22px}.solutionTitle_zDhZ{font-size:13px;font-weight:500;line-height:1.3}.cta_gEIx{font-family:inherit;font-size:14px;font-weight:600;justify-content:center;letter-spacing:.02em;padding:12px 18px;transition:background .16s}.card_nWH9,.section_myAj{font-family:var(--conduction-typography-font-family-body)}.card_djmx,.card_djmx:hover,.cta_G5Px,.cta_G5Px:hover,.cta_gEIx,.cta_gEIx:hover,.link_D8_x,.link_D8_x:hover{color:#fff}.grid_lvb4,.row_qAIj{display:grid;gap:16px}.iconWrap_Urgh{align-items:center;clip-path:var(--hex-pointy-top);color:#fff;display:flex;flex-shrink:0;height:50px;justify-content:center;width:44px}.iconWrap_Urgh svg{fill:none;height:20px;stroke:currentColor;stroke-width:2;width:20px}.iconWrapBrand_tQCN svg{fill:currentColor;height:22px;stroke:none;width:auto}.actions_L63K{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;margin-bottom:var(--space-8)}.footnote_KjDp{color:var(--c-cobalt-700);font-size:13px;line-height:1.55;margin:var(--space-5) auto 0;max-width:64ch}.section_myAj{background:#fff;padding:96px 64px}.grid_a_xY{align-items:center;display:grid;gap:32px;grid-template-columns:repeat(5,1fr);justify-items:center;margin-top:var(--space-6)}.cell_Nip2{align-items:center;display:flex;justify-content:center;min-height:72px;padding:16px 8px;width:100%}.logo_H9hi{filter:grayscale(1);height:auto;max-height:56px;max-width:100%;transition:filter .2s,opacity .2s;width:auto}.hex_kG8J,.row_hxa6{height:var(--hex-h)}.droplets_BhSQ circle,.tip_ojjV{opacity:0}.cell_Nip2:hover .logo_H9hi{filter:grayscale(0);opacity:1}.marquee_GzKb{--hex-w:120px;--hex-h:138.56px;--gap:8px;--hex-overlap:calc(var(--hex-h) - (var(--hex-w) + var(--gap))*0.866);--offset:calc((var(--hex-w) + var(--gap))/2);margin-top:var(--space-8);-webkit-mask-image:linear-gradient(90deg,#0000,#000 8%,#000 92%,#0000);mask-image:linear-gradient(90deg,#0000,#000 8%,#000 92%,#0000);padding:var(--space-4) 0}.marquee_GzKb,.row_hxa6{overflow:hidden;position:relative}.row_hxa6{margin-top:calc(var(--hex-overlap)*-1)}.hex_kG8J{background:#fff;clip-path:var(--hex-pointy-top);display:grid;left:0;place-items:center;position:absolute;top:0;width:var(--hex-w)}.cardDetail_D6pk,.head_P6K9,.hexLogo_ys7Z,.step_Mb14{position:relative}.hex_kG8J:before{background:var(--c-cobalt-50);inset:0;z-index:0}.hex_kG8J:after,.hex_kG8J:before{clip-path:var(--hex-pointy-top);content:"";position:absolute}.hex_kG8J:after{background:#fff;inset:1.5px;z-index:1}.hexLogo_ys7Z{filter:grayscale(1) opacity(.55);max-height:50%;max-width:60%;transition:filter .2s;z-index:2}.hex_kG8J:focus-visible .hexLogo_ys7Z,.hex_kG8J:hover .hexLogo_ys7Z{filter:grayscale(0) opacity(1)}.card_nWH9{background:#fff;border:1px solid var(--c-cobalt-100);border-radius:var(--radius-lg);display:flex;flex-direction:column;gap:12px;padding:24px}.pill_M5_8,.sectorTag_a62x{border-radius:var(--radius-pill);font-family:var(--conduction-typography-font-family-code)}.sectorTag_a62x{align-items:center;align-self:flex-start;background:var(--c-cobalt-50);color:var(--c-cobalt-700);display:inline-flex;font-size:10px;gap:6px;letter-spacing:.1em;padding:4px 10px;text-transform:uppercase}.title_FGbU,.title_NJn1,.title_nh4Z,.title_uIUU,.title_wg64{font-weight:700;letter-spacing:-.01em}.name_eoHC{color:var(--c-cobalt-900);font-size:17px;font-weight:700;margin:0}.pill_M5_8,.what_C5R1{color:var(--c-cobalt-700)}.what_C5R1{font-size:14px;line-height:1.5;margin:0}.stack_pSuY{border-top:1px solid var(--c-cobalt-100);display:flex;flex-wrap:wrap;gap:6px;padding-top:10px}.glyph_XIte,.pill_M5_8{align-items:center;background:var(--c-cobalt-50)}.pill_M5_8{display:inline-flex;font-size:11px;gap:6px;padding:3px 9px}.list_sJiU,.row_k_eH{font-family:var(--conduction-typography-font-family-body)}.list_sJiU{display:flex;flex-direction:column;gap:40px}.feature_JtNm{display:grid;gap:24px;grid-template-columns:64px 1fr}.glyph_XIte{clip-path:var(--hex-pointy-top);color:var(--c-blue-cobalt);display:flex;flex-shrink:0;height:64px;justify-content:center;width:56px}.num__Xec,.num_lBN3{align-items:center;clip-path:var(--hex-pointy-top)}.title_FGbU{color:var(--c-cobalt-900);font-size:22px;margin:0 0 8px}.body_fcSd{color:var(--c-cobalt-700);font-size:15px;line-height:1.6;margin:0}.row_k_eH{display:grid;gap:24px}.body_adfd code,.num_lBN3{font-family:var(--conduction-typography-font-family-code)}.cols-4_H2I6,.cols-4_U908,.cols-4_iKcq{grid-template-columns:repeat(4,1fr)}.step_Mb14{background:#fff;border:1px solid var(--c-cobalt-100);border-radius:var(--radius-lg);padding:32px}.num_lBN3{color:#fff;display:flex;font-size:18px;font-weight:700;height:56px;justify-content:center;margin-bottom:18px;width:48px}.avatarLarge_WA_u,.avatar_UzYt,.grid_arkO,.wrap_Wcwj{font-family:var(--conduction-typography-font-family-body)}.title_uIUU{color:var(--c-cobalt-900);font-size:20px;margin:0 0 10px}.body_WSu9{color:var(--c-cobalt-700);font-size:14px;line-height:1.6;margin:0}.wrap_Wcwj{margin:var(--space-7) 0}.title_NJn1,.title_nh4Z,.title_wg64{color:var(--c-cobalt-900);font-size:28px;line-height:1.2;margin:0 0 var(--space-3)}.lede_k9cF{color:var(--c-cobalt-700);font-size:16px;line-height:1.6;margin:0 0 var(--space-5);max-width:60ch}.row_l5rc{align-items:flex-start;display:flex;gap:var(--space-4);margin:var(--space-4) 0}.num__Xec{background:var(--c-orange-knvb);color:#fff;display:flex;flex-shrink:0;font-weight:600;height:42px;justify-content:center;width:36px}.body_adfd code,.heading_l5bU,.summary_KabM{color:var(--c-cobalt-900)}.bodyTitle_nmOn,.body_adfd strong{color:var(--c-cobalt-900);display:block;font-size:17px;font-weight:600;margin-bottom:4px}.body_adfd code{background:var(--c-cobalt-50);border-radius:3px;font-size:13px;padding:1px 6px}.faq__Etq{margin:96px auto;max-width:880px;padding:0 64px}.heading_l5bU{font-size:32px;font-weight:700;letter-spacing:-.02em;margin:0 0 32px}.item_qkTE{border-bottom:1px solid var(--c-cobalt-100);padding:20px 0}.summary_KabM{align-items:center;display:flex;font-size:17px;font-weight:600;gap:var(--space-4);justify-content:space-between}.summary_KabM::-webkit-details-marker{display:none}.summary_KabM:after{color:var(--c-cobalt-400);content:"+";flex-shrink:0;font-size:22px;font-weight:400;line-height:1;transition:transform .2s}.item_qkTE[open] .summary_KabM:after{transform:rotate(45deg)}.body_Tz2C{color:var(--c-cobalt-700);font-size:15px;line-height:1.6;margin:12px 0 0;max-width:64ch}.body_Tz2C p{margin:0 0 var(--space-3)}.grid_arkO{display:grid;gap:16px}.avatarLarge_WA_u,.avatar_UzYt{align-items:center;background:var(--c-blue-cobalt);clip-path:var(--hex-pointy-top);color:#fff;display:inline-flex;flex-shrink:0;font-weight:700;justify-content:center;letter-spacing:-.01em;overflow:hidden}.cardCompact_tMLX,.cardDetail_D6pk,.cardPhoto_ia2Q{background:#fff;box-shadow:var(--shadow-1)}.avatar_UzYt{font-size:16px;height:50px;width:44px}.avatarLarge_WA_u{font-size:24px;height:83px;width:72px}.cardCompact_tMLX{align-items:center;border:1px solid var(--c-cobalt-100);border-radius:var(--radius-lg);display:flex;gap:14px;padding:20px;transition:.16s}.cardCompact_tMLX:hover{border-color:var(--c-cobalt-200);box-shadow:var(--shadow-2);transform:translateY(-1px)}.am_R3o6 .sb-body_wEAG .smPerson_aAXJ .lines_YWpw,.am_R3o6 .sb-body_wEAG .smStage_w3gq .lines_YWpw,.am_aiTx .w-mail_HLGe .item_h8Kq .lines_YCYi,.cardTitleWrap_Xj_9,.info_Y2Zx{display:flex;flex:1;flex-direction:column;gap:2px;min-width:0}.name_aHp6{color:var(--c-blue-cobalt);font-size:15px;font-weight:600;line-height:1.2}.role_fYaK{color:var(--c-cobalt-400);font-family:var(--conduction-typography-font-family-code);font-size:11px;letter-spacing:.05em}.cardDetail_D6pk,.cardPhoto_ia2Q,.cardPhoto_ia2Q .role_fYaK{font-family:var(--conduction-typography-font-family-body)}.linksRow_kssp{display:flex;flex-shrink:0;gap:8px}.linksRow_kssp a{align-items:center;background:var(--c-cobalt-50);border-radius:var(--radius-sm);color:var(--c-cobalt-700);display:inline-flex;height:26px;justify-content:center;transition:.14s;width:26px}.linksRow_kssp svg{height:13px;stroke:currentColor;width:13px;strokeWidth:2;fill:none}.cardPhoto_ia2Q{align-items:center;border:1px solid var(--c-cobalt-100);border-radius:var(--radius-lg);display:flex;flex-direction:column;gap:12px;padding:28px 24px}.cardPhoto_ia2Q .name_aHp6{color:var(--c-cobalt-900);font-size:19px;font-weight:700}.cardPhoto_ia2Q .role_fYaK{color:var(--c-cobalt-700);font-size:13px;letter-spacing:0;max-width:28ch}.bio_yRre{color:var(--c-cobalt-700);font-size:14px;line-height:1.6;margin:8px 0 0;max-width:36ch}.contacts_d_ww{display:flex;gap:10px;margin-top:10px}.contacts_d_ww a{align-items:center;background:var(--c-cobalt-50);border-radius:var(--radius-sm);color:var(--c-cobalt-700);display:inline-flex;height:32px;justify-content:center;transition:.14s;width:32px}.contacts_d_ww svg{fill:none;height:16px;stroke:currentColor;stroke-width:2;width:16px}.cardDetail_D6pk{border:1px solid var(--c-cobalt-100);border-radius:var(--radius-lg);display:flex;flex-direction:column;gap:16px;overflow:hidden;padding:32px}.appPill_cY9q,.appsLabel_bHHT{font-family:var(--conduction-typography-font-family-code)}.cardDetail_D6pk:before{background:var(--c-cobalt-50);clip-path:var(--hex-pointy-top);content:"";height:160px;position:absolute;right:0;top:0;transform:translate(40px,-50px);width:140px;z-index:0}.cardDetail_D6pk .name_aHp6{color:var(--c-cobalt-900);font-size:20px;font-weight:700}.cardDetail_D6pk .role_fYaK{font-size:13px}.appsLabel_bHHT{color:var(--c-cobalt-400);font-size:11px;letter-spacing:.08em;margin-bottom:8px;text-transform:uppercase}.appPill_cY9q{background:var(--c-cobalt-50);border-radius:var(--radius-pill);color:var(--c-cobalt-700);font-size:12px;padding:4px 10px}.contactsInline_ZHtP{display:flex;flex-wrap:wrap;gap:16px}.contactsInline_ZHtP a{align-items:center;color:var(--c-cobalt-700);display:inline-flex;font-size:13px;gap:6px}.contactsInline_ZHtP svg{fill:none;height:14px;stroke:currentColor;stroke-width:2;width:14px}.head_P6K9{font-family:var(--conduction-typography-font-family-body);margin:0 auto;max-width:1280px;padding:24px 64px 56px}.badge_uILI,.crumb_McrY{font-family:var(--conduction-typography-font-family-code);text-transform:uppercase}.bgCobalt_HTUI{background:var(--c-blue-cobalt);box-shadow:0 0 0 100vmax var(--c-blue-cobalt);clip-path:inset(0 -100vmax);color:#fff;padding-bottom:64px;padding-top:56px}.bg-inverse_FBeX .wordmark_JGPA,.bgCobalt_HTUI .badge_uILI,.bgCobalt_HTUI .crumb_McrY,.bgCobalt_HTUI .crumb_McrY a,.bgCobalt_HTUI .intro_ZCy_,.bgCobalt_HTUI .tagline_cZrs,.continuationText_JcFe{color:var(--c-cobalt-100)}.crumb_McrY,.crumb_McrY a{color:var(--c-cobalt-400)}.crumb_McrY{font-size:12px;letter-spacing:.04em;margin-bottom:24px}.sep_fk34{color:var(--c-cobalt-200);margin:0 8px}.headInner_fnOh{align-items:center;display:grid;gap:48px;grid-template-columns:1fr}.withIllustration_EoC8 .headInner_fnOh{gap:64px;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr)}.badgeRow_Gk44{align-items:center;display:flex;flex-wrap:wrap;gap:16px;margin-bottom:20px}.badge_uILI{align-items:center;color:var(--c-cobalt-700);display:inline-flex;font-size:11px;gap:6px;letter-spacing:.08em}.downloadsBadge_ypk7{background:var(--c-cobalt-50);border:1px solid var(--c-cobalt-100);border-radius:var(--radius-sm);color:var(--c-blue-cobalt);letter-spacing:.04em;padding:4px 10px}.downloadIcon_KKSS{fill:none;height:12px;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2;width:12px}.title_IlJO{align-items:center;color:var(--c-cobalt-900);display:flex;flex-wrap:wrap;font-size:64px;font-weight:700;gap:22px;letter-spacing:-.025em;line-height:1.05;margin:0 0 20px}.titleIcon_Opve{align-items:center;background:var(--c-blue-cobalt);clip-path:var(--hex-pointy-top);color:#fff;display:inline-flex;flex-shrink:0;height:92px;justify-content:center;width:80px}.intro_ZCy_,.tagline_cZrs{color:var(--c-cobalt-700);margin:0 0 32px}.titleIcon_Opve svg{fill:none;height:38px;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.6;width:38px}.tagline_cZrs{font-size:22px;line-height:1.5;max-width:60ch}.intro_ZCy_{font-size:17px;line-height:1.6;max-width:70ch}.illustration_tbFl{align-items:center;display:flex;justify-content:flex-end;width:100%}.illustration_tbFl>*{max-width:560px;width:100%}.pipeline_f0kg{align-items:start;display:grid;font-family:var(--conduction-typography-font-family-body);gap:24px;grid-template-columns:minmax(160px,220px) 1fr minmax(160px,220px);margin:0 auto;max-width:1280px}.step_ZxPD,.steps_cAsq{display:flex;position:relative}.endLabel_ITdr,.kicker_Lcd0,.num_uueY,.term_JuqQ{font-family:var(--conduction-typography-font-family-code)}.steps_cAsq{align-items:flex-start;gap:8px;justify-content:space-between}.steps_cAsq:before{animation:.9s linear infinite b;background-image:repeating-linear-gradient(to right,var(--c-cobalt-300) 0 5px,#0000 5px 10px);background-repeat:repeat-x;background-size:10px 100%;content:"";height:2px;left:0;opacity:.7;position:absolute;right:0;top:85px;z-index:0}@keyframes b{0%{background-position:0 0}to{background-position:10px 0}}@keyframes c{0%{background-position:0 0}to{background-position:0 10px}}.step_ZxPD{align-items:center;flex:1 1 0;flex-direction:column;gap:0;min-width:0;z-index:1}.kicker_Lcd0,.num_uueY{color:var(--c-cobalt-400);font-size:10px;letter-spacing:.16em}.kicker_Lcd0{margin-bottom:8px;text-transform:uppercase}.prism_G6tD{display:block;height:auto;max-width:140px;width:100%}.name_nVht{color:var(--c-cobalt-900);font-size:15px;font-weight:700;letter-spacing:-.01em;margin-top:16px}.endLabel_ITdr,.eyebrow_Xeup{font-weight:500;letter-spacing:.14em;text-transform:uppercase}.caption_VxP7{color:var(--c-cobalt-700);font-size:13px;line-height:1.5;margin:6px auto 0;max-width:26ch}.end_IXDB{align-self:start;background:var(--c-cobalt-50);border:1px solid var(--c-cobalt-100);border-radius:var(--radius-lg);display:flex;flex-direction:column;margin-top:18px;padding:18px 20px}.optTag_IJxn,.term_JuqQ{border:1px solid var(--term-border)}.endLabel_ITdr{color:var(--c-cobalt-400);font-size:10px;margin-bottom:14px}.endList_exyn{display:flex;flex-direction:column;gap:10px;margin:0;padding:0}.comment_hpRv,.prompt_psQD{margin:6px 0}.endList_exyn li{align-items:center;color:var(--c-cobalt-700);display:flex;font-size:13px;gap:10px}.endIcon_hJUh{align-items:center;display:inline-flex;flex-shrink:0;height:22px;justify-content:center;width:22px}.endIcon_hJUh svg{display:block;height:22px;width:22px}.term_JuqQ{--term-bg:#0a0f1a;--term-fg:#c9d4e5;--term-fg-dim:#5f6e86;--term-cobalt:#6892d9;--term-green:#5fe39a;--term-border:#1a2540;background:var(--term-bg);border-radius:8px;bottom:24px;box-shadow:0 0 0 1px #21468b1f,0 24px 64px -16px #0a172f73,inset 0 0 80px #0006;color:var(--term-fg);font-size:13px;left:50%;line-height:1.55;max-width:640px;overflow:hidden;position:fixed;transform:translateX(-50%);width:calc(100% - 48px);z-index:9999}.bar_drv3{align-items:center;background:#060912;border-bottom:1px solid var(--term-border);color:var(--term-fg-dim);display:flex;font-size:11px;gap:10px;padding:8px 14px}.cmd_zk01,.prompt_psQD,.title_dOje b{color:var(--term-fg)}.am_aiTx .actions_tBJ6,.am_aiTx .decidesk_Awcs .col_H0wh .kpiRow_jW1s,.am_aiTx .openregister_SkR_ .col_H0wh .kpiRow_jW1s,.dots_LXZe,.zoneFrame_rS50 .am-kpiRow{display:flex;gap:6px}.dot_lJrY{border-radius:50%;height:10px;width:10px}.dotR_oUOw{background:#ff6b7a}.dotY_w1VC{background:#f7c76f}.dotG_hQxn{background:var(--term-green)}.btn_rhtj,.opts_EEks li{background:#0000;font-family:inherit;cursor:pointer}.title_dOje{flex:1}.body_Gocx{padding:18px 20px}.optOn_y3xe .optCheck_f8nv,.user_vOvo{color:var(--term-green)}.host_e_vr{color:var(--term-cobalt)}.comment_hpRv,.optCheck_f8nv,.optKey_bRlR,.path_NKE0,.sigil_TdfG{color:var(--term-fg-dim)}.opts_EEks{display:flex;flex-direction:column;gap:4px;margin:8px 0;padding:0}.opts_EEks li{align-items:center;border:none;color:var(--term-fg);display:flex;font-size:inherit;gap:10px;padding:4px 0;text-align:left;width:100%}.opts_EEks li:hover{background:#ffffff05}.opts_EEks li:focus-visible{outline:1px solid var(--term-cobalt);outline-offset:2px}.optCheck_f8nv{width:12px}.optLabel_lm0F{color:var(--term-fg);flex:1}.optTag_IJxn{border-radius:3px;color:var(--term-fg-dim);font-size:10px;padding:1px 7px}.actions_dOhG{border-top:1px solid var(--term-border);display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;padding-top:12px}.btn_rhtj{align-items:center;border:1px solid var(--term-border);border-radius:3px;color:var(--term-fg);display:inline-flex;font-size:12px;gap:6px;padding:6px 12px;transition:background .12s,border-color .12s}.am_aiTx .frame_rTLq,.modal_zIZY{font-family:var(--conduction-typography-font-family-body)}.btn_rhtj:hover{background:#21468b1a;border-color:var(--term-cobalt)}.btnKey_jJip{background:var(--term-border);border-radius:2px;color:var(--term-cobalt);font-size:10px;padding:1px 5px}.btnPrimary_yiuM{background:var(--c-orange-knvb);border-color:var(--c-orange-knvb);color:#fff}.btnPrimary_yiuM:hover{background:var(--c-orange-knvb);border-color:#fff;filter:brightness(1.05)}.btnPrimary_yiuM .btnKey_jJip{background:#0003;color:#fff}.modal_zIZY{align-items:center;display:flex;inset:0;justify-content:center;position:fixed;z-index:10000}.overlay_poid{backdrop-filter:blur(2px);background:#0a172f8c;cursor:pointer;inset:0;position:absolute}.panel_H2Bg{background:#fff;border-radius:var(--radius-xl);box-shadow:var(--shadow-3,0 30px 80px -20px #0a172f66);max-width:520px;padding:40px 36px 32px;position:relative;width:calc(100% - 48px)}.close_BDR2,.progressBar_U8As,.scorePill_Saaj{background:var(--c-cobalt-50)}.close_BDR2{border:none;border-radius:50%;cursor:pointer;font-family:inherit;font-size:20px;height:32px;line-height:1;position:absolute;right:14px;top:14px;transition:background .12s;width:32px}.eyebrow_Xeup,.progressLabel_p8uc,.scorePill_Saaj{font-family:var(--conduction-typography-font-family-code)}.am_aiTx .nav_qMav .item_h8Kq.active_IbeB,.am_aiTx .procest_Ffgk .timeline_QvpS .step_LVAM.todo_yBZa .h_fVj_,.chip_u0f6:hover,.close_BDR2:hover,.tone-cobalt-100_C3hp .hexA_u6dX,.tone-cobalt-50_HxD3 .hexB_Q1K6,.zoneFrame_rS50 .am-nav .am-item.am-active{background:var(--c-cobalt-100)}.eyebrow_Xeup{color:var(--c-orange-knvb);font-size:11px;margin:0 0 8px}.title_TMh8{color:var(--c-cobalt-900);font-size:28px;font-weight:700;letter-spacing:-.02em;margin:0 0 8px}.subtitle_KO1I{color:var(--c-cobalt-700);font-size:15px;line-height:1.55;margin:0 0 16px}.scorePill_Saaj{align-items:center;border-radius:var(--radius-pill);color:var(--c-cobalt-900);display:inline-flex;font-size:12px;gap:6px;letter-spacing:.04em;margin-bottom:24px;padding:6px 12px}.progress_T26X{margin:24px 0 16px}.progressLabel_p8uc{color:var(--c-cobalt-400);display:flex;font-size:11px;justify-content:space-between;letter-spacing:.06em;margin-bottom:8px;text-transform:uppercase}.progressLabel_p8uc strong{color:var(--c-cobalt-900);font-weight:700}.progressBar_U8As{border-radius:3px;height:6px;overflow:hidden}.progressFill_rTU0{background:var(--c-orange-knvb);height:100%;transition:width .24s}.grid_GCc_{display:flex;flex-direction:column;gap:6px;margin:0 0 20px;padding:0}.gridItemFound_bJ8w,.gridItem_Nwqd{align-items:center;color:var(--c-cobalt-400);display:flex;font-size:14px;gap:10px}.gridItemFound_bJ8w{color:var(--c-cobalt-900);font-weight:500}.gridHex_a8lU{background:var(--c-cobalt-200);clip-path:var(--hex-pointy-top);flex-shrink:0;height:12px;width:10px}.cta_K6Qw{color:var(--c-cobalt-400);font-size:13px;margin:16px 0 24px}.btnPrimary_ZZIQ,.btnSecondary_pgRe{font-family:inherit;font-size:14px;font-weight:500;padding:10px 18px;cursor:pointer}.actions_sWON{display:flex;gap:8px;justify-content:flex-end}.btnSecondary_pgRe{background:#fff;border:1px solid var(--c-cobalt-200);border-radius:var(--radius-md);color:var(--c-cobalt-700);transition:border-color .12s}.btnSecondary_pgRe:hover{border-color:var(--c-blue-cobalt);color:var(--c-blue-cobalt)}.btnPrimary_ZZIQ{background:var(--c-blue-cobalt);border:1px solid var(--c-blue-cobalt);border-radius:var(--radius-md);color:#fff;transition:background .12s}.block_H8tf,.id_xVrJ{font-family:var(--conduction-typography-font-family-code)}.btnPrimary_ZZIQ:hover{background:var(--c-cobalt-700);border-color:var(--c-cobalt-700)}.card_GBkq{background:#fff;border:1px solid var(--c-cobalt-100);border-radius:var(--radius-md);color:inherit;display:block;padding:var(--space-5);transition:border-color .12s,transform .12s}a.card_GBkq:hover{border-color:var(--c-cobalt-400);transform:translateY(-1px)}.am_aiTx .nav_qMav,.zoneFrame_rS50 .am-nav{border-right:1px solid var(--c-cobalt-100)}.head_UGqD{gap:var(--space-4);margin-bottom:var(--space-3)}.head_AUSd,.head_UGqD,.hex_KLSq,.hex_SFbx,.left__6eY,.nav_MuJ0{align-items:center;display:flex}.iconText_khzU,.id_xVrJ,.statusPill_I15T{display:inline-block}.hex_KLSq{background:var(--c-cobalt-50);clip-path:var(--hex-pointy-top);color:var(--c-cobalt-700);flex-shrink:0;font-size:16px;font-weight:700;height:46px;justify-content:center;width:40px}.iconText_khzU,.label_gtGC{font-size:18px;font-weight:700}.heading_BKhJ{flex:1;min-width:0}.label_gtGC{color:var(--c-cobalt-900);line-height:1.2;margin:0}.id_xVrJ{color:var(--c-cobalt-400);font-size:12px;margin-top:2px}.meta_jGPQ dt,.statusPill_I15T{font-size:11px;letter-spacing:.06em;text-transform:uppercase}.statusPill_I15T{border-radius:999px;flex-shrink:0;font-weight:600;padding:4px 10px}.status-stub_DiJW .statusPill_I15T{background:var(--c-orange-50,#fff4e5);color:var(--c-orange-knvb)}.status-external_qTFN .statusPill_I15T{background:var(--c-cobalt-100);color:var(--c-cobalt-900)}.description_gxuB{color:var(--c-cobalt-700);font-size:14px;line-height:1.55;margin:0 0 var(--space-4)}.meta_jGPQ dt,.muted_UUom{color:var(--c-cobalt-400)}.meta_jGPQ{display:grid;font-size:13px;gap:6px var(--space-4);grid-template-columns:max-content 1fr;margin:0}.meta_jGPQ dt{align-self:center;font-weight:500}.meta_jGPQ dd{align-self:center;color:var(--c-cobalt-900);margin:0}.grid_wxpO{display:grid;gap:var(--space-5);margin:var(--space-5) 0}.cols-1_HKdd,.grid-1_ZJDm{grid-template-columns:1fr}.grid-2_VLbL{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3_T2Iz{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4_Jq_W{grid-template-columns:repeat(4,minmax(0,1fr))}.block_H8tf{background:var(--c-cobalt-900);border-radius:var(--radius-lg);box-shadow:0 12px 32px -8px #0a172f73;color:#fff7d2eb;font-size:13px;line-height:1.55;margin:32px 0;overflow-x:auto;padding:28px 32px;position:relative}.card_yzlA,.itemOpen_h1X0{box-shadow:var(--shadow-2)}.am_aiTx .caption_YOoV,.copy_NpIj,.filename_c7cG{font-size:11px;letter-spacing:.06em;text-transform:uppercase}.filename_c7cG{background:#fff7d214;border-radius:3px;color:var(--c-orange-knvb);display:inline-block;margin-bottom:12px}.copy_NpIj,.filename_c7cG{padding:4px 10px}.copy_NpIj{background:#fff7d20f;border:1px solid #fff7d21f;border-radius:3px;color:#fff7d2b3;cursor:pointer;font-family:inherit;opacity:0;position:absolute;right:14px;top:14px;transition:opacity .14s,background .14s,color .14s}.block_H8tf:hover .copy_NpIj,.copy_NpIj:focus-visible{opacity:1}.copy_NpIj:hover{background:#fff7d224;color:#fff7d2eb}.pre_l0pN{font-size:inherit;line-height:inherit;margin:0}.pre_l0pN,.pre_l0pN code{background:#0000;color:inherit;font-family:inherit;padding:0;white-space:pre}.pre_l0pN code{border:0}.chips_iZcQ{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:32px}.chip_u0f6{background:var(--c-cobalt-50);border:1px solid #0000;border-radius:var(--radius-pill);color:var(--c-cobalt-700);cursor:pointer;font-family:inherit;font-size:14px;font-weight:500;padding:7px 16px;transition:background .14s,color .14s}.am_R3o6 .sb-body_wEAG .row_BVnI.dark_OehN,.am_aiTx .detail_jxoG.rich_h6dR .sb-tab_cUTr.active_IbeB .ico_k1qU,.am_aiTx .detail_jxoG.rich_h6dR .sb-tab_cUTr.active_IbeB .l_pzRz,.cardCta_qv1e:hover,.chipActive__lp6:hover,.cta_G5Px:hover,.panel-cobalt-dark_IfbG,.s1_uIIL,.s2_bnR5,.s3Cobalt_ieij,.tone-cobalt-700_gv9x .hexA_u6dX,.zoneFrame_rS50 .am-detail.am-rich .am-sb-tab.am-active .am-ico,.zoneFrame_rS50 .am-detail.am-rich .am-sb-tab.am-active .am-l{background:var(--c-cobalt-700)}.empty_kS7V{color:var(--c-cobalt-400);font-size:14px;margin:32px 0}.am_MkMu.scene_L0T1,.am_MkUc.wm_o0LD,.am_R3o6.sm_DYMR,.am_aiTx{display:contents}.am_aiTx .figure_BCpC{display:inline-flex;flex-direction:column;gap:var(--space-2);margin:0;max-width:100%;width:100%}.am_aiTx .frame_rTLq{aspect-ratio:16/10;background:#fff;border:1px solid var(--c-cobalt-100);border-radius:var(--radius-lg);box-shadow:var(--shadow-3);display:flex;flex-direction:column;max-width:720px;overflow:hidden;position:relative;width:100%}.am_MkUc .wmCaption_GJuG,.am_aiTx .caption_YOoV,.applies_dO6C,.wordmark_JGPA,.zoneHead_UKmg code{font-family:var(--conduction-typography-font-family-code)}.am_aiTx .size-sm_h59j{max-width:480px}.am_aiTx .size-md_JtWT{max-width:720px}.am_aiTx .size-lg_IDrq{max-width:960px}.am_aiTx .caption_YOoV{color:var(--c-cobalt-400)}.am_aiTx .empty_BWCn{align-items:center;color:var(--c-cobalt-400);display:flex;flex:1;font-size:13px;justify-content:center}.am_aiTx .topbar_nV5p{align-items:center;background:var(--c-blue-cobalt);display:flex;flex-shrink:0;gap:6px;height:24px;padding:0 10px}.am_aiTx .topbar_nV5p .logo_yhvV,.zoneFrame_rS50 .am-topbar .am-logo{background:#fff;border-radius:6px;height:12px;width:16px}.am_aiTx .topbar_nV5p .icon_N5Bp,.zoneFrame_rS50 .am-topbar .am-icon{background:#ffffffb3;border-radius:1px;height:8px;width:8px}.am_aiTx .topbar_nV5p .pill_hWIN{background:#fff6;border-radius:4px;height:8px;width:12px}.am_aiTx .topbar_nV5p .bell_r1wD,.zoneFrame_rS50 .am-topbar .am-bell{background:#ffffffb3;border-radius:50%;height:8px;width:8px}.am_aiTx .topbar_nV5p .avatar_hX0q,.zoneFrame_rS50 .am-topbar .am-avatar{background:#fff;border-radius:50%;height:10px;width:10px}.am_aiTx .body_dJsK,.zoneFrame_rS50 .am-body{display:flex;flex:1;min-height:0;min-width:0;overflow:hidden}.am_aiTx .nav_qMav{background:var(--c-cobalt-50);display:flex;flex-direction:column;flex-shrink:0;gap:5px;min-width:100px;padding:10px 8px;width:22%}.am_aiTx .nav_qMav .navHead_VcX_{align-items:center;background:var(--c-blue-cobalt);border-radius:3px;display:flex;gap:5px;margin-bottom:4px;padding:5px 6px}.am_aiTx .nav_qMav .navHead_VcX_ .h_fVj_,.zoneFrame_rS50 .am-nav .am-navHead .am-h{background:var(--c-orange-knvb);clip-path:var(--hex-pointy-top);height:9px;width:8px}.am_aiTx .nav_qMav .navHead_VcX_ .l_pzRz,.zoneFrame_rS50 .am-nav .am-navHead .am-l{background:#ffffffb3;border-radius:1px;flex:1;height:4px}.am_aiTx .nav_qMav .item_h8Kq{align-items:center;border-radius:2px;display:flex;gap:5px;padding:4px 5px}.am_aiTx .nav_qMav .item_h8Kq .ico_k1qU,.zoneFrame_rS50 .am-nav .am-item .am-ico{background:var(--c-cobalt-400);border-radius:1px;flex-shrink:0;height:8px;width:8px}.am_aiTx .nav_qMav .item_h8Kq .l_pzRz,.zoneFrame_rS50 .am-nav .am-item .am-l{background:var(--c-cobalt-200);border-radius:1px;flex:1;height:4px}.am_aiTx .nav_qMav .item_h8Kq.active_IbeB .l_pzRz,.zoneFrame_rS50 .am-nav .am-item.am-active .am-l{background:var(--c-cobalt-700);height:5px}.am_aiTx .col_H0wh,.zoneFrame_rS50 .am-col{display:flex;flex:1;flex-direction:column;gap:10px;min-height:0;min-width:0;overflow:hidden;padding:14px}.am_aiTx .detail_jxoG{background:#fff;border-left:1px solid var(--c-cobalt-100);display:flex;flex-direction:column;flex-shrink:0;gap:8px;min-width:130px;padding:12px 10px;width:26%}.am_aiTx .detail_jxoG.rich_h6dR{gap:0;padding:0}.am_aiTx .detail_jxoG.rich_h6dR .sb-head_tX10,.zoneFrame_rS50 .am-detail.am-rich .am-sb-head{align-items:center;border-bottom:1px solid var(--c-cobalt-100);display:flex;gap:6px;padding:10px}.am_aiTx .detail_jxoG.rich_h6dR .sb-head_tX10 .ico_k1qU{background:var(--c-cobalt-50);border:1px solid var(--c-cobalt-200);border-radius:50%;flex-shrink:0;height:16px;width:16px}.am_aiTx .detail_jxoG.rich_h6dR .sb-head_tX10 .meta_MKgc,.am_aiTx .kpi_XMFT .meta_MKgc,.am_aiTx .stack_pfrq .item_h8Kq .lines_YCYi,.am_aiTx .w-graph-donut_C5Bf .legend_al36,.zoneFrame_rS50 .am-kpi .am-meta{display:flex;flex:1;flex-direction:column;gap:3px;min-width:0}.am_aiTx .detail_jxoG.rich_h6dR .sb-head_tX10 .title_Yq9B,.zoneFrame_rS50 .am-detail.am-rich .am-sb-head .am-title{background:var(--c-cobalt-900);border-radius:1px;height:6px;width:50%}.am_aiTx .detail_jxoG.rich_h6dR .sb-head_tX10 .desc_hFxb,.zoneFrame_rS50 .am-detail.am-rich .am-sb-head .am-desc{background:var(--c-cobalt-300);border-radius:1px;height:3px;width:85%}.am_aiTx .detail_jxoG.rich_h6dR .sb-head_tX10 .close_jyrO,.zoneFrame_rS50 .am-detail.am-rich .am-sb-head .am-close{background:var(--c-cobalt-300);flex-shrink:0;height:8px;width:8px}.am_aiTx .detail_jxoG.rich_h6dR .sb-tabs_typG{border-bottom:1px solid var(--c-cobalt-100);display:flex;padding:0 10px}.am_aiTx .detail_jxoG.rich_h6dR .sb-tab_cUTr{align-items:center;border-bottom:2px solid #0000;display:flex;flex:1;flex-direction:column;gap:3px;padding:6px 0}.am_aiTx .detail_jxoG.rich_h6dR .sb-tab_cUTr.active_IbeB,.zoneFrame_rS50 .am-detail.am-rich .am-sb-tab.am-active{border-bottom-color:var(--c-blue-cobalt)}.am_aiTx .detail_jxoG.rich_h6dR .sb-tab_cUTr .ico_k1qU,.zoneFrame_rS50 .am-detail.am-rich .am-sb-tab .am-ico{background:var(--c-cobalt-300);border-radius:50%;height:7px;width:7px}.am_aiTx .detail_jxoG.rich_h6dR .sb-tab_cUTr .l_pzRz,.zoneFrame_rS50 .am-detail.am-rich .am-sb-tab .am-l{background:var(--c-cobalt-300);border-radius:1px;height:3px;width:24px}.am_aiTx .detail_jxoG.rich_h6dR .sb-body_tlSV,.zoneFrame_rS50 .am-detail.am-rich .am-sb-body{display:flex;flex-direction:column;gap:7px;overflow:hidden;padding:10px}.am_aiTx .detail_jxoG.rich_h6dR .sb-label_rqL7{background:var(--c-cobalt-700);border-radius:1px;height:4px;width:40%}.am_aiTx .detail_jxoG.rich_h6dR .sb-input_Eniv,.zoneFrame_rS50 .am-detail.am-rich .am-sb-input{background:#fff;border:1px solid var(--c-cobalt-200);border-radius:3px;height:14px}.am_aiTx .detail_jxoG.rich_h6dR .sb-filter_NfYP,.zoneFrame_rS50 .am-detail.am-rich .am-sb-filter,.zoneFrame_rS50 .am-panel .am-stack{display:flex;flex-direction:column;gap:4px}.am_aiTx .detail_jxoG.rich_h6dR .sb-filter_NfYP .lbl_PQ9Z,.zoneFrame_rS50 .am-detail.am-rich .am-sb-filter .am-lbl{background:var(--c-cobalt-400);border-radius:1px;height:3px;width:30%}.am_aiTx .detail_jxoG.rich_h6dR .sb-filter_NfYP .field_cQBy,.zoneFrame_rS50 .am-detail.am-rich .am-sb-filter .am-field{background:#fff;border:1px solid var(--c-cobalt-200);border-radius:2px;height:12px}.am_aiTx .panel_UEJ3{background:#fff;border:1px solid var(--c-cobalt-100);border-radius:var(--radius-sm);display:flex;flex-direction:column;gap:6px;min-width:0;padding:10px 12px}.am_aiTx .decidesk_Awcs .col_H0wh .head_Mb_7,.am_aiTx .panel_UEJ3 .head_Mb_7,.zoneFrame_rS50 .am-panel .am-head{align-items:center;display:flex;gap:6px;justify-content:space-between}.am_aiTx .panel_UEJ3 .head_Mb_7 .title_Yq9B{background:var(--c-cobalt-700);border-radius:1px;height:6px;width:30%}.am_aiTx .row_F8XK{background:var(--c-cobalt-100);border-radius:1px;height:4px;width:100%}.am_aiTx .row_F8XK.short_q3rA{width:60%}.am_aiTx .row_F8XK.dark_lI96,.am_aiTx .w-calendar_xsDO .grid_SQp8 .day_YzA2.event_VN0W,.soon_JpLs,.soon_WxqE{background:var(--c-cobalt-300)}.am_aiTx .row_F8XK.head_Mb_7{background:var(--c-cobalt-700);height:6px;width:40%}.am_aiTx .row_F8XK.accent_yXEa{background:var(--c-orange-knvb);width:30%}.am_aiTx .statusPill_lg4d{align-items:center;background:var(--c-mint-300);border-radius:999px;display:inline-flex;gap:3px;padding:2px 6px}.am_aiTx .statusPill_lg4d .h_fVj_{background:var(--c-mint-500);clip-path:var(--hex-pointy-top);height:7px;width:6px}.am_aiTx .statusPill_lg4d .t_YewU{background:var(--c-mint-500);border-radius:1px;height:3px;width:22px}.am_aiTx .statusPill_lg4d.beta_gsAa,.tone-coral-100_lKCz .hexA_u6dX,.tone-coral-100_lKCz .hexB_Q1K6{background:var(--c-coral-300)}.am_aiTx .statusPill_lg4d.beta_gsAa .t_YewU{background:var(--c-coral-500)}.am_aiTx .kpi_XMFT{align-items:center;background:var(--c-cobalt-50);border-radius:var(--radius-sm);display:flex;flex:1;gap:8px;padding:8px 10px}.am_aiTx .kpi_XMFT .ico_k1qU{background:var(--c-mint-300);clip-path:var(--hex-pointy-top);flex-shrink:0;height:18px;width:16px}.am_R3o6 .sb-body_wEAG .smPerson_aAXJ.b_soRw .av_reBp,.am_aiTx .kpi_XMFT.lavender_LU7L .ico_k1qU,.am_aiTx .stack_pfrq .item_h8Kq .av_GP0q.b_KP8c,.am_aiTx .w-mail_HLGe .item_h8Kq.b_KP8c .av_GP0q,.am_aiTx .w-werkvoorraad_Kyca .item_h8Kq.b_KP8c .av_GP0q,.tone-lavender-100_rK1b .hexA_u6dX,.tone-lavender-100_rK1b .hexB_Q1K6,.zoneFrame_rS50 .am-panel .am-item .am-av.am-b{background:var(--c-lavender-300)}.am_R3o6 .sb-body_wEAG .smPerson_aAXJ.d_ZQEo .av_reBp,.am_aiTx .kpi_XMFT.forest_sDyB .ico_k1qU,.am_aiTx .stack_pfrq .item_h8Kq .av_GP0q.d_n8oP,.am_aiTx .w-files_BMSZ .item_h8Kq.sheet_w7IH .ico_k1qU,.am_aiTx .w-mail_HLGe .item_h8Kq.d_n8oP .av_GP0q,.am_aiTx .w-werkvoorraad_Kyca .item_h8Kq.c_s3oN .av_GP0q,.tone-forest-100_Tlyj .hexA_u6dX,.tone-forest-100_Tlyj .hexB_Q1K6,.zoneFrame_rS50 .am-kpi.am-forest .am-ico{background:var(--c-forest-300)}.am_aiTx .kpi_XMFT .num_kgtJ{background:var(--c-cobalt-900);border-radius:1px;height:8px;width:30%}.am_aiTx .kpi_XMFT .label_qEG3,.zoneFrame_rS50 .am-kpi .am-label{background:var(--c-cobalt-400);border-radius:1px;height:3px;width:70%}.am_aiTx .stack_pfrq,.am_aiTx .w-mail_HLGe .list_PKRi,.am_aiTx .w-rss_ucmF .list_PKRi{display:flex;flex-direction:column;gap:5px;min-width:0}.am_aiTx .stack_pfrq .item_h8Kq{align-items:center;border-bottom:1px solid var(--c-cobalt-50);display:flex;gap:6px;padding:4px 0}.am_aiTx .stack_pfrq .item_h8Kq:last-child{border-bottom:none}.am_R3o6 .sb-body_wEAG .smPerson_aAXJ .av_reBp,.am_aiTx .stack_pfrq .item_h8Kq .av_GP0q,.am_aiTx .w-mail_HLGe .item_h8Kq .av_GP0q{background:var(--c-mint-300);border-radius:50%;flex-shrink:0;height:14px;width:14px}.am_R3o6 .sb-body_wEAG .smPerson_aAXJ.e_x9G0 .av_reBp,.am_aiTx .stack_pfrq .item_h8Kq .av_GP0q.e_UXne,.am_aiTx .w-files_BMSZ .item_h8Kq.doc_L3j7 .ico_k1qU,.am_aiTx .w-mail_HLGe .item_h8Kq.e_UXne .av_GP0q,.tone-terracotta-100_md3P .hexA_u6dX,.tone-terracotta-100_md3P .hexB_Q1K6{background:var(--c-terracotta-300)}.am_aiTx .stack_pfrq .item_h8Kq .lines_YCYi .l1_VANw{background:var(--c-cobalt-700);border-radius:1px;height:4px;width:60%}.am_aiTx .stack_pfrq .item_h8Kq .lines_YCYi .l2_NEpO{background:var(--c-cobalt-200);border-radius:1px;height:3px;width:80%}.am_aiTx .actions_tBJ6 .btn_RHxv{background:var(--c-blue-cobalt);border-radius:3px;height:16px;width:56px}.am_aiTx .actions_tBJ6 .btn_RHxv.ghost_di7C,.zoneFrame_rS50 .am-pageHeader .am-actions .am-btn.am-ghost{background:#fff;border:1px solid var(--c-cobalt-200)}.am_aiTx .launchpad_kGfC{background:linear-gradient(135deg,var(--c-blue-cobalt) 0,var(--c-cobalt-700) 100%);display:flex;flex-direction:column;position:relative}.am_aiTx .launchpad_kGfC .grid_SQp8{display:grid;flex:1;gap:8px;grid-template-columns:1fr 1.2fr 1fr 1fr;min-height:0;padding:12px}.am_aiTx .launchpad_kGfC .col_H0wh{gap:8px;padding:0}.am_aiTx .launchpad_kGfC .tile_fdwJ,.am_aiTx .w_ijMg{background:#fffffff0;border-radius:var(--radius-sm);display:flex;flex-direction:column;gap:4px;min-height:0;padding:8px 10px}.am_aiTx .launchpad_kGfC .tile_fdwJ.primary_k7GC{align-items:center;background:var(--c-blue-cobalt);flex:1;gap:6px;justify-content:center;min-height:50px}.am_aiTx .launchpad_kGfC .tile_fdwJ.primary_k7GC .icon_N5Bp,.am_aiTx .w-launcher_ZCI2 .ico_k1qU{background:#fff;clip-path:var(--hex-pointy-top);height:25px;width:22px}.am_aiTx .launchpad_kGfC .tile_fdwJ.primary_k7GC .label_qEG3,.am_aiTx .w-launcher_ZCI2 .label_qEG3{background:#fff;border-radius:1px;height:5px;width:50%}.am_aiTx .launchpad_kGfC .tile_fdwJ.empty_BWCn{background:#ffffff8c;flex:0 0 26%}.am_aiTx .launchpad_kGfC .tileHead_v3NC,.am_aiTx .w_ijMg .wHead_CD1P{align-items:center;display:flex;gap:5px;margin-bottom:2px}.am_aiTx .launchpad_kGfC .tileHead_v3NC .h_fVj_,.am_aiTx .w_ijMg .wHead_CD1P .h_fVj_{background:var(--c-cobalt-400);border-radius:1px;height:9px;width:9px}.am_aiTx .launchpad_kGfC .tileHead_v3NC .t_YewU,.am_aiTx .w-werkvoorraad_Kyca .item_h8Kq .l1_VANw,.am_aiTx .w_ijMg .wHead_CD1P .t_YewU{background:var(--c-cobalt-700);border-radius:1px;flex:1;height:4px}.am_aiTx .w-graph-bar_eTQI .bars_udZq{align-items:flex-end;display:flex;flex:1;gap:4px;min-height:50px;padding-top:4px}.am_aiTx .w-graph-bar_eTQI .bar_iTAm{background:var(--c-cobalt-300);border-radius:1px 1px 0 0;flex:1}.am_aiTx .w-graph-bar_eTQI .axis_xye0,.am_aiTx .w-graph-line_L1Sc .axis_xye0{background:var(--c-cobalt-200);height:1px}.am_aiTx .w-graph-line_L1Sc .chart_FgX7{align-items:flex-end;display:flex;flex:1;min-height:50px;padding-top:4px;position:relative}.am_aiTx .w-graph-line_L1Sc .chart_FgX7 svg{height:100%;min-height:50px;width:100%}.am_aiTx .w-graph-line_L1Sc .chart_FgX7 .stroke_hvii{fill:none;stroke:var(--c-blue-cobalt);stroke-width:2}.am_aiTx .w-graph-line_L1Sc .chart_FgX7 .fill_BgJG{fill:var(--c-cobalt-100)}.am_aiTx .w-graph-line_L1Sc .chart_FgX7 .dot_svJe{fill:var(--c-orange-knvb)}.am_aiTx .w-graph-donut_C5Bf .chart_FgX7{align-items:center;display:flex;flex:1;gap:8px;justify-content:center;min-height:50px}.am_aiTx .w-graph-donut_C5Bf .donut_gZOU{background:conic-gradient(var(--c-blue-cobalt) 0 60%,var(--c-orange-knvb) 60% 78%,var(--c-cobalt-200) 78% 100%);border-radius:50%;flex-shrink:0;height:44px;position:relative;width:44px}.am_aiTx .w-graph-donut_C5Bf .donut_gZOU:after{background:#fff;border-radius:50%;content:"";inset:8px;position:absolute}.am_aiTx .w-graph-donut_C5Bf .legend_al36 .row_F8XK{align-items:center;display:flex;gap:4px}.am_aiTx .w-graph-donut_C5Bf .legend_al36 .swatch_HnIz{border-radius:1px;flex-shrink:0;height:8px;width:8px}.am_R3o6 .sb-body_wEAG .smStage_w3gq.todo_VUFk .h_F5BC,.am_aiTx .w-graph-donut_C5Bf .legend_al36 .swatch_HnIz.c_s3oN,.am_aiTx .w-jira_ikGh .item_h8Kq.todo_yBZa .pip_DWke,.tone-cobalt-100_C3hp .hexB_Q1K6{background:var(--c-cobalt-200)}.am_aiTx .w-files_BMSZ .item_h8Kq .l_pzRz,.am_aiTx .w-graph-donut_C5Bf .legend_al36 .label_qEG3{background:var(--c-cobalt-200);border-radius:1px;flex:1;height:3px}.am_aiTx .w-files_BMSZ .item_h8Kq,.am_aiTx .w-jira_ikGh .item_h8Kq,.am_aiTx .w-mail_HLGe .item_h8Kq,.am_aiTx .w-rss_ucmF .item_h8Kq,.am_aiTx .w-werkvoorraad_Kyca .item_h8Kq{align-items:center;display:flex;gap:5px}.am_R3o6 .sb-body_wEAG .smStage_w3gq .l1_r0wE,.am_aiTx .w-mail_HLGe .item_h8Kq .l1_VANw{background:var(--c-cobalt-700);border-radius:1px;height:3px;width:60%}.am_aiTx .w-mail_HLGe .item_h8Kq .l2_NEpO{background:var(--c-cobalt-200);border-radius:1px;height:2px;width:80%}.am_aiTx .w-calendar_xsDO .grid_SQp8{display:grid;flex:1;gap:2px;grid-auto-rows:1fr;grid-template-columns:repeat(7,1fr);min-height:40px}.am_aiTx .w-calendar_xsDO .grid_SQp8 .day_YzA2{background:var(--c-cobalt-50);border-radius:1px}.am_aiTx .w-calendar_xsDO .grid_SQp8 .day_YzA2.muted_CQw0{background:#0000}.am_aiTx .w-files_BMSZ .list_PKRi,.am_aiTx .w-jira_ikGh .list_PKRi,.am_aiTx .w-werkvoorraad_Kyca .list_PKRi{display:flex;flex-direction:column;gap:4px;min-width:0}.am_aiTx .w-files_BMSZ .item_h8Kq .ico_k1qU{background:var(--c-blue-cobalt);clip-path:var(--hex-pointy-top);flex-shrink:0;height:13px;width:11px}.am_aiTx .w-decks_fjGi .columns_lTce{display:grid;flex:1;gap:4px;grid-template-columns:repeat(3,1fr);min-height:50px}.am_aiTx .w-decks_fjGi .columns_lTce .col_H0wh{background:var(--c-cobalt-50);border-radius:2px;display:flex;flex-direction:column;gap:2px;padding:3px}.am_aiTx .w-decks_fjGi .columns_lTce .card_GLk2{background:#fff;border-left:2px solid var(--c-blue-cobalt);border-radius:1px;height:8px}.am_aiTx .w-decks_fjGi .columns_lTce .card_GLk2.b_KP8c{border-left-color:var(--c-orange-knvb)}.am_aiTx .w-decks_fjGi .columns_lTce .card_GLk2.c_s3oN{border-left-color:var(--c-mint-500)}.am_aiTx .w-rss_ucmF .item_h8Kq .src_tPWw{background:var(--c-cobalt-400);border-radius:1px;flex-shrink:0;height:3px;width:14px}.am_R3o6 .sb-body_wEAG .smKv_XZQw .v_v2dS,.am_R3o6 .sb-body_wEAG .smLog_duYr .msg_zvqj,.am_aiTx .w-jira_ikGh .item_h8Kq .l_pzRz,.am_aiTx .w-rss_ucmF .item_h8Kq .title_Yq9B{background:var(--c-cobalt-700);border-radius:1px;flex:1;height:3px}.am_aiTx .w-rss_ucmF .item_h8Kq .when_ucRr{background:var(--c-cobalt-200);border-radius:1px;flex-shrink:0;height:3px;width:18px}.am_aiTx .w-jira_ikGh .item_h8Kq .id_TDyc{background:var(--c-lavender-300);border-radius:1px;flex-shrink:0;height:4px;width:22px}.am_R3o6 .sb-body_wEAG .smStage_w3gq .h_F5BC,.am_aiTx .w-jira_ikGh .item_h8Kq .pip_DWke{background:var(--c-mint-500);clip-path:var(--hex-pointy-top);flex-shrink:0;height:11px;width:10px}.am_R3o6 .sb-body_wEAG .smLog_duYr.error_UG0K .ts_ysJ1,.am_R3o6 .sb-body_wEAG .smPerson_aAXJ.blocked_zvoW .pip_NgSb,.am_R3o6 .sb-body_wEAG .smPii_ozG_.redacted_wSqk,.am_R3o6 .sb-body_wEAG .smStage_w3gq.late_hkf7 .h_F5BC,.am_aiTx .w-jira_ikGh .item_h8Kq.blocked_tMas .pip_DWke,.am_aiTx .w-werkvoorraad_Kyca .item_h8Kq.late_ydlD .stage_gYTG{background:var(--c-red-vermillion)}.am_aiTx .w-video_jLhx .frame_rTLq{background:var(--c-cobalt-700);border-radius:2px;flex:1;min-height:50px;overflow:hidden;position:relative}.am_aiTx .w-video_jLhx .frame_rTLq:before{background:linear-gradient(135deg,var(--c-cobalt-700) 0,var(--c-cobalt-900) 100%);content:"";inset:0;position:absolute}.am_aiTx .w-video_jLhx .frame_rTLq .play_SkmB{border-bottom:6px solid #0000;border-left:10px solid #fff;border-top:6px solid #0000;height:0;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:0;z-index:1}.am_aiTx .w-video_jLhx .frame_rTLq .duration_K3Ld{background:var(--c-orange-knvb);border-radius:1px;bottom:4px;height:4px;position:absolute;right:4px;width:18px;z-index:1}.am_aiTx .w-upload_JZf6 .zone_kLpG{align-items:center;background:var(--c-cobalt-50);border:1px dashed var(--c-cobalt-300);border-radius:2px;display:flex;flex:1;gap:4px;justify-content:center;min-height:50px}.am_aiTx .w-upload_JZf6 .zone_kLpG .ico_k1qU{background:var(--c-terracotta-500);clip-path:var(--hex-pointy-top);height:18px;width:16px}.am_aiTx .w-upload_JZf6 .zone_kLpG .label_qEG3{background:var(--c-cobalt-400);border-radius:1px;height:3px;width:32px}.am_aiTx .w-werkvoorraad_Kyca .item_h8Kq .stage_gYTG{background:var(--c-lavender-300);clip-path:var(--hex-pointy-top);flex-shrink:0;height:11px;width:10px}.am_aiTx .w-werkvoorraad_Kyca .item_h8Kq .av_GP0q,.zoneFrame_rS50 .am-panel .am-item .am-av{background:var(--c-mint-300);border-radius:50%;flex-shrink:0;height:12px;width:12px}.am_aiTx .w-launcher_ZCI2{align-items:center;background:var(--c-blue-cobalt);border-radius:var(--radius-sm);display:flex;flex-direction:column;gap:6px;justify-content:center;min-height:60px;padding:12px}.am_aiTx .opencatalogi_VWIk .card_GLk2.c_s3oN .ico_k1qU,.am_aiTx .w-launcher_ZCI2.lavender_LU7L,.am_aiTx .w-subgrid_pngF .grid_SQp8 .cell_ESnZ.d_n8oP .ico_k1qU{background:var(--c-lavender-500)}.am_aiTx .opencatalogi_VWIk .card_GLk2.b_KP8c .ico_k1qU,.am_aiTx .w-launcher_ZCI2.forest_sDyB{background:var(--c-forest-500)}.am_aiTx .w-subgrid_pngF .grid_SQp8{display:grid;flex:1;gap:4px;grid-template-columns:repeat(2,1fr);min-height:50px}.am_aiTx .w-subgrid_pngF .grid_SQp8 .cell_ESnZ{align-items:center;background:var(--c-cobalt-50);border-radius:2px;display:flex;justify-content:center}.am_aiTx .w-subgrid_pngF .grid_SQp8 .cell_ESnZ .ico_k1qU{background:var(--c-blue-cobalt);clip-path:var(--hex-pointy-top);height:16px;width:14px}.am_aiTx .decidesk_Awcs .col_H0wh .panelRow_TJm1,.am_aiTx .openregister_SkR_ .col_H0wh .panelRow_TJm1,.zoneFrame_rS50 .am-panelRow{display:grid;flex:1;gap:8px;grid-template-columns:1fr 1fr;min-height:0}.am_aiTx .opencatalogi_VWIk .col_H0wh .grid_SQp8{display:grid;flex:1;gap:8px;grid-template-columns:repeat(3,1fr);min-height:0}.am_aiTx .opencatalogi_VWIk .card_GLk2{background:#fff;border:1px solid var(--c-cobalt-100);border-radius:var(--radius-sm);display:flex;flex-direction:column;gap:5px;padding:8px}.am_aiTx .opencatalogi_VWIk .card_GLk2 .ico_k1qU{background:var(--c-blue-cobalt);clip-path:var(--hex-pointy-top);height:21px;width:18px}.am_aiTx .opencatalogi_VWIk .card_GLk2.d_n8oP .ico_k1qU{background:var(--c-terracotta-500)}.am_aiTx .openconnector_L1iN .stage_gYTG{align-items:center;display:flex;gap:10px;padding:12px 0}.am_aiTx .openconnector_L1iN .stage_gYTG .source_ovMv,.am_aiTx .openconnector_L1iN .stage_gYTG .target_gcfd{align-items:center;background:var(--c-cobalt-50);border:1px solid var(--c-cobalt-200);border-radius:var(--radius-sm);display:flex;flex-direction:column;gap:4px;height:56px;justify-content:center;width:28%}.am_aiTx .openconnector_L1iN .stage_gYTG .source_ovMv .ico_k1qU{background:var(--c-lavender-500);clip-path:var(--hex-pointy-top);height:21px;width:18px}.am_aiTx .openconnector_L1iN .stage_gYTG .target_gcfd .ico_k1qU{background:var(--c-forest-500);clip-path:var(--hex-pointy-top);height:21px;width:18px}.am_aiTx .openconnector_L1iN .stage_gYTG .arrow_x1R7{background:var(--c-cobalt-300);flex:1;height:2px;position:relative}.am_aiTx .openconnector_L1iN .stage_gYTG .arrow_x1R7:after{border-bottom:4px solid #0000;border-left:6px solid var(--c-cobalt-300);border-top:4px solid #0000;content:"";position:absolute;right:0;top:50%;transform:translateY(-50%)}.am_aiTx .openconnector_L1iN .stage_gYTG .conn_KKdd{align-items:center;background:var(--c-blue-cobalt);border-radius:var(--radius-sm);display:flex;flex-direction:column;gap:4px;height:56px;justify-content:center;width:18%}.am_aiTx .openconnector_L1iN .stage_gYTG .conn_KKdd .ico_k1qU{background:#fff;clip-path:var(--hex-pointy-top);height:21px;width:18px}.am_aiTx .openconnector_L1iN .stage_gYTG .conn_KKdd .label_qEG3{background:#fffc;border-radius:1px;height:4px;width:60%}.am_aiTx .procest_Ffgk .timeline_QvpS{align-items:center;display:flex;gap:0;padding:8px 0;position:relative}.am_aiTx .procest_Ffgk .timeline_QvpS:before{background:var(--c-cobalt-200);content:"";height:2px;left:12px;position:absolute;right:12px;top:50%;z-index:0}.am_aiTx .procest_Ffgk .timeline_QvpS .step_LVAM{align-items:center;display:flex;flex:1;flex-direction:column;gap:4px;position:relative;z-index:1}.am_aiTx .procest_Ffgk .timeline_QvpS .step_LVAM .h_fVj_{background:var(--c-mint-500);clip-path:var(--hex-pointy-top);height:21px;width:18px}.am_aiTx .procest_Ffgk .timeline_QvpS .step_LVAM .label_qEG3{background:var(--c-cobalt-400);border-radius:1px;height:3px;width:60%}.am_MkUc .wmFigure_indk{align-items:flex-start;display:flex;flex-direction:column;gap:var(--space-2);margin:0}.am_MkUc .wmFrame_H827{background:var(--c-cobalt-900);border-radius:var(--radius-md);box-shadow:0 8px 24px -10px #00000026;display:flex;flex-direction:column;padding:12px}.am_MkUc .wmFrame_H827.wm-size-sm_rAzH{aspect-ratio:5/4;width:220px}.am_MkUc .wmFrame_H827.wm-size-md_fy4z{aspect-ratio:5/4;width:300px}.am_MkUc .wmFrame_H827.wm-size-lg_cYu6{aspect-ratio:5/4;width:380px}.am_MkUc .wmFrame_H827>.w_jcVv{flex:1;height:100%;min-height:0}.am_MkUc .wmCaption_GJuG{color:var(--c-cobalt-400);font-size:11px;letter-spacing:.06em;margin:0;text-transform:uppercase}.am_R3o6 .smFrame_gZVm{background:#fff;border:1px solid var(--c-cobalt-100);border-radius:var(--radius-md);box-shadow:0 8px 24px -10px #0000001a;display:flex;flex-direction:column;overflow:hidden}.am_R3o6 .smFrame_gZVm.sb-size-sm_qS3_{height:320px;width:240px}.am_R3o6 .smFrame_gZVm.sb-size-md_x0hr{height:400px;width:300px}.am_R3o6 .smFrame_gZVm.sb-size-lg_o8jf{height:480px;width:360px}.am_R3o6 .smFrame_gZVm>.detail_CUXI.rich_d_2t{border-left:none;flex:1;min-width:0;width:100%}.am_R3o6 .sb-body_wEAG .row_BVnI{background:var(--c-cobalt-200);border-radius:1px;flex-shrink:0;height:3px;width:100%}.am_R3o6 .sb-body_wEAG .row_BVnI.head_jxSV{background:var(--c-cobalt-700);height:5px;margin-bottom:4px;width:55%}.am_R3o6 .sb-body_wEAG .row_BVnI.short_tJwj{width:35%}.am_R3o6 .sb-body_wEAG .row_BVnI.med__pd0{width:70%}.am_R3o6 .sb-body_wEAG .smBreak_j8rH{background:var(--c-cobalt-100);height:1px;margin:4px 0}.am_R3o6 .sb-body_wEAG .smSub_G21i{background:var(--c-cobalt-700);border-radius:1px;height:4px;margin-top:4px;width:40%}.am_R3o6 .sb-body_wEAG .smKv_XZQw,.am_R3o6 .sb-body_wEAG .smStage_w3gq{align-items:center;display:flex;gap:8px}.am_R3o6 .sb-body_wEAG .smKv_XZQw .k_K8ay{background:var(--c-cobalt-400);border-radius:1px;flex-shrink:0;height:3px;width:30%}.am_R3o6 .sb-body_wEAG .smLog_duYr,.am_R3o6 .sb-body_wEAG .smPerson_aAXJ{align-items:center;display:flex;gap:6px}.am_R3o6 .sb-body_wEAG .smPerson_aAXJ .l1_r0wE{background:var(--c-cobalt-700);border-radius:1px;height:3px;width:70%}.am_R3o6 .sb-body_wEAG .smPerson_aAXJ .l2_ahPR{background:var(--c-cobalt-300);border-radius:1px;height:2px;width:50%}.am_R3o6 .sb-body_wEAG .smPerson_aAXJ .pip_NgSb{background:var(--c-mint-500);border-radius:50%;flex-shrink:0;height:8px;width:8px}.am_R3o6 .sb-body_wEAG .smStage_w3gq .l2_ahPR{background:var(--c-cobalt-300);border-radius:1px;height:2px;width:40%}.am_R3o6 .sb-body_wEAG .smLog_duYr .ts_ysJ1{background:var(--c-cobalt-400);border-radius:1px;flex-shrink:0;height:3px;width:22px}.am_R3o6 .sb-body_wEAG .smPiiBlock__rii{display:flex;flex-wrap:wrap;gap:4px}.am_R3o6 .sb-body_wEAG .smPii_ozG_{background:var(--c-cobalt-200);border-radius:1px;height:6px}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.panelHexBg_PUpd,.pos-top_GvdN .hexA_u6dX{left:50%;top:-22%;transform:translateX(-50%)}.am_UFYc.ii_LEif{align-items:center;color:var(--c-cobalt-700);display:inline-flex;flex-shrink:0;justify-content:center;line-height:0}.am_UFYc.ii_LEif svg,.svg_zm7R{display:block;height:100%;width:100%}.am_UFYc.ii_LEif.xs_wzBQ{height:12px;width:12px}.am_UFYc.ii_LEif.sm_eREt,.hexGlyph_zJRU{height:16px;width:16px}.am_UFYc.ii_LEif.md_G1K0{height:24px;width:24px}.am_UFYc.ii_LEif.lg_BsIR{height:40px;width:40px}.closeButton_CVFx{line-height:0;padding:0}.am_MkMu .sceneFrame_txZI{position:relative}.am_MkMu .sceneItem_RElN{position:absolute}.cellInner_cv8P,.cell_kEcq,.network_vpM7,.panel_TkOF,.viewport_vJYA{position:relative}.am_MkMu .sceneItem_RElN .wmFrame_lbFy{background:#fff;border:1px solid var(--c-cobalt-100);box-shadow:0 8px 24px -10px #0000001a;padding:12px}.content_knG7{font-size:85%;padding:5px 0}.content_knG7 a{color:inherit;-webkit-text-decoration:underline;text-decoration:underline}.zones_QERF{display:grid;gap:var(--space-5);grid-template-columns:1fr 1fr;margin:var(--space-6) 0 var(--space-10)}.zoneCard_DBJp{background:#fff;border:1px solid var(--c-cobalt-100);border-radius:var(--radius-lg);display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-6)}.zoneHead_UKmg{align-items:baseline;display:flex;flex-wrap:wrap;gap:var(--space-3)}.zoneHead_UKmg code{background:var(--c-cobalt-50);border-radius:3px;color:var(--c-blue-cobalt);font-size:13px;font-weight:500;padding:2px 8px}.zoneHead_UKmg h3{color:var(--c-blue-cobalt);font-size:22px;font-weight:600;letter-spacing:-.01em;margin:0}.applies_dO6C strong,.tone-mint_V45J .cardCta_qv1e,.tone-mint_V45J .cardEyebrow_Jb8V{color:var(--c-mint-500)}.applies_dO6C{color:var(--c-cobalt-400);font-size:10px;letter-spacing:.06em;margin-left:auto;text-transform:uppercase}.applies_dO6C strong{font-weight:500}.never_ygaU{color:var(--c-cobalt-300)}.zoneFrame_rS50{background:var(--c-cobalt-50);border-radius:var(--radius-md);padding:var(--space-4)}.zoneFrame_rS50 .am-frame{aspect-ratio:16/10;background:#fff;border:1px solid var(--c-cobalt-100);border-radius:var(--radius-lg);box-shadow:var(--shadow-1);display:flex;flex-direction:column;font-family:var(--conduction-typography-font-family-body);margin:0 auto;max-width:560px;overflow:hidden;position:relative;width:100%}.focusPageHeader_mSnT .am-pageHeader,.focusTopbar_Rmbc .am-topbar{box-shadow:0 0 0 2px var(--c-orange-knvb)}.zoneFrame_rS50 .am-nav .am-navHead,.zoneFrame_rS50 .am-topbar{align-items:center;background:var(--c-blue-cobalt);display:flex}.zoneFrame_rS50 .am-topbar{flex-shrink:0;gap:4px;height:24px;padding:6px 10px}.zoneFrame_rS50 .am-nav{background:var(--c-cobalt-50);display:flex;flex-direction:column;flex-shrink:0;gap:5px;min-width:100px;padding:8px;width:22%}.zoneFrame_rS50 .am-nav .am-navHead{border-radius:4px;gap:6px;margin-bottom:4px;padding:6px}.zoneFrame_rS50 .am-nav .am-item{align-items:center;border-radius:3px;display:flex;gap:6px;padding:4px 6px}.zoneFrame_rS50 .am-nav .am-footer{border-top:1px solid var(--c-cobalt-100);display:flex;flex-direction:column;gap:5px;margin-top:auto;padding-top:8px}.zoneFrame_rS50 .am-pageHeader{align-items:center;display:flex;gap:6px;margin-bottom:4px}.zoneFrame_rS50 .am-pageHeader .am-title-bar{background:var(--c-blue-cobalt);border-radius:3px;flex:1;height:14px;max-width:45%}.zoneFrame_rS50 .am-pageHeader .am-actions{display:flex;gap:4px}.zoneFrame_rS50 .am-pageHeader .am-actions .am-btn{background:var(--c-blue-cobalt);border-radius:3px;height:14px;width:38px}.zoneFrame_rS50 .am-kpi{align-items:center;background:var(--c-cobalt-50);border-radius:4px;display:flex;flex:1;gap:6px;padding:7px 8px}.zoneFrame_rS50 .am-kpi .am-ico{background:var(--c-mint-300);clip-path:var(--hex-pointy-top);flex-shrink:0;height:16px;width:14px}.zoneFrame_rS50 .am-kpi .am-num{background:var(--c-cobalt-900);border-radius:1px;height:7px;width:35%}.zoneFrame_rS50 .am-panel{background:#fff;border:1px solid var(--c-cobalt-100);border-radius:4px;display:flex;flex-direction:column;gap:6px;min-height:0;overflow:hidden;padding:8px}.zoneFrame_rS50 .am-panel .am-head .am-title{background:var(--c-cobalt-700);border-radius:1px;height:5px;width:35%}.zoneFrame_rS50 .am-panel .am-item{align-items:center;border-bottom:1px solid var(--c-cobalt-50);display:flex;gap:6px;padding:3px 0}.zoneFrame_rS50 .am-panel .am-item:last-child{border-bottom:0}.zoneFrame_rS50 .am-panel .am-item .am-lines{display:flex;flex:1;flex-direction:column;gap:2px}.zoneFrame_rS50 .am-panel .am-item .am-l1{background:var(--c-cobalt-700);border-radius:1px;height:4px;width:65%}.zoneFrame_rS50 .am-detail{background:#fff;border-left:1px solid var(--c-cobalt-100);display:flex;flex-direction:column;flex-shrink:0;min-width:130px;width:26%}.zoneFrame_rS50 .am-detail.am-rich .am-sb-head .am-ico{background:var(--c-cobalt-50);border-radius:4px;flex-shrink:0;height:18px;width:18px}.zoneFrame_rS50 .am-detail.am-rich .am-sb-head .am-meta{display:flex;flex:1;flex-direction:column;gap:3px}.zoneFrame_rS50 .am-detail.am-rich .am-sb-tabs{border-bottom:1px solid var(--c-cobalt-100);display:flex;gap:4px;padding:4px 10px 0}.zoneFrame_rS50 .am-detail.am-rich .am-sb-tab{align-items:center;border-bottom:2px solid #0000;display:flex;gap:4px;padding:4px 6px}.zoneFrame_rS50 .am-body>.am-col,.zoneFrame_rS50 .am-body>.am-detail,.zoneFrame_rS50 .am-body>.am-nav,.zoneFrame_rS50 .am-pageHeader,.zoneFrame_rS50 .am-topbar{transition:opacity .2s}.focusCol_Jnz3 .am-body>.am-detail,.focusCol_Jnz3 .am-body>.am-nav,.focusCol_Jnz3 .am-topbar,.focusDetail_dCRH .am-body>.am-col,.focusDetail_dCRH .am-body>.am-nav,.focusDetail_dCRH .am-topbar,.focusNav_KvXS .am-body>.am-col,.focusNav_KvXS .am-body>.am-detail,.focusNav_KvXS .am-topbar,.focusPageHeader_mSnT .am-body>.am-col>:not(.am-pageHeader),.focusPageHeader_mSnT .am-body>.am-detail,.focusPageHeader_mSnT .am-body>.am-nav,.focusPageHeader_mSnT .am-topbar,.focusTopbar_Rmbc .am-body{opacity:.25}.focusPageHeader_mSnT .am-pageHeader{border-radius:4px}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.docSidebarContainer_YfHR,.layout-stack_A6JV .itemBody_FWEJ,.navbarSearchContainer_Bca1:empty,.sidebarLogo_isFc,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.network_vpM7,.row_zvln{align-items:center;display:flex}.network_vpM7{--hex-cell-w:132px;--hex-cell-h:152px;--hex-row-gap:10px;--hex-row-overlap:calc(var(--hex-cell-h)/4 - var(--hex-row-gap)*0.866);--hex-row-offset:calc((var(--hex-cell-w) + var(--hex-row-gap))/2);justify-content:center;width:100%}.bg-transparent_MbPs{background:#0000;padding:0}.bg-inverse_FBeX,.bg-tinted_tgJg,.bg-white_j7fT{border-radius:var(--radius-xl);padding:var(--space-10) var(--space-6)}.bg-tinted_tgJg,.tone-cobalt-50_HxD3 .hexA_u6dX{background:var(--c-cobalt-50)}.bg-inverse_FBeX{background:var(--c-blue-cobalt)}.grid_QM8c{align-items:flex-start;display:flex;flex-direction:column;gap:0}.row_zvln{gap:var(--hex-row-gap);width:max-content}.row_zvln+.row_zvln{margin-top:calc(var(--hex-row-overlap)*-1)}.row_zvln.offset_rtCz{margin-left:var(--hex-row-offset)}.row_zvln.offset_rtCz+.row_zvln{margin-left:0}.cell_kEcq{color:inherit;display:block;filter:drop-shadow(0 1px 2px rgba(7,25,60,.06)) drop-shadow(0 2px 6px rgba(7,25,60,.04));transition:transform .16s}.cellInner_cv8P{align-items:center;background:#fff;clip-path:var(--hex-pointy-top);display:flex;height:var(--hex-cell-h);justify-content:center;width:var(--hex-cell-w)}.cell_kEcq.empty_lEkR .cellInner_cv8P{background:#fff;opacity:.55}.logo_CoRJ{color:var(--c-blue-cobalt);display:block;max-height:56%;max-width:56%}.cell_kEcq.center_v4KE .logo_CoRJ{color:#fff;max-height:64%;max-width:64%}.wordmark_JGPA{color:var(--c-cobalt-700);font-size:14px;font-weight:700;letter-spacing:.04em;padding:0 var(--space-3);word-break:break-word}.viewport_vJYA{--hex-visible-rows:3;height:calc(var(--hex-visible-rows)*(var(--hex-cell-h) - var(--hex-row-overlap)) + var(--hex-row-overlap));overflow:hidden}.viewportFade_FOg4{-webkit-mask-image:linear-gradient(180deg,#0000,#000 12%,#000 88%,#0000);mask-image:linear-gradient(180deg,#0000,#000 12%,#000 88%,#0000)}.track_D6Xh{align-items:flex-start;display:flex;flex-direction:column;margin:0 auto;width:max-content;will-change:transform}.categoryLinkLabel_W154,.linkLabel_WmDU{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.scrollDown_XkEf{animation:60s linear infinite d}.scrollUp_ji23{animation:60s linear infinite e}@keyframes d{0%{transform:translateY(-50%)}to{transform:translateY(0)}}@keyframes e{0%{transform:translateY(0)}to{transform:translateY(-50%)}}.viewport_vJYA:focus-within .track_D6Xh,.viewport_vJYA:hover .track_D6Xh{animation-play-state:paused}.iconExternalLink_nPIU{margin-left:.3rem}.linkLabel_WmDU{line-clamp:2;-webkit-line-clamp:2}.categoryLink_byQd{overflow:hidden}.menu__link--sublist-caret:after{margin-left:var(--ifm-menu-link-padding-vertical)}.categoryLinkLabel_W154{flex:1;line-clamp:2;-webkit-line-clamp:2}.docMainContainer_TBSr,.docRoot_UBD9{display:flex;width:100%}.docsWrapper_hBAB{display:flex;flex:1 0 auto}.root_HmxI,.shelf_XZ7y,.shelf_jCDe,.showcase_Ruji{font-family:var(--conduction-typography-font-family-body);margin:0 auto;max-width:1280px;padding:var(--space-12) var(--space-12)}.head_Ljb2,.head_Ui2y,.head_r_My,.head_wkOJ{margin:0 0 var(--space-8);max-width:70ch}.eyebrow_Ez48,.eyebrow_UAIF,.eyebrow_aGay,.eyebrow_fRrk{align-items:center;color:var(--c-orange-knvb);display:inline-flex;font-family:var(--conduction-typography-font-family-code);font-size:12px;gap:var(--space-2);letter-spacing:.1em;margin-bottom:var(--space-3);text-transform:uppercase}.eyebrowHex_BlCb,.eyebrowHex_MKXD,.eyebrow_UAIF .h_IMIt,.eyebrow_aGay .h_xjiq,.eyebrow_fRrk .h_oiNq{background:var(--c-orange-knvb);clip-path:var(--hex-pointy-top);height:12px;width:10px}.title_gCLi,.title_qU5e{color:var(--c-cobalt-900);font-size:40px;font-weight:700;letter-spacing:-.02em;line-height:1.1;margin:0 0 var(--space-3)}.lede_GmK5,.lede_KvTx,.lede_VXtA,.lede_rJwp{color:var(--c-cobalt-700);font-size:17px;line-height:1.5;margin:0}.body_XG0W{align-items:stretch;display:grid;gap:var(--space-8)}.itemBody_FWEJ,.itemHead_AI1e,.item_FO5l,.list_Zkkl{display:flex;gap:var(--space-3)}.layout-side_vnPB .body_XG0W{grid-template-columns:1fr 1.2fr}.layout-stack_A6JV .body_XG0W{gap:var(--space-6);grid-template-columns:1fr}.itemBody_FWEJ,.list_Zkkl{flex-direction:column}.layout-stack_A6JV .list_Zkkl{flex-direction:row;flex-wrap:wrap;gap:var(--space-2)}.item_FO5l{background:#fff;border:1px solid var(--c-cobalt-100);border-radius:var(--radius-lg);flex-direction:column;padding:var(--space-4) var(--space-5);transition:border-color .16s,box-shadow .16s,background .16s}.item_FO5l:hover{border-color:var(--c-cobalt-300)}.itemHead_AI1e{align-items:center;appearance:none;-webkit-appearance:none;background:#0000;border:0;color:inherit;cursor:pointer;font:inherit;justify-content:space-between;padding:0;text-align:left;width:100%}.cardEyebrow_Jb8V,.chevron_ZHn4,.trace__ixp{font-family:var(--conduction-typography-font-family-code)}.itemHead_AI1e:focus-visible{border-radius:var(--radius-sm);outline:2px solid var(--c-orange-knvb);outline-offset:2px}.titleGroup_AMOj{gap:var(--space-3);min-width:0}.itemIcon_E6Nt{background:var(--c-cobalt-50);clip-path:var(--hex-pointy-top);color:var(--c-cobalt-700);flex:0 0 auto;height:36px;justify-content:center;transition:background .16s,color .16s;width:32px}.cardCta_qv1e,.cta_qTzg{transition:background .16s;align-self:flex-start;-webkit-text-decoration:none;text-decoration:none;text-transform:uppercase}.itemIcon_E6Nt svg{fill:none;height:18px;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.6;width:18px}.itemIconImg_OfKn{max-height:60%;max-width:60%}.itemTitle_SEj5{color:var(--c-cobalt-900);font-size:18px;font-weight:600;letter-spacing:-.01em;margin:0}.chevron_ZHn4{color:var(--c-cobalt-400);font-size:22px;line-height:1;text-align:center;width:22px}.panelHexBg_PUpd,.size-md_bQjh .hexA_u6dX{width:130%;aspect-ratio:1/1.155}.itemOpen_h1X0{border-color:var(--c-blue-cobalt)}.cta_qTzg{align-items:center;background:var(--c-blue-cobalt);border-radius:var(--radius-md);color:#fff;display:inline-flex;font-size:13px;font-weight:600;letter-spacing:.04em;padding:9px 16px}.layout-stack_A6JV .item_FO5l{flex:1 1 180px;padding:var(--space-3) var(--space-4)}.layout-stack_A6JV .itemTitle_SEj5{font-size:15px}.panel_TkOF{align-items:center;background:var(--c-cobalt-50);border-radius:var(--radius-xl);display:flex;justify-content:center;min-height:360px;overflow:hidden;padding:var(--space-8)}.panelHexBg_PUpd{background:var(--c-cobalt-100);clip-path:var(--hex-pointy-top);position:absolute;z-index:0}.panelInner__xVU{align-items:center;display:flex;justify-content:center;position:relative;width:100%;z-index:1}.bg_SCHC{inset:0;overflow:hidden;position:absolute;z-index:0}.hexA_u6dX,.hexB_Q1K6{clip-path:var(--hex-pointy-top);display:block;position:absolute}.tone-mint-100_vyKB .hexA_u6dX,.tone-mint-100_vyKB .hexB_Q1K6{background:var(--c-mint-300)}.tone-workspace-100_E7bH .hexA_u6dX,.tone-workspace-100_E7bH .hexB_Q1K6{background:var(--c-workspace-300)}.size-md_bQjh .hexB_Q1K6{aspect-ratio:1/1.155;width:90%}.size-lg_gwhH .hexA_u6dX{aspect-ratio:1/1.155;width:170%}.size-lg_gwhH .hexB_Q1K6{aspect-ratio:1/1.155;width:120%}.size-sm_NiBo .hexA_u6dX{aspect-ratio:1/1.155;width:95%}.size-sm_NiBo .hexB_Q1K6{aspect-ratio:1/1.155;width:60%}.pos-top_GvdN .hexB_Q1K6{left:18%;opacity:.4;top:-8%;transform:translateX(-50%)}.pos-centre_ej6U .hexA_u6dX{left:50%;top:50%;transform:translate(-50%,-50%)}.pos-centre_ej6U .hexB_Q1K6{left:64%;opacity:.35;top:60%;transform:translate(-50%,-50%)}.pos-bottom-right_Ej4_ .hexA_u6dX{bottom:-30%;right:-20%}.pos-bottom-right_Ej4_ .hexB_Q1K6{bottom:-10%;opacity:.4;right:20%}.pos-left_ITTM .hexA_u6dX{left:-30%;top:50%;transform:translateY(-50%)}.pos-left_ITTM .hexB_Q1K6{left:-10%;opacity:.4;top:30%;transform:translateY(-50%)}.stack_ILku{display:flex;flex-direction:column;gap:0}.card_yzlA{background:#fff;border:1px solid var(--c-cobalt-100);border-radius:var(--radius-xl);display:grid;gap:var(--space-8);grid-template-columns:1.15fr 1fr;margin-bottom:var(--space-4);min-height:480px;overflow:hidden;position:sticky}.cardImage_G__D{min-height:380px;overflow:hidden;padding:0}.cardImageInner_u6lA,.cardImage_G__D{align-items:center;display:flex;justify-content:center;position:relative}.cardImageInner_u6lA{padding:var(--space-8) var(--space-6);width:100%;z-index:1}.tone-mint_V45J .cardImage_G__D{background:var(--c-mint-300)}.tone-lavender_xOJN .cardImage_G__D{background:var(--c-lavender-300)}.tone-lavender_xOJN .cardCta_qv1e,.tone-lavender_xOJN .cardEyebrow_Jb8V{color:var(--c-lavender-500)}.tone-forest_R681 .cardImage_G__D{background:var(--c-forest-300)}.tone-forest_R681 .cardCta_qv1e,.tone-forest_R681 .cardEyebrow_Jb8V{color:var(--c-forest-500)}.tone-terracotta_T3aH .cardImage_G__D{background:var(--c-terracotta-300)}.tone-terracotta_T3aH .cardCta_qv1e,.tone-terracotta_T3aH .cardEyebrow_Jb8V{color:var(--c-terracotta-500)}.tone-coral_A5aG .cardImage_G__D{background:var(--c-coral-300)}.tone-coral_A5aG .cardCta_qv1e,.tone-coral_A5aG .cardEyebrow_Jb8V{color:var(--c-coral-500)}.tone-workspace_HGXQ .cardImage_G__D{background:var(--c-workspace-300)}.card_djmx:hover .cta_z0np,.page_mwbl,.panel-cobalt-50_QC01,.scene_io3B,.tone-cobalt_Rv4q .cardImage_G__D{background:var(--c-cobalt-50)}.cardText_Txgv{display:flex;flex-direction:column;gap:var(--space-4);justify-content:center;padding:var(--space-10) var(--space-9)}.cardEyebrow_Jb8V{font-size:12px;font-weight:600;letter-spacing:.1em;text-transform:uppercase}.cardTitle_joQc{color:var(--c-cobalt-900);font-size:32px;font-weight:700;letter-spacing:-.02em;line-height:1.15;margin:0}.cardCta_qv1e,.cursorLine_tVIC{margin-top:var(--space-2)}.cardCta_qv1e{align-items:center;background:var(--c-blue-cobalt);border-radius:var(--radius-md);color:#fff!important;display:inline-flex;font-size:13px;font-weight:600;letter-spacing:.04em;padding:10px 18px}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}.trace__ixp{background:var(--c-cobalt-900);border-radius:var(--radius-lg);box-shadow:var(--shadow-3);color:#fff;font-size:14px;gap:0;line-height:1.6;padding:var(--space-6) var(--space-7) 0}.body__9Jz,.trace__ixp{display:flex;flex-direction:column}.body__9Jz{gap:var(--space-3);padding-bottom:var(--space-5)}.line_K352{align-items:flex-start;display:flex;font-feature-settings:"calt" 0;gap:var(--space-2)}.bullet_kEy2,.cursor_a1uP,.dots_rgiQ,.expandRail_ke0N{display:inline-block}.bullet_kEy2{flex-shrink:0;font-weight:700;line-height:inherit;text-align:center;width:12px}.bInfo_Lw8S{color:var(--c-workspace-300)}.bMint_vc0w{color:var(--c-mint-300)}.toolText_v_DS{color:var(--c-lavender-300)}.cursorLine_tVIC,.expandRail_ke0N,.prompt_gOOP{color:var(--c-cobalt-300)}.dots_rgiQ{animation:1.4s steps(4) infinite f;margin-left:2px;overflow:hidden;vertical-align:bottom;white-space:pre;width:1.2em}@keyframes f{0%{width:0}25%{width:.4em}50%{width:.8em}75%,to{width:1.2em}}.expandRail_ke0N{flex-shrink:0;text-align:center;width:12px}.continuation_vPCT{padding-left:30px}.prompt_gOOP{margin-right:6px}.lede_WRYq,.modeBar_HLXg{color:var(--c-cobalt-200)}.cursor_a1uP{animation:1.1s steps(2) infinite g;background:#fff;height:14px;vertical-align:-2px;width:8px}@keyframes g{0%,50%{opacity:1}51%,to{opacity:0}}.modeBar_HLXg{align-items:center;border-top:1px solid #ffffff14;display:flex;font-size:13px;gap:var(--space-2);padding:var(--space-3) 0}.nav_MuJ0{background:#fff;border-bottom:1px solid var(--c-cobalt-100);font-family:var(--conduction-typography-font-family-body);justify-content:space-between;padding:22px 56px;position:sticky;top:0;z-index:100}.left__6eY{gap:44px}.wordmark_mhs1{align-items:center;display:inline-flex;font-size:22px;font-weight:700;gap:10px;letter-spacing:-.02em}.cta_G5Px,.ghost_SGJf,.link_CwQh,.localeWrapper__Pip .dropdown{font-size:14px}.wordmark_mhs1,.wordmark_mhs1:hover{color:var(--c-blue-cobalt);-webkit-text-decoration:none;text-decoration:none}.body_f8Uy a,.body_rk5K a,.homeLink_IU8p:hover{-webkit-text-decoration:underline;text-decoration:underline}.wordmarkIcon_boru{display:block;flex-shrink:0;height:32px;width:32px}.wordmarkText_r1t1{display:inline-block;line-height:1}.wordmarkPrefix_iNit{color:var(--c-cobalt-400);font-weight:400}.ghost_SGJf,.iconLink_GxoH,.link_CwQh{color:var(--c-cobalt-700)}.links_cXJT{display:flex;gap:28px}.link_CwQh{font-weight:500;transition:color .16s}.linkActive_jOIb{font-weight:600}.ctas_jpo4{align-items:center;display:flex;gap:12px}.iconGlyph_nphr,.iconLink_GxoH{align-items:center;display:inline-flex}.ghost_SGJf{font-weight:500}.cta_G5Px{background:var(--c-blue-cobalt);border-radius:var(--radius-md);font-weight:500;padding:9px 16px;transition:background .16s}.localeWrapper__Pip .navbar__link{color:var(--c-cobalt-700);font-weight:500;padding:0 8px}.button_rkpu svg,.localeWrapper__Pip .navbar__link:hover{color:var(--c-orange-knvb)}.iconGlyph_nphr{justify-content:center;line-height:1}.iconLink_GxoH{border-radius:var(--radius-sm);font-size:18px;height:34px;justify-content:center;transition:color .16s,background .16s;width:34px}.iconLabelLink_Ea3j{align-items:center;display:inline-flex;font-size:14px;gap:8px}.iconLabelLink_Ea3j .iconGlyph_nphr{font-size:16px}.versionPill_sLGf{background:var(--c-cobalt-50);border-radius:var(--radius-pill);color:var(--c-cobalt-400);font-family:var(--conduction-typography-font-family-code);font-size:11px;letter-spacing:.04em;padding:4px 10px;white-space:nowrap}.title_aAeH,.title_c_bx{color:var(--c-cobalt-900);font-size:36px;font-weight:700;letter-spacing:-.02em;line-height:1.1;margin:0 0 var(--space-3)}.layout_YN8D{align-items:start;display:grid;gap:var(--space-8);grid-template-columns:minmax(0,1fr) 360px}.grid_z2Si{display:grid;gap:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr))}.cardHead_yLBE,.card_U9V7{gap:var(--space-3);display:flex}.card_U9V7{background:#fff;border:1px solid var(--c-cobalt-100);border-radius:var(--radius-lg);flex-direction:column;padding:var(--space-4) var(--space-5);transition:border-color .14s,box-shadow .14s,transform .14s}.card_U9V7:hover{border-color:var(--c-cobalt-200);box-shadow:var(--shadow-1);transform:translateY(-1px)}.cardHead_yLBE{align-items:flex-start}.cardIcon_J4lI{align-items:center;background:var(--c-blue-cobalt);clip-path:var(--hex-pointy-top);color:#fff;display:flex;flex-shrink:0;height:32px;justify-content:center;width:28px}.cardIcon_J4lI svg{fill:none;height:13px;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2;width:13px}.cardName_NGbc{color:var(--c-cobalt-900);font-size:16px;font-weight:600;letter-spacing:-.005em;line-height:1.3;margin:0}.cardId_Jzg7,.legend_go5q{font-family:var(--conduction-typography-font-family-code);font-size:11px}.cardId_Jzg7{align-self:flex-start;background:var(--c-cobalt-50);border-radius:var(--radius-sm);color:var(--c-cobalt-700);font-weight:500;line-height:1.4;padding:1px 6px;word-break:break-all}.statusHex_RulL{background:var(--c-mint-500);clip-path:var(--hex-pointy-top);flex-shrink:0;height:12px;margin-top:4px;width:10px}.traceCol_HvXj{display:flex;flex-direction:column;position:sticky;top:var(--space-6)}.card_wgDh,.item_phlc,.scene_io3B{position:relative}.legend_go5q{color:var(--c-cobalt-400);display:flex;gap:var(--space-6);letter-spacing:.06em;margin-top:var(--space-6);text-transform:uppercase}.legendItem_f3v8{align-items:center;display:inline-flex;gap:var(--space-2)}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.actions_x1H1,.button_rkpu,.metaBit_GCsC,.metaBit_jFbJ,.metaBits_JRi_ .metaBit_rz_g{white-space:nowrap}.errorBoundaryFallback_VBag{color:red;padding:.55rem}.shelf_q_c0{display:grid;font-family:var(--conduction-typography-font-family-body);gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));margin-top:var(--space-8)}.card_wgDh{align-items:flex-start;background:#fff;border:1px solid var(--c-cobalt-100);border-radius:var(--radius-lg);color:inherit;display:flex;gap:var(--space-4);padding:var(--space-4) var(--space-5);-webkit-text-decoration:none;text-decoration:none;transition:transform .16s,box-shadow .16s,border-color .16s}.card_wgDh.linked_JNYj:hover{border-color:var(--c-cobalt-200);box-shadow:var(--shadow-2)}.iconTile__pRB{background:var(--c-cobalt-700);clip-path:var(--hex-pointy-top);color:#fff;display:flex;flex-shrink:0;height:55px;width:48px}.iconTile__pRB,.icon_ZyIb{align-items:center;justify-content:center}.icon_ZyIb{display:inline-flex}.icon_ZyIb svg{fill:currentColor;height:22px;stroke:currentColor;stroke-width:0;width:22px}.body_pPPJ{display:flex;flex:1;flex-direction:column;gap:4px;min-width:0}.name_Czle{color:var(--c-cobalt-900);font-size:16px;font-weight:600;letter-spacing:-.005em;margin:0}.meta_aB8V{color:var(--c-cobalt-400);font-family:var(--conduction-typography-font-family-code);font-size:11px;letter-spacing:.06em;text-transform:uppercase}.desc_iwPX{color:var(--c-cobalt-700);font-size:14px;line-height:1.5;margin:4px 0 0}.arrow_MSpU{color:var(--c-cobalt-400);flex-shrink:0;font-size:14px;margin-left:auto;transition:color .16s,transform .16s}.card_wgDh.linked_JNYj:hover .arrow_MSpU{color:var(--c-orange-knvb);transform:translate(2px,-2px)}.page_mwbl{min-height:calc(100vh - 200px);padding:0 0 96px}.scene_io3B{aspect-ratio:800/360;overflow:hidden;width:100%}.gushGroup_XqhH{animation:2.4s ease-in-out infinite h;transform-origin:510px 190px}@keyframes h{0%,to{opacity:1;transform:scaleY(1) translateY(0)}50%{opacity:.92;transform:scaleY(1.06) translateY(1px)}}.waves_SXDf path{animation:7s ease-in-out infinite i;transform-origin:center}.waves_SXDf path:nth-child(2){animation-delay:-2s;animation-duration:9s}.waves_SXDf path:nth-child(3){animation-delay:-4s;animation-duration:11s}@keyframes i{0%,to{transform:translateX(0)}50%{transform:translateX(-6px)}}.d1_sQeR{animation:1.6s ease-out infinite j}.d2_BpfO{animation:1.6s ease-out .3s infinite j}.d3_VLXW{animation:1.6s ease-out .6s infinite j}.d4_rChk{animation:1.6s ease-out .9s infinite j}.d5_C2FU{animation:1.6s ease-out 1.2s infinite j}@keyframes j{0%{opacity:0;transform:translate(0)}20%{opacity:1}to{opacity:0;transform:translateY(14px)}}.tag_zSPY{animation:3.5s ease-in-out infinite k;transform-origin:420px 150px}@keyframes k{0%,to{transform:rotate(-3deg) translate(420px,150px)}50%{transform:rotate(3deg) translate(420px,150px)}}.svg_zm7R .tag_zSPY{transform:translate(420px,150px)}.copy_rJGn{font-family:var(--conduction-typography-font-family-body);margin:0 auto;max-width:640px;padding:48px 24px}.eyebrow_DmtM{color:var(--c-orange-knvb);font-family:var(--conduction-typography-font-family-code);font-size:12px;letter-spacing:.08em;margin:0 0 12px;text-transform:uppercase}.title_tmNc{color:var(--c-cobalt-900);font-size:32px;font-weight:700;letter-spacing:-.015em;line-height:1.15;margin:0 0 16px}.lede_fHWD{color:var(--c-cobalt-700);font-size:17px;line-height:1.55;margin:0 0 24px}.actions_hYZl{align-items:center;display:flex;flex-wrap:wrap;gap:24px;margin-bottom:32px}.tryButton_ak7v{background:var(--c-cobalt-900);border:none;border-radius:var(--radius-pill);color:#fff;cursor:pointer;font-family:var(--conduction-typography-font-family-body);font-size:15px;font-weight:600;padding:12px 24px;transition:background .16s}.detailsBody_tZna,.details_cCPi summary{font-family:var(--conduction-typography-font-family-code)}.homeLink_IU8p{color:var(--c-cobalt-700);font-size:14px;-webkit-text-decoration:none;text-decoration:none}.homeLink_IU8p:hover{color:var(--c-cobalt-900)}.button_rkpu,.card_fJ6r,.cta_z0np,.itemLink_HeDt{-webkit-text-decoration:none;text-decoration:none}.details_cCPi{border-top:1px solid var(--c-cobalt-100);padding-top:16px}.details_cCPi summary{color:var(--c-cobalt-400);cursor:pointer;font-size:12px;letter-spacing:.04em;text-transform:uppercase}.details_cCPi summary::-webkit-details-marker{display:none}.details_cCPi summary:before{content:"▸";display:inline-block;margin-right:8px;transition:transform .16s}.detailsBody_tZna{background:var(--c-cobalt-50);border-radius:var(--radius-md);color:var(--c-cobalt-700);font-size:12px;margin-top:12px;overflow-x:auto;padding:16px}.detailsBody_tZna pre{background:#0000;font-size:12px;margin:0;padding:0}.grid_kCXK{display:grid;gap:var(--space-5)}.card_mwLz{background:#fff;border:1px solid var(--c-cobalt-100);border-radius:var(--radius-lg);display:flex;flex-direction:column;overflow:hidden}.panel_AVv7{align-items:center;background:var(--c-cobalt-50);display:flex;justify-content:center;min-height:180px;padding:var(--space-5)}.panel_AVv7>*{max-width:280px;width:100%}.cardTitle_NSqq{color:var(--c-cobalt-900);font-size:18px;font-weight:600;letter-spacing:-.005em;margin:0;padding:var(--space-4) var(--space-5) 0}.cardDesc__ccc{color:var(--c-cobalt-700);font-size:14px;line-height:1.55;margin:0;padding:var(--space-2) var(--space-5) var(--space-5)}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus,.leftCol_KCjU,.leftCol_yA_S{display:flex;flex-direction:column;min-height:100%}.grid_JFHO{align-items:start;display:grid;font-family:var(--conduction-typography-font-family-body);gap:4px 32px;grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.group_Nfvo,.legend_X6Dh{font-family:var(--conduction-typography-font-family-code)}.group_Nfvo{border-bottom:1px solid var(--c-cobalt-100);color:var(--c-cobalt-400);font-size:11px;font-weight:500;grid-column:1/-1;letter-spacing:.1em;margin:24px 0 8px;padding-bottom:8px;text-transform:uppercase}.item_phlc{align-items:center;border-radius:var(--radius-sm);color:var(--c-cobalt-800);cursor:help;display:flex;font-size:14px;gap:12px;outline:0;padding:8px 0;transition:background .14s,padding .14s,margin .14s}.item_phlc:focus-visible,.item_phlc:hover{background:var(--c-cobalt-50);margin-left:-8px;margin-right:-8px;padding-left:8px;padding-right:8px}.itemLink_HeDt{color:inherit;cursor:pointer}.itemLink_HeDt:focus-visible,.itemLink_HeDt:hover{color:var(--c-cobalt-900);-webkit-text-decoration:none;text-decoration:none}.itemLink_HeDt:focus-visible .label_MAb0,.itemLink_HeDt:hover .label_MAb0{-webkit-text-decoration:underline;text-decoration:underline;text-decoration-color:var(--c-cobalt-400);text-underline-offset:3px}.h_tlk1{background:var(--c-mint-500);clip-path:var(--hex-pointy-top);flex-shrink:0;height:12px;width:10px}.label_MAb0{flex:1;line-height:1.3}.tip_ojjV{background:var(--c-cobalt-900);border-radius:var(--radius-md);bottom:calc(100% + 8px);box-shadow:var(--shadow-2);color:#fff;font-size:13px;font-weight:400;left:0;line-height:1.5;max-width:280px;padding:10px 14px;position:absolute;transform:translateY(4px);transition:opacity .12s,transform .12s;width:max-content;z-index:20}.avatar_bIEI,.avatar_rVPZ,.legend_X6Dh{font-size:11px;text-transform:uppercase}.tip_ojjV:after{border:6px solid #0000;border-top:6px solid var(--c-cobalt-900);content:"";left:16px;position:absolute;top:100%}.item_phlc:focus-visible .tip_ojjV,.item_phlc:hover .tip_ojjV{opacity:1;transform:translateY(0)}.legend_X6Dh{color:var(--c-cobalt-400);display:flex;gap:24px;letter-spacing:.06em;margin-bottom:24px}.legendItem_PTOk{align-items:center;display:inline-flex;gap:8px}.card_DbNc,.card_EP4w,.grid_Q1NP{gap:var(--space-6);display:grid}.card_DbNc,.card_EP4w{align-items:stretch;background:var(--c-cobalt-50);border-radius:var(--radius-lg);font-family:var(--conduction-typography-font-family-body);grid-template-columns:200px 1fr;padding:var(--space-5);transition:transform .16s,box-shadow .16s,background .16s}.card_DbNc:hover,.card_EP4w:hover{background:#fff;box-shadow:var(--shadow-2);transform:translateY(-2px)}.metaStack_T3Xf,.metaStack_zwep{align-items:start;display:grid;gap:10px;grid-template-columns:32px 1fr;margin-top:auto;padding-top:var(--space-4)}.avatar_bIEI,.avatar_rVPZ{align-items:center;background:var(--c-cobalt-100);clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);color:var(--c-cobalt-700);display:inline-flex;flex-shrink:0;font-family:var(--conduction-typography-font-family-code);font-weight:600;height:32px;justify-content:center;overflow:hidden;width:32px}.bullet_sO3U,.deco_eS8A,.hex_SFbx,.satellite_iJfR{clip-path:var(--hex-pointy-top)}.avatarInitials_V8Lf,.avatarInitials_W5CH{line-height:1}.metaLines_GTgx,.metaLines_izYA{display:flex;flex-direction:column;gap:2px;min-width:0}.metaAuthor_E_XO,.metaAuthor_YGzE{color:var(--c-cobalt-900);font-size:13px;font-weight:600;line-height:1.3;overflow-wrap:anywhere}.metaModule_ETFM,.metaModule_H0Qo,.metaSub_T5A_,.metaSub_XC2c,.metaType_HLnd,.metaType_gHXh{font-family:var(--conduction-typography-font-family-code);font-size:11px;line-height:1.3}.metaSub_T5A_,.metaSub_XC2c{color:var(--c-cobalt-700);letter-spacing:.04em;white-space:nowrap}.metaType_HLnd,.metaType_gHXh{color:var(--c-blue-cobalt);font-weight:600;letter-spacing:.08em;margin-top:2px;text-transform:uppercase}.metaModule_ETFM,.metaModule_H0Qo{color:var(--c-cobalt-400);letter-spacing:.04em;overflow-wrap:anywhere}.thumbPanel_NGEN{align-items:center;border-radius:var(--radius-md);display:flex;height:184px;justify-content:center;overflow:hidden;position:relative;width:100%}.body_Am9C,.body_O5Ih{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.title_KHMs,.title_NNSm{color:var(--c-cobalt-900);font-size:18px;font-weight:700;letter-spacing:-.01em;line-height:1.3;margin:0}.audienceLine_no2S,.meta_SxtU{font-family:var(--conduction-typography-font-family-code);letter-spacing:.04em}.meta_SxtU{align-items:center;color:var(--c-cobalt-400);display:flex;flex-wrap:wrap;font-size:12px;gap:6px;margin-top:2px;text-transform:uppercase}.audienceLine_no2S{color:var(--c-cobalt-700);font-size:11px;line-height:1.4}.tags_x7NJ{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.card_djmx{align-items:center;background:var(--c-cobalt-900);border-radius:var(--radius-xl);display:grid;font-family:var(--conduction-typography-font-family-body);gap:var(--space-12);grid-template-columns:1fr 1fr;overflow:hidden;padding:var(--space-12);position:relative}.eyebrow_xZA7,.metaBits_JRi_{align-items:center;text-transform:uppercase}.eyebrow_xZA7{color:var(--c-cobalt-300);display:inline-flex;font-family:var(--conduction-typography-font-family-code);font-size:12px;gap:8px;letter-spacing:.1em;margin-bottom:var(--space-4)}.title_Twr3{color:#fff;font-size:36px;font-weight:700;letter-spacing:-.02em;line-height:1.15;margin:0 0 var(--space-4)}.lede_WRYq{font-size:17px;line-height:1.55;margin:0 0 var(--space-6);max-width:50ch}.audienceLine_ydDx,.metaBits_JRi_{color:var(--c-cobalt-200);font-family:var(--conduction-typography-font-family-code);font-size:12px;letter-spacing:.04em;margin-bottom:var(--space-4)}.metaBits_JRi_{display:flex;flex-wrap:wrap;gap:6px}.audienceLine_ydDx{line-height:1.4;margin-top:calc(var(--space-3)*-1)}.meta_pfxF{margin-bottom:var(--space-5)}.cta_z0np{align-items:center;background:#fff;border-radius:var(--radius-pill);color:var(--c-cobalt-900);display:inline-flex;font-size:14px;font-weight:600;gap:8px;padding:12px 22px;transition:background .12s}.visual_GC4b{align-items:center;display:flex;justify-content:center;min-height:300px;position:relative}.satellite_iJfR{height:74px;position:absolute;width:64px}.s1_uIIL{left:calc(50% - 160px);top:8px}.s2_bnR5{bottom:12px;right:calc(50% - 168px)}.s3_r33j{right:calc(50% - 172px);top:40%}.row_GtjO{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.chip_HuUi{align-items:center;background:#fff;border:1px solid var(--c-cobalt-100);border-radius:var(--radius-pill);cursor:pointer;display:inline-flex;font-family:var(--conduction-typography-font-family-body);font-size:13px;font-weight:500;gap:6px;line-height:1.4;padding:6px 14px;transition:background .12s,border-color .12s,color .12s}.link_D8_x,.submit__ioG{transition:background .12s}.chip_HuUi:hover{background:var(--c-cobalt-50);border-color:var(--c-cobalt-200)}.chip_HuUi.active_o1JX:hover,.link_D8_x:hover,.submit__ioG:hover{background:var(--c-cobalt-700)}.chip_HuUi:focus-visible{outline:2px solid var(--c-blue-cobalt);outline-offset:2px}.chip_HuUi.active_o1JX:hover{border-color:var(--c-cobalt-700);color:#fff}.cta_Kfec,.inverse_K3wz .submit__ioG:hover{background:var(--c-cobalt-50)}.count_UlTF{color:var(--c-cobalt-400);font-family:var(--conduction-typography-font-family-code);font-size:11px;font-weight:500}.cta_Kfec{align-items:center;border-radius:var(--radius-xl);display:grid;font-family:var(--conduction-typography-font-family-body);gap:var(--space-12);grid-template-columns:1.1fr 1fr;padding:var(--space-12)}.title_dfrX{color:var(--c-cobalt-900);font-size:28px;font-weight:700;letter-spacing:-.02em;line-height:1.2;margin:0 0 var(--space-3)}.lede_mQGs{color:var(--c-cobalt-700);font-size:16px;line-height:1.55;margin:0;max-width:42ch}.input_jLrx,.submit__ioG{font-family:var(--conduction-typography-font-family-body);font-size:14px}.formRow_kyPu{display:flex;gap:8px;width:100%}.input_jLrx{background:#fff;border:1px solid var(--c-cobalt-100);border-radius:var(--radius-md);color:var(--c-cobalt-900);flex:1;min-width:0;padding:12px 16px}.input_jLrx::placeholder{color:var(--c-cobalt-400)}.input_jLrx:focus{border-color:var(--c-blue-cobalt);outline:0}.submit__ioG{background:var(--c-blue-cobalt);border:0;border-radius:var(--radius-md);color:#fff;cursor:pointer;flex-shrink:0;font-weight:600;padding:12px 22px}.fineprint_sohu{color:var(--c-cobalt-400);font-family:var(--conduction-typography-font-family-code);font-size:12px;letter-spacing:.04em;margin:var(--space-3) 0 0}.inverse_K3wz{background:var(--c-cobalt-900);color:#fff}.inverse_K3wz .input_jLrx{background:var(--c-cobalt-800);border-color:var(--c-cobalt-700);color:#fff}.inverse_K3wz .input_jLrx::placeholder{color:var(--c-cobalt-300)}.inverse_K3wz .input_jLrx:focus{border-color:#fff}.inverse_K3wz .submit__ioG{background:#fff;color:var(--c-cobalt-900)}.crumb_cjh6 .sep_Y8vQ,.inverse_K3wz .fineprint_sohu{color:var(--c-cobalt-300)}.section_wZ0r{display:flex;flex-direction:column;font-family:var(--conduction-typography-font-family-body);gap:var(--space-8)}.head_GclI{align-items:baseline;display:flex;flex-wrap:wrap;gap:var(--space-6);justify-content:space-between}.title_k2LD{color:var(--c-cobalt-900);font-size:36px;font-weight:700;letter-spacing:-.02em;line-height:1.1;margin:0}.eyebrow_wYCr,.link_D8_x{font-weight:600;text-transform:uppercase}.link_D8_x{align-items:center;background:var(--c-blue-cobalt);border-radius:var(--radius-pill);display:inline-flex;flex-shrink:0;font-family:var(--conduction-typography-font-family-code);font-size:12px;letter-spacing:.1em;padding:10px 22px}.hero_N04v,.root_A5ie{flex-direction:column;display:flex}.hero_N04v{font-family:var(--conduction-typography-font-family-body);gap:var(--space-6);padding:var(--space-12) 0 var(--space-8)}.crumb_cjh6,.duration_puxP{font-family:var(--conduction-typography-font-family-code);letter-spacing:.04em}.crumb_cjh6{color:var(--c-cobalt-400);display:flex;flex-wrap:wrap;font-size:12px;gap:6px}.list_JWNJ,.meta_Bh8I,.root_A5ie{gap:var(--space-4)}.summary_YfKg{color:var(--c-cobalt-700);font-size:18px;line-height:1.55;margin:0;max-width:60ch}.meta_Bh8I{align-items:center;display:flex;flex-wrap:wrap}.duration_puxP{color:var(--c-cobalt-400);font-size:12px}.cover_t_M8{align-items:center;aspect-ratio:16/9;background:var(--c-cobalt-900);border-radius:var(--radius-lg);display:flex;justify-content:center;margin-top:var(--space-4);overflow:hidden;position:relative;width:100%}.rowLink_rfne,.thumbPanel_AWmT{border-radius:var(--radius-md)}.watermark_UqPF{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MDAiIGhlaWdodD0iNDUwIiBhcmlhLWxhYmVsPSJIZXggc2NhdHRlciBvdmVybGF5IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBzbGljZSI+PHBhdGggZmlsbD0iIzE1MkQ1QyIgZD0ibTEyMCA0MCA0NSAyNnY1MmwtNDUgMjYtNDUtMjZWNjZ6Ii8+PHBhdGggZmlsbD0iIzEwMjI0NiIgZD0ibTI4MCA4MCA0NSAyNnY1MmwtNDUgMjYtNDUtMjZ2LTUyeiIvPjxwYXRoIGZpbGw9IiMxNTJENUMiIGQ9Im00NTAgMzAgNjAgMzR2NjhsLTYwIDM0LTYwLTM0VjY0eiIvPjxwYXRoIGZpbGw9IiMxMDIyNDYiIGQ9Im02MzAgOTAgNDUgMjZ2NTJsLTQ1IDI2LTQ1LTI2di01MnoiLz48cGF0aCBmaWxsPSIjMTUyRDVDIiBkPSJtNzYwIDQwIDQwIDIzdjQ2bC00MCAyMy00MC0yM1Y2M3oiLz48cGF0aCBmaWxsPSIjMTAyMjQ2IiBkPSJtNjAgMjAwIDMwIDE3djM2bC0zMCAxNy0zMC0xN3YtMzZ6Ii8+PHBhdGggZmlsbD0iIzE1MkQ1QyIgZD0ibTIwMCAyNjAgNDUgMjZ2NTJsLTQ1IDI2LTQ1LTI2di01MnoiLz48cGF0aCBmaWxsPSIjMTAyMjQ2IiBkPSJtMzcwIDMxMCA0MCAyM3Y0NmwtNDAgMjMtNDAtMjN2LTQ2eiIvPjxwYXRoIGZpbGw9IiMxNTJENUMiIGQ9Im01NDAgMjkwIDUwIDI4djU2bC01MCAyOC01MC0yOHYtNTZ6Ii8+PHBhdGggZmlsbD0iIzEwMjI0NiIgZD0ibTcwMCAyNjAgNDAgMjN2NDZsLTQwIDIzLTQwLTIzdi00NnoiLz48cGF0aCBmaWxsPSIjMTUyRDVDIiBkPSJtMTAwIDM2MCA0MCAyM3Y0NmwtNDAgMjMtNDAtMjN2LTQ2eiIvPjxwYXRoIGZpbGw9IiMxMDIyNDYiIGQ9Im0zODAgMTUwIDMwIDE3djM2bC0zMCAxNy0zMC0xN3YtMzZ6Ii8+PC9zdmc+);background-repeat:repeat;background-size:320px;inset:0;opacity:.5;position:absolute}.hex_SFbx,.rowLink_rfne:hover{background:var(--c-blue-cobalt);color:#fff}.root_A5ie{font-family:var(--conduction-typography-font-family-body)}.audienceLine_v3Ip,.eyebrow_JMdn,.eyebrow_wYCr,.metaRow_ixS3,.notFound_JQ6_ code{font-family:var(--conduction-typography-font-family-code)}.list_JWNJ{display:flex;flex-direction:column}.variant-rail_bVTU{max-width:320px;position:sticky;top:var(--space-8);width:100%}.variant-inline_N9cV .list_JWNJ{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.head_AUSd{gap:var(--space-3);margin-bottom:var(--space-4)}.hex_SFbx{flex-shrink:0;height:32px;justify-content:center;width:28px}.eyebrow_wYCr{color:var(--c-cobalt-400);font-size:10px;letter-spacing:.12em;margin:0 0 2px}.rowLink_rfne,.title_T279{color:var(--c-cobalt-900)}.title_T279{font-size:17px;font-weight:700;letter-spacing:-.01em;line-height:1.2;margin:0}.rows_uopa{display:flex;flex-direction:column;gap:2px;margin:0;padding:0}.rowLink_rfne{align-items:center;background:var(--c-cobalt-50);display:grid;gap:var(--space-3);grid-template-columns:24px 1fr auto;padding:var(--space-3);transition:background .16s,color .16s,transform .16s}.rowLink_rfne:hover{transform:translateX(2px)}.rowIcon_WV0y{align-items:center;color:var(--c-blue-cobalt);display:inline-flex;height:22px;justify-content:center;width:22px}.rowText_YUX5{display:flex;flex-direction:column;gap:1px;min-width:0}.rowLabel_udoF{font-size:14px;font-weight:600;line-height:1.3}.rowHint_kfTw{color:var(--c-cobalt-400);font-size:12px;line-height:1.3}.rowArrow_JTWO{color:var(--c-cobalt-400);flex-shrink:0;font-size:16px;font-weight:600}.thumbPanel_AWmT{align-items:center;background:var(--c-cobalt-900);color:#fff;display:flex;height:184px;justify-content:center;overflow:hidden;position:relative;width:100%}.audienceLine_v3Ip{color:var(--c-cobalt-700);font-size:11px;letter-spacing:.04em;line-height:1.4;margin-top:4px}.hero_OB7P{max-width:720px;padding:var(--space-7) 0 var(--space-5)}.eyebrow_JMdn{color:var(--c-cobalt-400);font-size:12px;letter-spacing:.08em;margin-bottom:var(--space-3);text-transform:uppercase}.title_vEKW{color:var(--c-cobalt-900);font-size:36px;font-weight:700;letter-spacing:-.015em;line-height:1.15;margin:0 0 var(--space-3)}.lede_URBl,.partsTitle_T5Th{margin:0 0 var(--space-4)}.lede_URBl{color:var(--c-cobalt-700);font-size:18px;line-height:1.55}.metaRow_ixS3{color:var(--c-cobalt-400);display:flex;flex-wrap:wrap;font-size:12px;gap:var(--space-4);letter-spacing:.04em;text-transform:uppercase}.card_hthX,.quote__rgF{font-family:var(--conduction-typography-font-family-body)}.intro_HWzu{color:var(--c-cobalt-700);font-size:16px;line-height:1.7;max-width:720px;padding:var(--space-4) 0 var(--space-5)}.partsTitle_T5Th,.title_L5Jn{color:var(--c-cobalt-900);font-size:22px;font-weight:700;letter-spacing:-.01em}.parts_LjB4{padding:var(--space-5) 0 var(--space-7)}.notFound_JQ6_{max-width:600px;padding:var(--space-7) 0}.notFound_JQ6_ h1{color:var(--c-cobalt-900);font-size:28px;margin-bottom:var(--space-3)}.notFound_JQ6_ p{color:var(--c-cobalt-700);line-height:1.6}.notFound_JQ6_ code{background:var(--c-cobalt-50);border-radius:4px;padding:2px 6px}.card_hthX{align-items:start;background:var(--c-cobalt-50);border:1px solid var(--c-cobalt-100);border-radius:var(--radius-lg);display:grid;grid-template-areas:"e" "f";grid-template-columns:1fr;margin:var(--space-8) 0;overflow:visible;padding:var(--space-6) var(--space-8) var(--space-10) var(--space-12);position:relative;row-gap:var(--space-3)}.hasActions_M26a{align-items:center;column-gap:var(--space-5);grid-template-areas:"e g" "f g";grid-template-columns:1fr auto}.badge__IZW{display:inline-flex;left:0;position:absolute;top:0;transform:translate(-50%,-50%);z-index:2}.actions_x1H1,.body_rmUs,.head_SuGj{position:relative;z-index:1}.head_SuGj{align-self:center;grid-area:e}.title_L5Jn{line-height:1.25;margin:0}.body_rmUs{color:var(--c-cobalt-700);font-size:16px;grid-area:f;line-height:1.6}.body_rmUs>ul{display:grid;gap:var(--space-3);margin:0;padding:0}.body_f8Uy code,.body_piwG code,.body_rk5K code{border-radius:4px;padding:1px 6px;background:var(--c-cobalt-100)}.actions_x1H1{align-items:center;display:inline-flex;grid-area:g}.decoFrame_l5OC{border-radius:inherit;inset:0;overflow:hidden;position:absolute;z-index:0}.deco_eS8A{background:var(--c-cobalt-100);position:absolute}.deco1_qLiN{height:254px;opacity:.7;right:-60px;top:-40px;width:220px}.deco2_IFvL{bottom:-30px;height:127px;right:80px;width:110px}.deco2_IFvL,.deco3_hfix{background:var(--c-cobalt-200);opacity:.5}.deco3_hfix{height:65px;right:220px;top:18px;width:56px}.quote__rgF{background:var(--c-cobalt-50);border-left:4px solid var(--c-orange-knvb);border-radius:0 var(--radius-md) var(--radius-md) 0;color:var(--c-blue-cobalt);font-size:22px;font-style:italic;font-weight:500;line-height:1.4;margin:var(--space-7) 0;padding:var(--space-5) var(--space-6);position:relative}.cite_BMq7,.eyebrow_EFxi{font-style:normal;font-weight:400;text-transform:uppercase;color:var(--c-cobalt-700);font-family:var(--conduction-typography-font-family-code)}.item_T6wn,.item_XUUM{line-height:1.55;font-size:16px}.quote__rgF p{margin:0}.cite_BMq7{display:block;font-size:11px;letter-spacing:.06em;margin-top:var(--space-4)}.hero_MdZl{font-size:28px;font-style:normal;padding:var(--space-7) var(--space-8)}.compact_M5nI,.item_ntin{padding:var(--space-4) var(--space-5)}.eyebrow_EFxi{align-items:center;display:inline-flex;font-size:11px;gap:8px;letter-spacing:.08em;margin-bottom:var(--space-4)}.compact_M5nI{font-size:16px}.item_XUUM{align-items:start;color:var(--c-cobalt-700);display:grid;gap:var(--space-3);grid-template-columns:22px 1fr}.check_Ab1X{color:var(--c-orange-knvb);flex-shrink:0;height:22px;margin-top:2px;width:22px}.body_f8Uy a,.body_rk5K a{color:var(--c-blue-cobalt);text-underline-offset:2px}.body_f8Uy code,.body_rk5K code{font-family:var(--conduction-typography-font-family-code);font-size:14px}.item_T6wn{align-items:start;color:var(--c-cobalt-700);display:grid;gap:var(--space-2);grid-template-columns:auto 1fr}.bullet_sO3U{background:var(--c-orange-knvb);flex-shrink:0;height:14px;margin-top:6px;width:14px}.section_YYzi,.section_nBI1{font-family:var(--conduction-typography-font-family-body);margin:var(--space-10) 0 var(--space-8)}.lede_JLmq,.lede_VyyP{color:var(--c-cobalt-700);font-size:17px;line-height:1.6;margin:0 0 var(--space-5)}.list_DQDT{display:grid;gap:var(--space-3)}.item_ntin{background:var(--c-cobalt-50);border-left:3px solid var(--c-orange-knvb);border-radius:var(--radius-md);display:grid;gap:var(--space-2)}.symptom_HVuK{align-items:center;display:flex;gap:var(--space-2)}.icon_D4wa{align-items:center;background:var(--c-orange-knvb);clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);color:#fff;display:inline-flex;flex-shrink:0;font-family:var(--conduction-typography-font-family-display);font-size:13px;font-weight:700;height:20px;justify-content:center;width:20px}.body_piwG code,.symptomText_QEXL{font-size:14px;color:var(--c-cobalt-900)}.button_rkpu,.symptomText_QEXL{font-family:var(--conduction-typography-font-family-code);font-weight:600}.symptomText_QEXL{background:#0000;padding:0;word-break:break-word}.body_piwG{color:var(--c-cobalt-700);font-size:16px;line-height:1.6}.body_piwG code{font-family:var(--conduction-typography-font-family-code)}.body_piwG p{margin:var(--space-2) 0 0}.grid_K0En{display:grid;gap:var(--space-4)}.card_fJ6r{background:#fff;border:1px solid var(--c-cobalt-100);border-radius:var(--radius-md);color:inherit;display:grid;gap:var(--space-2);padding:var(--space-5) var(--space-5) var(--space-4);transition:border-color .12s,transform .12s,box-shadow .12s}.button_rkpu,.cta_fxqO{display:inline-flex;font-size:12px;text-transform:uppercase}a.card_fJ6r:hover{border-color:var(--c-cobalt-300);box-shadow:0 6px 20px #0d244e14;transform:translateY(-1px)}.card_fJ6r .title_NJn1{color:var(--c-cobalt-900);font-size:16px;font-weight:700;line-height:1.3;margin:0}.card_fJ6r .body_y02c code{background:var(--c-cobalt-100);border-radius:4px;color:var(--c-cobalt-900);font-size:13px;padding:1px 5px}.cta_fxqO{align-items:center;color:var(--c-blue-cobalt);gap:6px;letter-spacing:.04em;margin-top:var(--space-1)}.button_rkpu{align-items:center;background:var(--c-blue-cobalt);border-radius:var(--radius-pill,999px);color:#fff;gap:8px;letter-spacing:.06em;padding:12px 22px;transition:background .12s,transform .12s,box-shadow .12s}.button_rkpu:hover{background:var(--c-cobalt-900);box-shadow:0 6px 16px #0d244e2e;color:#fff;transform:translateY(-1px)}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.buttonGroup_M5ko button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.anchorTargetStickyNavbar_Vzrq{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorTargetHideOnScrollNavbar_vjPI{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.hash-link:focus,:hover>.hash-link{opacity:1}.cardTitleIcon_GcdP{font-size:1.6rem;margin-right:.6rem}.cardTitleText_nuEl{font-size:1.2rem}.cardDescription_L2fP{font-size:.8rem}.cardContainer_KhuF{--ifm-link-color:var(--ifm-color-emphasis-800);--ifm-link-hover-color:var(--ifm-color-emphasis-700);--ifm-link-hover-decoration:none;border:1px solid var(--ifm-color-emphasis-200);box-shadow:0 1.5px 3px 0 #00000026;transition:all var(--ifm-transition-fast) ease;transition-property:border,box-shadow}.cardContainer_KhuF:hover{border-color:var(--ifm-color-primary);box-shadow:0 3px 6px 0 #0003}.docCardListItem_W1sv{margin-bottom:2rem}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:line-count;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(line-count);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_Vdqa{opacity:1!important}.copyButtonIcons_IEyt{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_TrPX,.copyButtonSuccessIcon_cVMy{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_cVMy{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_Vdqa .copyButtonIcon_TrPX{opacity:0;transform:scale(.33)}.copyButtonCopied_Vdqa .copyButtonSuccessIcon_cVMy{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_b1P5{height:1.2rem;width:1.2rem}.buttonGroup_M5ko{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup_M5ko button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup_M5ko button:focus-visible,.buttonGroup_M5ko button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup_M5ko button{opacity:.4}.codeBlockContent_QJqH{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_OeMC{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlockTitle_OeMC+.codeBlockContent_QJqH .codeBlock_a8dz{border-top-left-radius:0;border-top-right-radius:0}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.img_ev3q{height:auto}.admonition_xJq3{margin-bottom:1em}.admonitionHeading_Gvgb{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);text-transform:uppercase}.admonitionHeading_Gvgb:not(:last-child){margin-bottom:.3rem}.admonitionHeading_Gvgb code{text-transform:none}.admonitionIcon_Rf37{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_Rf37 svg{display:inline-block;fill:var(--ifm-alert-foreground-color);height:1.6em;width:1.6em}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.title_kItE{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-leading)*1.25)}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_TmdG{background-color:var(--docusaurus-collapse-button-bg)}.lastUpdated_JAkA{text-align:right}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_i1dp,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_TmdG:focus,.expandButton_TmdG:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);-webkit-text-decoration:none!important;text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_TmdG{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_i1dp{transform:rotate(180deg)}.docSidebarContainer_YfHR{border-right:1px solid var(--ifm-toc-border-color);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_DPk8{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_aRkj{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_TBSr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_lQrH{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_JWYK{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.navbarSearchContainer_Bca1{padding:0 var(--ifm-navbar-item-padding-horizontal)}.tocMobile_ITEo{display:none}.docItemCol_VOVn,.generatedIndexPage_vN6x{max-width:75%!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:1100px){.title_lLoT{font-size:56px}.inner_xwuB{grid-template-columns:repeat(min(var(--stats-count,4),4),minmax(0,1fr))}.grid_a_xY{gap:24px;grid-template-columns:repeat(4,1fr)}.title_IlJO{font-size:52px}.titleIcon_Opve{height:74px;width:64px}.titleIcon_Opve svg{height:30px;width:30px}.pipeline_f0kg,.zones_QERF{grid-template-columns:1fr}.steps_cAsq{align-items:stretch;flex-direction:column;gap:24px}.steps_cAsq:before{animation:.9s linear infinite c;background-image:repeating-linear-gradient(to bottom,var(--c-cobalt-300) 0 5px,#0000 5px 10px);background-repeat:repeat-y;background-size:100% 10px;bottom:0;height:auto;left:50%;right:auto;top:0;transform:translateX(-50%);width:2px}}@media (max-width:1024px){.layout_YN8D{grid-template-columns:1fr}.traceCol_HvXj{position:static}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.footer__link-separator,.navbar__item,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block;width:max-content}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.navbarSearchContainer_Bca1{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_F8PC{padding:0 .3rem}}@media (max-width:900px){.align-split_AvgR{gap:24px;grid-template-columns:1fr}.hero_bX8M{gap:32px;grid-template-columns:1fr;padding:0 24px}.copy_LoR6{padding-block:56px}.inner_xwuB{gap:24px;grid-template-columns:repeat(2,minmax(0,1fr));padding:32px 24px}.card_djmx,.card_yzlA,.cols-2_Dhdc,.cols-3_XNZ2,.grid_HUlG,.grid_arkO,.grid_i2eB,.grid_kCXK,.grid_lvb4,.head_ktSB,.layout-side_vnPB .body_XG0W,.layout_Ru7Q,.panel_RoZS,.row_k_eH,.row_msiJ,.row_qAIj,.withIllustration_EoC8 .headInner_fnOh{grid-template-columns:1fr}.panel_RoZS{gap:40px;padding:40px}.section_a4c7{padding:64px 24px 24px}.head_ktSB{gap:24px;margin-bottom:48px}.section_d5sB{padding:64px 24px}.layout_Ru7Q{gap:32px}.rail_Vhr9{max-width:100%}.illustration_tbFl{justify-content:flex-start}.grid_qZIP{grid-template-columns:repeat(2,1fr)}.card_yzlA{min-height:auto}.nav_MuJ0{flex-wrap:wrap;gap:16px;padding:16px 24px}.card_djmx,.cta_Kfec{padding:var(--space-8)}.left__6eY,.links_cXJT{gap:16px}.ctas_jpo4{gap:8px}.visual_GC4b{min-height:240px}.satellite_iJfR{height:56px;width:48px}.cta_Kfec{grid-template-columns:1fr}.variant-rail_bVTU{max-width:100%;position:static}}@media (max-width:800px){.grid_a_xY{gap:20px;grid-template-columns:repeat(3,1fr)}.cols-2_uBG1,.cols-3_ffYz,.cols-4_H2I6{grid-template-columns:1fr}}@media (max-width:768px){.faq__Etq{margin:64px auto;padding:0 var(--space-5)}.heading_l5bU{font-size:26px}.grid-2_VLbL,.grid-3_T2Iz,.grid-4_Jq_W{grid-template-columns:1fr}}@media (max-width:720px){.marquee_GzKb{--hex-w:88px;--hex-h:101.6px;--gap:6px}.deco2_IFvL,.deco3_hfix,.row2_zlGK,.row3_J8On{display:none}.network_vpM7{--hex-cell-w:96px;--hex-cell-h:110px;--hex-row-gap:6px}.grid_z2Si,.hasActions_M26a{grid-template-columns:1fr}.hasActions_M26a{grid-template-areas:"e" "f" "g"}.card_hthX{padding:var(--space-6) var(--space-5) var(--space-8) var(--space-10)}.deco1_qLiN{right:-100px;top:-80px}}@media (max-width:700px){.inner_wUIo{padding:0 16px}.sp-default_t7r_ .inner_wUIo{padding-block:56px}.sp-tight_ZJTO .inner_wUIo{padding-block:32px}.title_IVS9,.title_IhTs,.title__KEL{font-size:32px}.title_lLoT{font-size:44px}.lede_ns_m{font-size:17px}.section_H2vg,.section_myAj{padding:64px 16px}.banner_W9qP{padding:48px 24px}.title_Twr3,.title_k2LD,.title_sOKV{font-size:28px}.inner_GhLk{padding:24px 16px}.title_cX0o{font-size:24px}.title_IlJO{font-size:40px;gap:14px}.titleIcon_Opve{height:55px;width:48px}.titleIcon_Opve svg{height:22px;width:22px}.card_DbNc,.card_EP4w{grid-template-columns:1fr}.metaStack_T3Xf,.metaStack_zwep{margin-top:0;padding-top:var(--space-3)}}@media (max-width:640px){.copy_rJGn{padding:32px 24px 36px}}@media (max-width:600px){.term_JuqQ{bottom:12px;width:calc(100% - 24px)}.actions_dOhG{flex-direction:column}.btn_rhtj{justify-content:center}.grid_qZIP{grid-template-columns:1fr}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}}@media (max-width:500px){.inner_xwuB{grid-template-columns:1fr}.grid_a_xY{gap:16px;grid-template-columns:repeat(2,1fr)}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.hex_OeqG{opacity:var(--cbg-opa-max,.12)}.droplets_BhSQ circle,.gushGroup_XqhH,.hex_OeqG,.steps_cAsq:before,.tag_zSPY,.waves_SXDf path{animation:none}.scrollDown_XkEf,.scrollUp_ji23{animation:none;transform:translateY(-25%)}.droplets_BhSQ circle{opacity:.6}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.noPrint_WFHX,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file diff --git a/docs/build/assets/js/11b43341.62e03792.js b/docs/build/assets/js/11b43341.62e03792.js deleted file mode 100644 index ed834f0d6..000000000 --- a/docs/build/assets/js/11b43341.62e03792.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[2256],{7674(e){e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"link","href":"/docs/intro","label":"Doriath","docId":"intro","unlisted":false},{"type":"category","label":"Tutorials","collapsible":true,"collapsed":false,"items":[{"type":"category","label":"User guide","collapsible":true,"collapsed":false,"items":[{"type":"link","href":"/docs/tutorials/user/first-launch","label":"Open Doriath for the first time","docId":"tutorials/user/first-launch","unlisted":false}],"href":"/docs/category/user-guide"},{"type":"category","label":"Admin guide","collapsible":true,"collapsed":true,"items":[{"type":"link","href":"/docs/tutorials/admin/admin-settings","label":"Manage Doriath settings","docId":"tutorials/admin/admin-settings","unlisted":false}],"href":"/docs/category/admin-guide"}],"href":"/docs/category/tutorials"},{"type":"link","href":"/docs/ARCHITECTURE","label":"Doriath \u2014 Architecture & Data Model","docId":"ARCHITECTURE","unlisted":false},{"type":"link","href":"/docs/DESIGN-REFERENCES","label":"Doriath \u2014 Design References & Dashboard Wireframes","docId":"DESIGN-REFERENCES","unlisted":false},{"type":"link","href":"/docs/FEATURES","label":"Doriath \u2014 Feature Analysis & Product Strategy","docId":"FEATURES","unlisted":false}]},"docs":{"ARCHITECTURE":{"id":"ARCHITECTURE","title":"Doriath \u2014 Architecture & Data Model","description":"1. Overview","sidebar":"tutorialSidebar"},"DESIGN-REFERENCES":{"id":"DESIGN-REFERENCES","title":"Doriath \u2014 Design References & Dashboard Wireframes","description":"1. Design Inspiration Sources","sidebar":"tutorialSidebar"},"FEATURES":{"id":"FEATURES","title":"Doriath \u2014 Feature Analysis & Product Strategy","description":"Executive Summary","sidebar":"tutorialSidebar"},"intro":{"id":"intro","title":"Doriath","description":"An encrypted secrets manager for Nextcloud \u2014 password manager and key store for users and applications.","sidebar":"tutorialSidebar"},"tutorials/admin/admin-settings":{"id":"tutorials/admin/admin-settings","title":"Manage Doriath settings","description":"Configure encryption, group-level sharing policies, and the audit log from the Nextcloud admin settings panel.","sidebar":"tutorialSidebar"},"tutorials/user/first-launch":{"id":"tutorials/user/first-launch","title":"Open Doriath for the first time","description":"Open Doriath, create your first vault entry, and confirm the encryption back end is connected.","sidebar":"tutorialSidebar"}}}}')}}]); \ No newline at end of file diff --git a/docs/build/assets/js/1301.9989ee43.js b/docs/build/assets/js/1301.9989ee43.js deleted file mode 100644 index 01a9ebae1..000000000 --- a/docs/build/assets/js/1301.9989ee43.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[1301],{1301(n,e,r){r.d(e,{Zp:()=>Lr});var t=r(8058),o=r(8894),i=0;const u=function(n){var e=++i;return(0,o.A)(n)+e};var a=r(9142),c=r(3588);const f=function(n){return(null==n?0:n.length)?(0,c.A)(n,1):[]};var d=r(4722),s=Math.ceil,v=Math.max;const h=function(n,e,r,t){for(var o=-1,i=v(s((e-n)/(r||1)),0),u=Array(i);i--;)u[t?i:++o]=n,n+=r;return u};var l=r(6984),g=r(8446),A=r(5353),p=r(3149);const b=function(n,e,r){if(!(0,p.A)(r))return!1;var t=typeof e;return!!("number"==t?(0,g.A)(r)&&(0,A.A)(e,r.length):"string"==t&&e in r)&&(0,l.A)(r[e],n)};var w=/\s/;const y=function(n){for(var e=n.length;e--&&w.test(n.charAt(e)););return e};var m=/^\s+/;const j=function(n){return n?n.slice(0,y(n)+1).replace(m,""):n};var x=r(1882),O=/^[-+]0x[0-9a-f]+$/i,k=/^0b[01]+$/i,E=/^0o[0-7]+$/i,N=parseInt;const _=function(n){if("number"==typeof n)return n;if((0,x.A)(n))return NaN;if((0,p.A)(n)){var e="function"==typeof n.valueOf?n.valueOf():n;n=(0,p.A)(e)?e+"":e}if("string"!=typeof n)return 0===n?n:+n;n=j(n);var r=k.test(n);return r||E.test(n)?N(n.slice(2),r?2:8):O.test(n)?NaN:+n};var I=1/0;const P=function(n){return n?(n=_(n))===I||n===-1/0?17976931348623157e292*(n<0?-1:1):n==n?n:0:0===n?n:0};const T=function(n){return function(e,r,t){return t&&"number"!=typeof t&&b(e,r,t)&&(r=t=void 0),e=P(e),void 0===r?(r=e,e=0):r=P(r),t=void 0===t?e0;--a)if(t=e[a].dequeue()){o=o.concat(B(n,e,r,t,!0));break}}return o}(r.graph,r.buckets,r.zeroIdx);return f(d.A(o,function(e){return n.outEdges(e.v,e.w)}))}function B(n,e,r,o,i){var u=i?[]:void 0;return t.A(n.inEdges(o.v),function(t){var o=n.edge(t),a=n.node(t.v);i&&u.push({v:t.v,w:t.w}),a.out-=o,V(e,r,a)}),t.A(n.outEdges(o.v),function(t){var o=n.edge(t),i=t.w,u=n.node(i);u.in-=o,V(e,r,u)}),n.removeNode(o.v),u}function V(n,e,r){r.out?r.in?n[r.out-r.in+e].enqueue(r):n[n.length-1].enqueue(r):n[0].enqueue(r)}function G(n){var e="greedy"===n.graph().acyclicer?F(n,function(n){return function(e){return n.edge(e).weight}}(n)):function(n){var e=[],r={},o={};function i(u){Object.prototype.hasOwnProperty.call(o,u)||(o[u]=!0,r[u]=!0,t.A(n.outEdges(u),function(n){Object.prototype.hasOwnProperty.call(r,n.w)?e.push(n):i(n.w)}),delete r[u])}return t.A(n.nodes(),i),e}(n);t.A(e,function(e){var r=n.edge(e);n.removeEdge(e),r.forwardName=e.name,r.reversed=!0,n.setEdge(e.w,e.v,r,u("rev"))})}var U=r(1754),q=r(2528);const D=function(n,e,r){(void 0!==r&&!(0,l.A)(n[e],r)||void 0===r&&!(e in n))&&(0,q.A)(n,e,r)};var Y=r(4574),z=r(154),$=r(1801),J=r(9759),W=r(8598),Z=r(9893),H=r(2049),K=r(3533),Q=r(9912),X=r(9610),nn=r(8496),en=r(5647),rn=r(3098),tn=Function.prototype,on=Object.prototype,un=tn.toString,an=on.hasOwnProperty,cn=un.call(Object);const fn=function(n){if(!(0,rn.A)(n)||"[object Object]"!=(0,nn.A)(n))return!1;var e=(0,en.A)(n);if(null===e)return!0;var r=an.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&un.call(r)==cn};var dn=r(3858);const sn=function(n,e){if(("constructor"!==e||"function"!=typeof n[e])&&"__proto__"!=e)return n[e]};var vn=r(2031),hn=r(5615);const ln=function(n){return(0,vn.A)(n,(0,hn.A)(n))};const gn=function(n,e,r,t,o,i,u){var a=sn(n,r),c=sn(e,r),f=u.get(c);if(f)D(n,r,f);else{var d=i?i(a,c,r+"",n,e,u):void 0,s=void 0===d;if(s){var v=(0,H.A)(c),h=!v&&(0,Q.A)(c),l=!v&&!h&&(0,dn.A)(c);d=c,v||h||l?(0,H.A)(a)?d=a:(0,K.A)(a)?d=(0,J.A)(a):h?(s=!1,d=(0,z.A)(c,!0)):l?(s=!1,d=(0,$.A)(c,!0)):d=[]:fn(c)||(0,Z.A)(c)?(d=a,(0,Z.A)(a)?d=ln(a):(0,p.A)(a)&&!(0,X.A)(a)||(d=(0,W.A)(c))):s=!1}s&&(u.set(c,d),o(d,c,t,i,u),u.delete(c)),D(n,r,d)}};const An=function n(e,r,t,o,i){e!==r&&(0,Y.A)(r,function(u,a){if(i||(i=new U.A),(0,p.A)(u))gn(e,r,a,t,n,o,i);else{var c=o?o(sn(e,a),u,a+"",e,r,i):void 0;void 0===c&&(c=u),D(e,a,c)}},hn.A)};var pn=r(4326);const bn=function(n){return(0,pn.A)(function(e,r){var t=-1,o=r.length,i=o>1?r[o-1]:void 0,u=o>2?r[2]:void 0;for(i=n.length>3&&"function"==typeof i?(o--,i):void 0,u&&b(r[0],r[1],u)&&(i=o<3?void 0:i,o=1),e=Object(e);++t2?e[2]:void 0;for(o&&b(e[0],e[1],o)&&(t=1);++re};var Cn=r(9008);const Sn=function(n){return n&&n.length?Rn(n,Cn.A,Ln):void 0};const Fn=function(n){var e=null==n?0:n.length;return e?n[e-1]:void 0};var Bn=r(9841),Vn=r(9574);const Gn=function(n,e){var r={};return e=(0,Vn.A)(e,3),(0,Bn.A)(n,function(n,t,o){(0,q.A)(r,t,e(n,t,o))}),r};var Un=r(9592);const qn=function(n,e){return nMath.abs(u)*f?(a<0&&(f=-f),r=f*u/a,t=f):(u<0&&(c=-c),r=c,t=c*a/u),{x:o+r,y:i+t}}function Xn(n){var e=d.A(T(ee(n)+1),function(){return[]});return t.A(n.nodes(),function(r){var t=n.node(r),o=t.rank;Un.A(o)||(e[o][t.order]=r)}),e}function ne(n,e,r,t){var o={width:0,height:0};return arguments.length>=4&&(o.rank=r,o.order=t),Hn(n,"border",o,e)}function ee(n){return Sn(d.A(n.nodes(),function(e){var r=n.node(e).rank;if(!Un.A(r))return r}))}function re(n,e){var r=Zn();try{return e()}finally{console.log(n+" time: "+(Zn()-r)+"ms")}}function te(n,e){return e()}function oe(n,e,r,t,o,i){var u={width:0,height:0,rank:i,borderType:e},a=o[e][i-1],c=Hn(n,"border",u,r);o[e][i]=c,n.setParent(c,t),a&&n.setEdge(a,c,{weight:1})}function ie(n){var e=n.graph().rankdir.toLowerCase();"bt"!==e&&"rl"!==e||function(n){t.A(n.nodes(),function(e){ce(n.node(e))}),t.A(n.edges(),function(e){var r=n.edge(e);t.A(r.points,ce),Object.prototype.hasOwnProperty.call(r,"y")&&ce(r)})}(n),"lr"!==e&&"rl"!==e||(!function(n){t.A(n.nodes(),function(e){fe(n.node(e))}),t.A(n.edges(),function(e){var r=n.edge(e);t.A(r.points,fe),Object.prototype.hasOwnProperty.call(r,"x")&&fe(r)})}(n),ue(n))}function ue(n){t.A(n.nodes(),function(e){ae(n.node(e))}),t.A(n.edges(),function(e){ae(n.edge(e))})}function ae(n){var e=n.width;n.width=n.height,n.height=e}function ce(n){n.y=-n.y}function fe(n){var e=n.x;n.x=n.y,n.y=e}function de(n){n.graph().dummyChains=[],t.A(n.edges(),function(e){!function(n,e){var r=e.v,t=n.node(r).rank,o=e.w,i=n.node(o).rank,u=e.name,a=n.edge(e),c=a.labelRank;if(i===t+1)return;n.removeEdge(e);var f,d,s=void 0;for(d=0,++t;t-1?o[i?e[u]:u]:void 0}};var ye=r(5707);const me=function(n){var e=P(n),r=e%1;return e==e?r?e-r:e:0};var je=Math.max;const xe=we(function(n,e,r){var t=null==n?0:n.length;if(!t)return-1;var o=null==r?0:me(r);return o<0&&(o=je(t+o,0)),(0,ye.A)(n,(0,Vn.A)(e,3),o)});var Oe=r(1662);a.A(1);a.A(1);r(9471),r(9779);(0,r(805).A)("length");RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");var ke="\\ud800-\\udfff",Ee="["+ke+"]",Ne="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",_e="\\ud83c[\\udffb-\\udfff]",Ie="[^"+ke+"]",Pe="(?:\\ud83c[\\udde6-\\uddff]){2}",Te="[\\ud800-\\udbff][\\udc00-\\udfff]",Me="(?:"+Ne+"|"+_e+")"+"?",Re="[\\ufe0e\\ufe0f]?",Le=Re+Me+("(?:\\u200d(?:"+[Ie,Pe,Te].join("|")+")"+Re+Me+")*"),Ce="(?:"+[Ie+Ne+"?",Ne,Pe,Te,Ee].join("|")+")";RegExp(_e+"(?="+_e+")|"+Ce+Le,"g");function Se(){}function Fe(n,e,r){H.A(e)||(e=[e]);var o=(n.isDirected()?n.successors:n.neighbors).bind(n),i=[],u={};return t.A(e,function(e){if(!n.hasNode(e))throw new Error("Graph does not have node: "+e);Be(n,e,"post"===r,u,o,i)}),i}function Be(n,e,r,o,i,u){Object.prototype.hasOwnProperty.call(o,e)||(o[e]=!0,r||u.push(e),t.A(i(e),function(e){Be(n,e,r,o,i,u)}),r&&u.push(e))}Se.prototype=new Error;r(3126);function Ve(n){n=function(n){var e=(new M.T).setGraph(n.graph());return t.A(n.nodes(),function(r){e.setNode(r,n.node(r))}),t.A(n.edges(),function(r){var t=e.edge(r.v,r.w)||{weight:0,minlen:1},o=n.edge(r);e.setEdge(r.v,r.w,{weight:t.weight+o.weight,minlen:Math.max(t.minlen,o.minlen)})}),e}(n),ve(n);var e,r=le(n);for(qe(r),Ge(r,n);e=Ye(r);)$e(r,n,e,ze(r,n,e))}function Ge(n,e){var r=function(n,e){return Fe(n,e,"post")}(n,n.nodes());r=r.slice(0,r.length-1),t.A(r,function(r){!function(n,e,r){var t=n.node(r),o=t.parent;n.edge(r,o).cutvalue=Ue(n,e,r)}(n,e,r)})}function Ue(n,e,r){var o=n.node(r).parent,i=!0,u=e.edge(r,o),a=0;return u||(i=!1,u=e.edge(o,r)),a=u.weight,t.A(e.nodeEdges(r),function(t){var u,c,f=t.v===r,d=f?t.w:t.v;if(d!==o){var s=f===i,v=e.edge(t).weight;if(a+=s?v:-v,u=r,c=d,n.hasEdge(u,c)){var h=n.edge(r,d).cutvalue;a+=s?-h:h}}}),a}function qe(n,e){arguments.length<2&&(e=n.nodes()[0]),De(n,{},1,e)}function De(n,e,r,o,i){var u=r,a=n.node(o);return e[o]=!0,t.A(n.neighbors(o),function(t){Object.prototype.hasOwnProperty.call(e,t)||(r=De(n,e,r,t,o))}),a.low=u,a.lim=r++,i?a.parent=i:delete a.parent,r}function Ye(n){return xe(n.edges(),function(e){return n.edge(e).cutvalue<0})}function ze(n,e,r){var t=r.v,o=r.w;e.hasEdge(t,o)||(t=r.w,o=r.v);var i=n.node(t),u=n.node(o),a=i,c=!1;i.lim>u.lim&&(a=u,c=!0);var f=Oe.A(e.edges(),function(e){return c===Je(n,n.node(e.v),a)&&c!==Je(n,n.node(e.w),a)});return se(f,function(n){return he(e,n)})}function $e(n,e,r,o){var i=r.v,u=r.w;n.removeEdge(i,u),n.setEdge(o.v,o.w,{}),qe(n),Ge(n,e),function(n,e){var r=xe(n.nodes(),function(n){return!e.node(n).parent}),o=function(n,e){return Fe(n,e,"pre")}(n,r);o=o.slice(1),t.A(o,function(r){var t=n.node(r).parent,o=e.edge(r,t),i=!1;o||(o=e.edge(t,r),i=!0),e.node(r).rank=e.node(t).rank+(i?o.minlen:-o.minlen)})}(n,e)}function Je(n,e,r){return r.low<=e.lim&&e.lim<=r.lim}function We(n){switch(n.graph().ranker){case"network-simplex":default:He(n);break;case"tight-tree":!function(n){ve(n),le(n)}(n);break;case"longest-path":Ze(n)}}Ve.initLowLimValues=qe,Ve.initCutValues=Ge,Ve.calcCutValue=Ue,Ve.leaveEdge=Ye,Ve.enterEdge=ze,Ve.exchangeEdges=$e;var Ze=ve;function He(n){Ve(n)}var Ke=r(8207),Qe=r(9463);function Xe(n){var e=Hn(n,"root",{},"_root"),r=function(n){var e={};function r(o,i){var u=n.children(o);u&&u.length&&t.A(u,function(n){r(n,i+1)}),e[o]=i}return t.A(n.children(),function(n){r(n,1)}),e}(n),o=Sn(Ke.A(r))-1,i=2*o+1;n.graph().nestingRoot=e,t.A(n.edges(),function(e){n.edge(e).minlen*=i});var u=function(n){return Qe.A(n.edges(),function(e,r){return e+n.edge(r).weight},0)}(n)+1;t.A(n.children(),function(t){nr(n,e,i,u,o,r,t)}),n.graph().nodeRankFactor=i}function nr(n,e,r,o,i,u,a){var c=n.children(a);if(c.length){var f=ne(n,"_bt"),d=ne(n,"_bb"),s=n.node(a);n.setParent(f,a),s.borderTop=f,n.setParent(d,a),s.borderBottom=d,t.A(c,function(t){nr(n,e,r,o,i,u,t);var c=n.node(t),s=c.borderTop?c.borderTop:t,v=c.borderBottom?c.borderBottom:t,h=c.borderTop?o:2*o,l=s!==v?1:i-u[a]+1;n.setEdge(f,s,{weight:h,minlen:l,nestingEdge:!0}),n.setEdge(v,d,{weight:h,minlen:l,nestingEdge:!0})}),n.parent(a)||n.setEdge(e,f,{weight:0,minlen:i+u[a]})}else a!==e&&n.setEdge(e,a,{weight:0,minlen:r})}var er=r(1641);const rr=function(n){return(0,er.A)(n,5)};function tr(n,e,r){var o=function(n){var e;for(;n.hasNode(e=u("_root")););return e}(n),i=new M.T({compound:!0}).setGraph({root:o}).setDefaultNodeLabel(function(e){return n.node(e)});return t.A(n.nodes(),function(u){var a=n.node(u),c=n.parent(u);(a.rank===e||a.minRank<=e&&e<=a.maxRank)&&(i.setNode(u),i.setParent(u,c||o),t.A(n[r](u),function(e){var r=e.v===u?e.w:e.v,t=i.edge(r,u),o=Un.A(t)?0:t.weight;i.setEdge(r,u,{weight:n.edge(e).weight+o})}),Object.prototype.hasOwnProperty.call(a,"minRank")&&i.setNode(u,{borderLeft:a.borderLeft[e],borderRight:a.borderRight[e]}))}),i}const or=function(n,e,r){for(var t=-1,o=n.length,i=e.length,u={};++te||i&&u&&c&&!a&&!f||t&&u&&c||!r&&c||!o)return 1;if(!t&&!i&&!f&&n=a?c:c*("desc"==r[t]?-1:1)}return n.index-e.index};const vr=function(n,e,r){e=e.length?(0,ur.A)(e,function(n){return(0,H.A)(n)?function(e){return(0,wn.A)(e,1===n.length?n[0]:n)}:n}):[Cn.A];var t=-1;e=(0,ur.A)(e,(0,fr.A)(Vn.A));var o=(0,ar.A)(n,function(n,r,o){return{criteria:(0,ur.A)(e,function(e){return e(n)}),index:++t,value:n}});return cr(o,function(n,e){return sr(n,e,r)})};const hr=(0,pn.A)(function(n,e){if(null==n)return[];var r=e.length;return r>1&&b(n,e[0],e[1])?e=[]:r>2&&b(e[0],e[1],e[2])&&(e=[e[0]]),vr(n,(0,c.A)(e,1),[])});function lr(n,e){for(var r=0,t=1;t0;)e%2&&(r+=c[e+1]),c[e=e-1>>1]+=n.weight;s+=n.weight*r})),s}function Ar(n,e){var r={};return t.A(n,function(n,e){var t=r[n.v]={indegree:0,in:[],out:[],vs:[n.v],i:e};Un.A(n.barycenter)||(t.barycenter=n.barycenter,t.weight=n.weight)}),t.A(e.edges(),function(n){var e=r[n.v],t=r[n.w];Un.A(e)||Un.A(t)||(t.indegree++,e.out.push(r[n.w]))}),function(n){var e=[];function r(n){return function(e){e.merged||(Un.A(e.barycenter)||Un.A(n.barycenter)||e.barycenter>=n.barycenter)&&function(n,e){var r=0,t=0;n.weight&&(r+=n.barycenter*n.weight,t+=n.weight);e.weight&&(r+=e.barycenter*e.weight,t+=e.weight);n.vs=e.vs.concat(n.vs),n.barycenter=r/t,n.weight=t,n.i=Math.min(e.i,n.i),e.merged=!0}(n,e)}}function o(e){return function(r){r.in.push(e),0===--r.indegree&&n.push(r)}}for(;n.length;){var i=n.pop();e.push(i),t.A(i.in.reverse(),r(i)),t.A(i.out,o(i))}return d.A(Oe.A(e,function(n){return!n.merged}),function(n){return In(n,["vs","i","barycenter","weight"])})}(Oe.A(r,function(n){return!n.indegree}))}function pr(n,e){var r,o=function(n,e){var r={lhs:[],rhs:[]};return t.A(n,function(n){e(n)?r.lhs.push(n):r.rhs.push(n)}),r}(n,function(n){return Object.prototype.hasOwnProperty.call(n,"barycenter")}),i=o.lhs,u=hr(o.rhs,function(n){return-n.i}),a=[],c=0,d=0,s=0;i.sort((r=!!e,function(n,e){return n.barycentere.barycenter?1:r?e.i-n.i:n.i-e.i})),s=br(a,u,s),t.A(i,function(n){s+=n.vs.length,a.push(n.vs),c+=n.barycenter*n.weight,d+=n.weight,s=br(a,u,s)});var v={vs:f(a)};return d&&(v.barycenter=c/d,v.weight=d),v}function br(n,e,r){for(var t;e.length&&(t=Fn(e)).i<=r;)e.pop(),n.push(t.vs),r++;return r}function wr(n,e,r,o){var i=n.children(e),u=n.node(e),a=u?u.borderLeft:void 0,c=u?u.borderRight:void 0,s={};a&&(i=Oe.A(i,function(n){return n!==a&&n!==c}));var v=function(n,e){return d.A(e,function(e){var r=n.inEdges(e);if(r.length){var t=Qe.A(r,function(e,r){var t=n.edge(r),o=n.node(r.v);return{sum:e.sum+t.weight*o.order,weight:e.weight+t.weight}},{sum:0,weight:0});return{v:e,barycenter:t.sum/t.weight,weight:t.weight}}return{v:e}})}(n,i);t.A(v,function(e){if(n.children(e.v).length){var t=wr(n,e.v,r,o);s[e.v]=t,Object.prototype.hasOwnProperty.call(t,"barycenter")&&(i=e,u=t,Un.A(i.barycenter)?(i.barycenter=u.barycenter,i.weight=u.weight):(i.barycenter=(i.barycenter*i.weight+u.barycenter*u.weight)/(i.weight+u.weight),i.weight+=u.weight))}var i,u});var h=Ar(v,r);!function(n,e){t.A(n,function(n){n.vs=f(n.vs.map(function(n){return e[n]?e[n].vs:n}))})}(h,s);var l=pr(h,o);if(a&&(l.vs=f([a,l.vs,c]),n.predecessors(a).length)){var g=n.node(n.predecessors(a)[0]),A=n.node(n.predecessors(c)[0]);Object.prototype.hasOwnProperty.call(l,"barycenter")||(l.barycenter=0,l.weight=0),l.barycenter=(l.barycenter*l.weight+g.order+A.order)/(l.weight+2),l.weight+=2}return l}function yr(n){var e=ee(n),r=mr(n,T(1,e+1),"inEdges"),o=mr(n,T(e-1,-1,-1),"outEdges"),i=function(n){var e={},r=Oe.A(n.nodes(),function(e){return!n.children(e).length}),o=Sn(d.A(r,function(e){return n.node(e).rank})),i=d.A(T(o+1),function(){return[]}),u=hr(r,function(e){return n.node(e).rank});return t.A(u,function r(o){if(!Jn(e,o)){e[o]=!0;var u=n.node(o);i[u.rank].push(o),t.A(n.successors(o),r)}}),i}(n);xr(n,i);for(var u,a=Number.POSITIVE_INFINITY,c=0,f=0;f<4;++c,++f){jr(c%2?r:o,c%4>=2);var s=lr(n,i=Xn(n));sc||f>e[o].lim));i=o,o=t;for(;(o=n.parent(o))!==i;)a.push(o);return{path:u.concat(a.reverse()),lca:i}}(n,e,o.v,o.w),u=i.path,a=i.lca,c=0,f=u[c],d=!0;r!==o.w;){if(t=n.node(r),d){for(;(f=u[c])!==a&&n.node(f).maxRankr){var t=e;e=r,r=t}Object.prototype.hasOwnProperty.call(n,e)||Object.defineProperty(n,e,{enumerable:!0,configurable:!0,value:{},writable:!0});var o=n[e];Object.defineProperty(o,r,{enumerable:!0,configurable:!0,value:!0,writable:!0})}function Pr(n,e,r){if(e>r){var t=e;e=r,r=t}return!!n[e]&&Object.prototype.hasOwnProperty.call(n[e],r)}function Tr(n,e,r,o,i){var u={},a=function(n,e,r,o){var i=new M.T,u=n.graph(),a=function(n,e,r){return function(t,o,i){var u,a=t.node(o),c=t.node(i),f=0;if(f+=a.width/2,Object.prototype.hasOwnProperty.call(a,"labelpos"))switch(a.labelpos.toLowerCase()){case"l":u=-a.width/2;break;case"r":u=a.width/2}if(u&&(f+=r?u:-u),u=0,f+=(a.dummy?e:n)/2,f+=(c.dummy?e:n)/2,f+=c.width/2,Object.prototype.hasOwnProperty.call(c,"labelpos"))switch(c.labelpos.toLowerCase()){case"l":u=c.width/2;break;case"r":u=-c.width/2}return u&&(f+=r?u:-u),u=0,f}}(u.nodesep,u.edgesep,o);return t.A(e,function(e){var o;t.A(e,function(e){var t=r[e];if(i.setNode(t),o){var u=r[o],c=i.edge(u,t);i.setEdge(u,t,Math.max(a(n,e,o),c||0))}o=e})}),i}(n,e,r,i),c=i?"borderLeft":"borderRight";function f(n,e){for(var r=a.nodes(),t=r.pop(),o={};t;)o[t]?n(t):(o[t]=!0,r.push(t),r=r.concat(e(t))),t=r.pop()}return f(function(n){u[n]=a.inEdges(n).reduce(function(n,e){return Math.max(n,u[e.v]+a.edge(e))},0)},a.predecessors.bind(a)),f(function(e){var r=a.outEdges(e).reduce(function(n,e){return Math.min(n,u[e.w]-a.edge(e))},Number.POSITIVE_INFINITY),t=n.node(e);r!==Number.POSITIVE_INFINITY&&t.borderType!==c&&(u[e]=Math.max(u[e],r))},a.successors.bind(a)),t.A(o,function(n){u[n]=u[r[n]]}),u}function Mr(n){var e,r=Xn(n),o=bn(_r(n,r),function(n,e){var r={};function o(e,o,i,u,a){var c;t.A(T(o,i),function(o){c=e[o],n.node(c).dummy&&t.A(n.predecessors(c),function(e){var t=n.node(e);t.dummy&&(t.ordera)&&Ir(r,e,c)})})}return Qe.A(e,function(e,r){var i,u=-1,a=0;return t.A(r,function(t,c){if("border"===n.node(t).dummy){var f=n.predecessors(t);f.length&&(i=n.node(f[0]).order,o(r,a,c,u,i),a=c,u=i)}o(r,a,r.length,i,e.length)}),r}),r}(n,r)),i={};t.A(["u","d"],function(u){e="u"===u?r:Ke.A(r).reverse(),t.A(["l","r"],function(r){"r"===r&&(e=d.A(e,function(n){return Ke.A(n).reverse()}));var a=("u"===u?n.predecessors:n.successors).bind(n),c=function(n,e,r,o){var i={},u={},a={};return t.A(e,function(n){t.A(n,function(n,e){i[n]=n,u[n]=n,a[n]=e})}),t.A(e,function(n){var e=-1;t.A(n,function(n){var t=o(n);if(t.length){t=hr(t,function(n){return a[n]});for(var c=(t.length-1)/2,f=Math.floor(c),d=Math.ceil(c);f<=d;++f){var s=t[f];u[n]===n&&e{var e=r(" buildLayoutGraph",()=>function(n){var e=new M.T({multigraph:!0,compound:!0}),r=Yr(n.graph());return e.setGraph(bn({},Sr,Dr(r,Cr),In(r,Fr))),t.A(n.nodes(),function(r){var t=Yr(n.node(r));e.setNode(r,Mn(Dr(t,Br),Vr)),e.setParent(r,n.parent(r))}),t.A(n.edges(),function(r){var t=Yr(n.edge(r));e.setEdge(r,bn({},Ur,Dr(t,Gr),In(t,qr)))}),e}(n));r(" runLayout",()=>function(n,e){e(" makeSpaceForEdgeLabels",()=>function(n){var e=n.graph();e.ranksep/=2,t.A(n.edges(),function(r){var t=n.edge(r);t.minlen*=2,"c"!==t.labelpos.toLowerCase()&&("TB"===e.rankdir||"BT"===e.rankdir?t.width+=t.labeloffset:t.height+=t.labeloffset)})}(n)),e(" removeSelfEdges",()=>function(n){t.A(n.edges(),function(e){if(e.v===e.w){var r=n.node(e.v);r.selfEdges||(r.selfEdges=[]),r.selfEdges.push({e:e,label:n.edge(e)}),n.removeEdge(e)}})}(n)),e(" acyclic",()=>G(n)),e(" nestingGraph.run",()=>Xe(n)),e(" rank",()=>We(Kn(n))),e(" injectEdgeLabelProxies",()=>function(n){t.A(n.edges(),function(e){var r=n.edge(e);if(r.width&&r.height){var t=n.node(e.v),o={rank:(n.node(e.w).rank-t.rank)/2+t.rank,e:e};Hn(n,"edge-proxy",o,"_ep")}})}(n)),e(" removeEmptyRanks",()=>function(n){var e=Dn(d.A(n.nodes(),function(e){return n.node(e).rank})),r=[];t.A(n.nodes(),function(t){var o=n.node(t).rank-e;r[o]||(r[o]=[]),r[o].push(t)});var o=0,i=n.graph().nodeRankFactor;t.A(r,function(e,r){Un.A(e)&&r%i!==0?--o:o&&t.A(e,function(e){n.node(e).rank+=o})})}(n)),e(" nestingGraph.cleanup",()=>function(n){var e=n.graph();n.removeNode(e.nestingRoot),delete e.nestingRoot,t.A(n.edges(),function(e){n.edge(e).nestingEdge&&n.removeEdge(e)})}(n)),e(" normalizeRanks",()=>function(n){var e=Dn(d.A(n.nodes(),function(e){return n.node(e).rank}));t.A(n.nodes(),function(r){var t=n.node(r);Jn(t,"rank")&&(t.rank-=e)})}(n)),e(" assignRankMinMax",()=>function(n){var e=0;t.A(n.nodes(),function(r){var t=n.node(r);t.borderTop&&(t.minRank=n.node(t.borderTop).rank,t.maxRank=n.node(t.borderBottom).rank,e=Sn(e,t.maxRank))}),n.graph().maxRank=e}(n)),e(" removeEdgeLabelProxies",()=>function(n){t.A(n.nodes(),function(e){var r=n.node(e);"edge-proxy"===r.dummy&&(n.edge(r.e).labelRank=r.rank,n.removeNode(e))})}(n)),e(" normalize.run",()=>de(n)),e(" parentDummyChains",()=>Or(n)),e(" addBorderSegments",()=>function(n){t.A(n.children(),function e(r){var o=n.children(r),i=n.node(r);if(o.length&&t.A(o,e),Object.prototype.hasOwnProperty.call(i,"minRank")){i.borderLeft=[],i.borderRight=[];for(var u=i.minRank,a=i.maxRank+1;uyr(n)),e(" insertSelfEdges",()=>function(n){var e=Xn(n);t.A(e,function(e){var r=0;t.A(e,function(e,o){var i=n.node(e);i.order=o+r,t.A(i.selfEdges,function(e){Hn(n,"selfedge",{width:e.label.width,height:e.label.height,rank:i.rank,order:o+ ++r,e:e.e,label:e.label},"_se")}),delete i.selfEdges})})}(n)),e(" adjustCoordinateSystem",()=>function(n){var e=n.graph().rankdir.toLowerCase();"lr"!==e&&"rl"!==e||ue(n)}(n)),e(" position",()=>Rr(n)),e(" positionSelfEdges",()=>function(n){t.A(n.nodes(),function(e){var r=n.node(e);if("selfedge"===r.dummy){var t=n.node(r.e.v),o=t.x+t.width/2,i=t.y,u=r.x-o,a=t.height/2;n.setEdge(r.e,r.label),n.removeNode(e),r.label.points=[{x:o+2*u/3,y:i-a},{x:o+5*u/6,y:i-a},{x:o+u,y:i},{x:o+5*u/6,y:i+a},{x:o+2*u/3,y:i+a}],r.label.x=r.x,r.label.y=r.y}})}(n)),e(" removeBorderNodes",()=>function(n){t.A(n.nodes(),function(e){if(n.children(e).length){var r=n.node(e),t=n.node(r.borderTop),o=n.node(r.borderBottom),i=n.node(Fn(r.borderLeft)),u=n.node(Fn(r.borderRight));r.width=Math.abs(u.x-i.x),r.height=Math.abs(o.y-t.y),r.x=i.x+r.width/2,r.y=t.y+r.height/2}}),t.A(n.nodes(),function(e){"border"===n.node(e).dummy&&n.removeNode(e)})}(n)),e(" normalize.undo",()=>function(n){t.A(n.graph().dummyChains,function(e){var r,t=n.node(e),o=t.edgeLabel;for(n.setEdge(t.edgeObj,o);t.dummy;)r=n.successors(e)[0],n.removeNode(e),o.points.push({x:t.x,y:t.y}),"edge-label"===t.dummy&&(o.x=t.x,o.y=t.y,o.width=t.width,o.height=t.height),e=r,t=n.node(e)})}(n)),e(" fixupEdgeLabelCoords",()=>function(n){t.A(n.edges(),function(e){var r=n.edge(e);if(Object.prototype.hasOwnProperty.call(r,"x"))switch("l"!==r.labelpos&&"r"!==r.labelpos||(r.width-=r.labeloffset),r.labelpos){case"l":r.x-=r.width/2+r.labeloffset;break;case"r":r.x+=r.width/2+r.labeloffset}})}(n)),e(" undoCoordinateSystem",()=>ie(n)),e(" translateGraph",()=>function(n){var e=Number.POSITIVE_INFINITY,r=0,o=Number.POSITIVE_INFINITY,i=0,u=n.graph(),a=u.marginx||0,c=u.marginy||0;function f(n){var t=n.x,u=n.y,a=n.width,c=n.height;e=Math.min(e,t-a/2),r=Math.max(r,t+a/2),o=Math.min(o,u-c/2),i=Math.max(i,u+c/2)}t.A(n.nodes(),function(e){f(n.node(e))}),t.A(n.edges(),function(e){var r=n.edge(e);Object.prototype.hasOwnProperty.call(r,"x")&&f(r)}),e-=a,o-=c,t.A(n.nodes(),function(r){var t=n.node(r);t.x-=e,t.y-=o}),t.A(n.edges(),function(r){var i=n.edge(r);t.A(i.points,function(n){n.x-=e,n.y-=o}),Object.prototype.hasOwnProperty.call(i,"x")&&(i.x-=e),Object.prototype.hasOwnProperty.call(i,"y")&&(i.y-=o)}),u.width=r-e+a,u.height=i-o+c}(n)),e(" assignNodeIntersects",()=>function(n){t.A(n.edges(),function(e){var r,t,o=n.edge(e),i=n.node(e.v),u=n.node(e.w);o.points?(r=o.points[0],t=o.points[o.points.length-1]):(o.points=[],r=u,t=i),o.points.unshift(Qn(i,r)),o.points.push(Qn(u,t))})}(n)),e(" reversePoints",()=>function(n){t.A(n.edges(),function(e){var r=n.edge(e);r.reversed&&r.points.reverse()})}(n)),e(" acyclic.undo",()=>function(n){t.A(n.edges(),function(e){var r=n.edge(e);if(r.reversed){n.removeEdge(e);var t=r.forwardName;delete r.reversed,delete r.forwardName,n.setEdge(e.w,e.v,r,t)}})}(n))}(e,r)),r(" updateInputGraph",()=>function(n,e){t.A(n.nodes(),function(r){var t=n.node(r),o=e.node(r);t&&(t.x=o.x,t.y=o.y,e.children(r).length&&(t.width=o.width,t.height=o.height))}),t.A(n.edges(),function(r){var t=n.edge(r),o=e.edge(r);t.points=o.points,Object.prototype.hasOwnProperty.call(o,"x")&&(t.x=o.x,t.y=o.y)}),n.graph().width=e.graph().width,n.graph().height=e.graph().height}(n,e))})}var Cr=["nodesep","edgesep","ranksep","marginx","marginy"],Sr={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},Fr=["acyclicer","ranker","rankdir","align"],Br=["width","height"],Vr={width:0,height:0},Gr=["minlen","weight","width","height","labeloffset"],Ur={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},qr=["labelpos"];function Dr(n,e){return Gn(In(n,e),Number)}function Yr(n){var e={};return t.A(n,function(n,r){e[r.toLowerCase()]=n}),e}},2851(n,e,r){r.d(e,{A:()=>u});var t=r(2528),o=r(6984),i=Object.prototype.hasOwnProperty;const u=function(n,e,r){var u=n[e];i.call(n,e)&&(0,o.A)(u,r)&&(void 0!==r||e in n)||(0,t.A)(n,e,r)}},2528(n,e,r){r.d(e,{A:()=>o});var t=r(4171);const o=function(n,e,r){"__proto__"==e&&t.A?(0,t.A)(n,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):n[e]=r}},1641(n,e,r){r.d(e,{A:()=>X});var t=r(1754),o=r(2641),i=r(2851),u=r(2031),a=r(7422);const c=function(n,e){return n&&(0,u.A)(e,(0,a.A)(e),n)};var f=r(5615);const d=function(n,e){return n&&(0,u.A)(e,(0,f.A)(e),n)};var s=r(154),v=r(9759),h=r(4792);const l=function(n,e){return(0,u.A)(n,(0,h.A)(n),e)};var g=r(6912),A=r(5647),p=r(3153);const b=Object.getOwnPropertySymbols?function(n){for(var e=[];n;)(0,g.A)(e,(0,h.A)(n)),n=(0,A.A)(n);return e}:p.A;const w=function(n,e){return(0,u.A)(n,b(n),e)};var y=r(9042),m=r(3831);const j=function(n){return(0,m.A)(n,f.A,b)};var x=r(9779),O=Object.prototype.hasOwnProperty;const k=function(n){var e=n.length,r=new n.constructor(e);return e&&"string"==typeof n[0]&&O.call(n,"index")&&(r.index=n.index,r.input=n.input),r};var E=r(565);const N=function(n,e){var r=e?(0,E.A)(n.buffer):n.buffer;return new n.constructor(r,n.byteOffset,n.byteLength)};var _=/\w*$/;const I=function(n){var e=new n.constructor(n.source,_.exec(n));return e.lastIndex=n.lastIndex,e};var P=r(241),T=P.A?P.A.prototype:void 0,M=T?T.valueOf:void 0;const R=function(n){return M?Object(M.call(n)):{}};var L=r(1801);const C=function(n,e,r){var t=n.constructor;switch(e){case"[object ArrayBuffer]":return(0,E.A)(n);case"[object Boolean]":case"[object Date]":return new t(+n);case"[object DataView]":return N(n,r);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return(0,L.A)(n,r);case"[object Map]":case"[object Set]":return new t;case"[object Number]":case"[object String]":return new t(n);case"[object RegExp]":return I(n);case"[object Symbol]":return R(n)}};var S=r(8598),F=r(2049),B=r(9912),V=r(3098);const G=function(n){return(0,V.A)(n)&&"[object Map]"==(0,x.A)(n)};var U=r(2789),q=r(4841),D=q.A&&q.A.isMap;const Y=D?(0,U.A)(D):G;var z=r(3149);const $=function(n){return(0,V.A)(n)&&"[object Set]"==(0,x.A)(n)};var J=q.A&&q.A.isSet;const W=J?(0,U.A)(J):$;var Z="[object Arguments]",H="[object Function]",K="[object Object]",Q={};Q[Z]=Q["[object Array]"]=Q["[object ArrayBuffer]"]=Q["[object DataView]"]=Q["[object Boolean]"]=Q["[object Date]"]=Q["[object Float32Array]"]=Q["[object Float64Array]"]=Q["[object Int8Array]"]=Q["[object Int16Array]"]=Q["[object Int32Array]"]=Q["[object Map]"]=Q["[object Number]"]=Q[K]=Q["[object RegExp]"]=Q["[object Set]"]=Q["[object String]"]=Q["[object Symbol]"]=Q["[object Uint8Array]"]=Q["[object Uint8ClampedArray]"]=Q["[object Uint16Array]"]=Q["[object Uint32Array]"]=!0,Q["[object Error]"]=Q[H]=Q["[object WeakMap]"]=!1;const X=function n(e,r,u,h,g,A){var p,b=1&r,m=2&r,O=4&r;if(u&&(p=g?u(e,h,g,A):u(e)),void 0!==p)return p;if(!(0,z.A)(e))return e;var E=(0,F.A)(e);if(E){if(p=k(e),!b)return(0,v.A)(e,p)}else{var N=(0,x.A)(e),_=N==H||"[object GeneratorFunction]"==N;if((0,B.A)(e))return(0,s.A)(e,b);if(N==K||N==Z||_&&!g){if(p=m||_?{}:(0,S.A)(e),!b)return m?w(e,d(p,e)):l(e,c(p,e))}else{if(!Q[N])return g?e:{};p=C(e,N,b)}}A||(A=new t.A);var I=A.get(e);if(I)return I;A.set(e,p),W(e)?e.forEach(function(t){p.add(n(t,r,u,t,e,A))}):Y(e)&&e.forEach(function(t,o){p.set(o,n(t,r,u,o,e,A))});var P=O?m?j:y.A:m?f.A:a.A,T=E?void 0:P(e);return(0,o.A)(T||e,function(t,o){T&&(t=e[o=t]),(0,i.A)(p,o,n(t,r,u,o,e,A))}),p}},2568(n,e,r){r.d(e,{A:()=>i});var t=r(6240),o=r(8446);const i=function(n,e){var r=-1,i=(0,o.A)(n)?Array(n.length):[];return(0,t.A)(n,function(n,t,o){i[++r]=e(n,t,o)}),i}},565(n,e,r){r.d(e,{A:()=>o});var t=r(3988);const o=function(n){var e=new n.constructor(n.byteLength);return new t.A(e).set(new t.A(n)),e}},154(n,e,r){r.d(e,{A:()=>c});var t=r(1917),o="object"==typeof exports&&exports&&!exports.nodeType&&exports,i=o&&"object"==typeof module&&module&&!module.nodeType&&module,u=i&&i.exports===o?t.A.Buffer:void 0,a=u?u.allocUnsafe:void 0;const c=function(n,e){if(e)return n.slice();var r=n.length,t=a?a(r):new n.constructor(r);return n.copy(t),t}},1801(n,e,r){r.d(e,{A:()=>o});var t=r(565);const o=function(n,e){var r=e?(0,t.A)(n.buffer):n.buffer;return new n.constructor(r,n.byteOffset,n.length)}},9759(n,e,r){r.d(e,{A:()=>t});const t=function(n,e){var r=-1,t=n.length;for(e||(e=Array(t));++ri});var t=r(2851),o=r(2528);const i=function(n,e,r,i){var u=!r;r||(r={});for(var a=-1,c=e.length;++at});const t=(0,r(367).A)(Object.getPrototypeOf,Object)},8598(n,e,r){r.d(e,{A:()=>c});var t=r(3149),o=Object.create;const i=function(){function n(){}return function(e){if(!(0,t.A)(e))return{};if(o)return o(e);n.prototype=e;var r=new n;return n.prototype=void 0,r}}();var u=r(5647),a=r(7271);const c=function(n){return"function"!=typeof n.constructor||(0,a.A)(n)?{}:i((0,u.A)(n))}},5615(n,e,r){r.d(e,{A:()=>d});var t=r(3607),o=r(3149),i=r(7271);const u=function(n){var e=[];if(null!=n)for(var r in Object(n))e.push(r);return e};var a=Object.prototype.hasOwnProperty;const c=function(n){if(!(0,o.A)(n))return u(n);var e=(0,i.A)(n),r=[];for(var t in n)("constructor"!=t||!e&&a.call(n,t))&&r.push(t);return r};var f=r(8446);const d=function(n){return(0,f.A)(n)?(0,t.A)(n,!0):c(n)}},4722(n,e,r){r.d(e,{A:()=>a});var t=r(5572),o=r(9574),i=r(2568),u=r(2049);const a=function(n,e){return((0,u.A)(n)?t.A:i.A)(n,(0,o.A)(e,3))}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/14eb3368.5faa8c56.js b/docs/build/assets/js/14eb3368.5faa8c56.js deleted file mode 100644 index 5f100e67d..000000000 --- a/docs/build/assets/js/14eb3368.5faa8c56.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[6969],{594(e,n,t){t.d(n,{A:()=>j});t(6540);var s=t(8215),i=t(7559),r=t(4718),a=t(9169),c=t(8774),o=t(1312),l=t(6025),d=t(4848);function u(e){return(0,d.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,d.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"})})}const m="breadcrumbHomeIcon_YNFT";function h(){const e=(0,l.Ay)("/");return(0,d.jsx)("li",{className:"breadcrumbs__item",children:(0,d.jsx)(c.A,{"aria-label":(0,o.T)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e,children:(0,d.jsx)(u,{className:m})})})}var x=t(5260),b=t(4586);function g(e){const n=function({breadcrumbs:e}){const{siteConfig:n}=(0,b.A)();return{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:e.filter(e=>e.href).map((e,t)=>({"@type":"ListItem",position:t+1,name:e.label,item:`${n.url}${e.href}`}))}}({breadcrumbs:e.breadcrumbs});return(0,d.jsx)(x.A,{children:(0,d.jsx)("script",{type:"application/ld+json",children:JSON.stringify(n)})})}const p="breadcrumbsContainer_Z_bl";function v({children:e,href:n,isLast:t}){const s="breadcrumbs__link";return t?(0,d.jsx)("span",{className:s,children:e}):n?(0,d.jsx)(c.A,{className:s,href:n,children:(0,d.jsx)("span",{children:e})}):(0,d.jsx)("span",{className:s,children:e})}function f({children:e,active:n}){return(0,d.jsx)("li",{className:(0,s.A)("breadcrumbs__item",{"breadcrumbs__item--active":n}),children:e})}function j(){const e=(0,r.OF)(),n=(0,a.Dt)();return e?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(g,{breadcrumbs:e}),(0,d.jsx)("nav",{className:(0,s.A)(i.G.docs.docBreadcrumbs,p),"aria-label":(0,o.T)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"}),children:(0,d.jsxs)("ul",{className:"breadcrumbs",children:[n&&(0,d.jsx)(h,{}),e.map((n,t)=>{const s=t===e.length-1,i="category"===n.type&&n.linkUnlisted?void 0:n.href;return(0,d.jsx)(f,{active:s,children:(0,d.jsx)(v,{href:i,isLast:s,children:n.label})},t)})]})})]}):null}},8059(e,n,t){t.r(n),t.d(n,{default:()=>W});var s=t(6540),i=t(5500),r=t(4718),a=t(6025),c=t(8215);const o=new Intl.Segmenter(void 0,{granularity:"grapheme"});var l=t(1312),d=t(4586);const u=["zero","one","two","few","many","other"];function m(e){return u.filter(n=>e.includes(n))}const h={locale:"en",pluralForms:m(["one","other"]),select:e=>1===e?"one":"other"};function x(){const{i18n:{currentLocale:e}}=(0,d.A)();return(0,s.useMemo)(()=>{try{return function(e){const n=new Intl.PluralRules(e);return{locale:e,pluralForms:m(n.resolvedOptions().pluralCategories),select:e=>n.select(e)}}(e)}catch(n){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${n.message}\n`),h}},[e])}function b(){const e=x();return{selectMessage:(n,t)=>function(e,n,t){const s=e.split("|");if(1===s.length)return s[0];s.length>t.pluralForms.length&&console.error(`For locale=${t.locale}, a maximum of ${t.pluralForms.length} plural forms are expected (${t.pluralForms.join(",")}), but the message contains ${s.length}: ${e}`);const i=t.select(n),r=t.pluralForms.indexOf(i);return s[Math.min(r,s.length-1)]}(t,n,e)}}var g=t(6654),p=t(8774),v=t(7559),f=t(1107);const j="cardTitleIcon_GcdP";var N=t(4848);function A({icon:e}){return(0,N.jsx)("span",{className:(0,c.A)(v.G.docs.docCard.icon,j),children:e})}const T="cardTitleText_nuEl";function _({title:e}){return(0,N.jsx)("span",{className:(0,c.A)("text--truncate",v.G.docs.docCard.title,T),children:e})}const L="cardTitle_mcqP";function k({item:e,title:n,icon:t}){return(0,N.jsxs)(f.A,{as:"h2",className:(0,c.A)(v.G.docs.docCard.heading,L),title:n,children:[t&&(0,N.jsx)(A,{item:e,icon:t}),(0,N.jsx)(_,{item:e,title:n})]})}const y="cardDescription_L2fP";function w({description:e}){return(0,N.jsx)("p",{className:(0,c.A)("text--truncate",v.G.docs.docCard.description,y),title:e,children:e})}const I="cardContainer_KhuF";function C({className:e,href:n,children:t}){return(0,N.jsx)(p.A,{href:n,className:(0,c.A)("card padding--lg",v.G.docs.docCard.container,I,e),children:t})}function F({item:e,className:n,href:t,icon:s,title:i,description:r}){return(0,N.jsxs)(C,{href:t,className:n,children:[(0,N.jsx)(k,{item:e,icon:s,title:i}),r&&(0,N.jsx)(w,{item:e,description:r})]})}function P(e){const n=function(e){const n=o.segment(e)[Symbol.iterator](),t=n.next().value?.segment;return t&&(/\p{Extended_Pictographic}/u.test(t)||/\p{Emoji}/u.test(t))?{emoji:t,rest:e.slice(t.length)}:{emoji:null,rest:e}}(e.label),t=n.emoji??function(e){return"category"===e.type?"\ud83d\uddc3":(0,g.A)(e.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17"}(e);return{icon:t,title:n.rest.trim()}}function V({item:e}){const n=(0,r.Nr)(e),t=function(){const{selectMessage:e}=b();return n=>e(n,(0,l.T)({message:"1 item|{count} items",id:"theme.docs.DocCard.categoryDescription.plurals",description:"The default description for a category card in the generated index about how many items this category includes"},{count:n}))}();return n?(0,N.jsx)(F,{item:e,className:e.className,href:n,description:e.description??t(e.items.length),...P(e)}):null}function $({item:e}){const n=(0,r.cC)(e.docId??void 0);return(0,N.jsx)(F,{item:e,className:e.className,href:e.href,description:e.description??n?.description,...P(e)})}function G({item:e}){switch(e.type){case"link":return(0,N.jsx)($,{item:e});case"category":return(0,N.jsx)(V,{item:e});default:throw new Error(`unknown item type ${JSON.stringify(e)}`)}}const M="docCardListItem_W1sv";function S({className:e}){const n=(0,r.a4)();return(0,N.jsx)(E,{items:n,className:e})}function D({item:e}){return(0,N.jsx)("article",{className:(0,c.A)(M,"col col--6"),children:(0,N.jsx)(G,{item:e})})}function E(e){const{items:n,className:t}=e;if(!n)return(0,N.jsx)(S,{...e});const s=(0,r.d1)(n);return(0,N.jsx)("section",{className:(0,c.A)("row",t),children:s.map((e,n)=>(0,N.jsx)(D,{item:e},n))})}var B=t(6929),O=t(1878),H=t(4267),R=t(594);const z={generatedIndexPage:"generatedIndexPage_vN6x",title:"title_kItE"};function q({categoryGeneratedIndex:e}){return(0,N.jsx)(i.be,{title:e.title,description:e.description,keywords:e.keywords,image:(0,a.Ay)(e.image)})}function J({categoryGeneratedIndex:e}){const n=(0,r.$S)();return(0,N.jsxs)("div",{className:z.generatedIndexPage,children:[(0,N.jsx)(O.A,{}),(0,N.jsx)(R.A,{}),(0,N.jsx)(H.A,{}),(0,N.jsxs)("header",{children:[(0,N.jsx)(f.A,{as:"h1",className:z.title,children:e.title}),e.description&&(0,N.jsx)("p",{children:e.description})]}),(0,N.jsx)("article",{className:"margin-top--lg",children:(0,N.jsx)(E,{items:n.items,className:z.list})}),(0,N.jsx)("footer",{className:"margin-top--md",children:(0,N.jsx)(B.A,{previous:e.navigation.previous,next:e.navigation.next})})]})}function W(e){return(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(q,{...e}),(0,N.jsx)(J,{...e})]})}},6929(e,n,t){t.d(n,{A:()=>o});t(6540);var s=t(8215),i=t(1312),r=t(8774),a=t(4848);function c(e){const{permalink:n,title:t,subLabel:i,isNext:c}=e;return(0,a.jsxs)(r.A,{className:(0,s.A)("pagination-nav__link",c?"pagination-nav__link--next":"pagination-nav__link--prev"),to:n,children:[i&&(0,a.jsx)("div",{className:"pagination-nav__sublabel",children:i}),(0,a.jsx)("div",{className:"pagination-nav__label",children:t})]})}function o(e){const{className:n,previous:t,next:r}=e;return(0,a.jsxs)("nav",{className:(0,s.A)(n,"pagination-nav"),"aria-label":(0,i.T)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"}),children:[t&&(0,a.jsx)(c,{...t,subLabel:(0,a.jsx)(i.A,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc",children:"Previous"})}),r&&(0,a.jsx)(c,{...r,subLabel:(0,a.jsx)(i.A,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc",children:"Next"}),isNext:!0})]})}},4267(e,n,t){t.d(n,{A:()=>o});t(6540);var s=t(8215),i=t(1312),r=t(7559),a=t(3025),c=t(4848);function o({className:e}){const n=(0,a.r)();return n.badge?(0,c.jsx)("span",{className:(0,s.A)(e,r.G.docs.docVersionBadge,"badge badge--secondary"),children:(0,c.jsx)(i.A,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label},children:"Version: {versionLabel}"})}):null}},1878(e,n,t){t.d(n,{A:()=>g});t(6540);var s=t(8215),i=t(4586),r=t(8774),a=t(1312),c=t(8295),o=t(7559),l=t(3886),d=t(3025),u=t(4848);const m={unreleased:function({siteTitle:e,versionMetadata:n}){return(0,u.jsx)(a.A,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:e,versionLabel:(0,u.jsx)("b",{children:n.label})},children:"This is unreleased documentation for {siteTitle} {versionLabel} version."})},unmaintained:function({siteTitle:e,versionMetadata:n}){return(0,u.jsx)(a.A,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:e,versionLabel:(0,u.jsx)("b",{children:n.label})},children:"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained."})}};function h(e){const n=m[e.versionMetadata.banner];return(0,u.jsx)(n,{...e})}function x({versionLabel:e,to:n,onClick:t}){return(0,u.jsx)(a.A,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:e,latestVersionLink:(0,u.jsx)("b",{children:(0,u.jsx)(r.A,{to:n,onClick:t,children:(0,u.jsx)(a.A,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label",children:"latest version"})})})},children:"For up-to-date documentation, see the {latestVersionLink} ({versionLabel})."})}function b({className:e,versionMetadata:n}){const{siteConfig:{title:t}}=(0,i.A)(),{pluginId:r}=(0,c.vT)({failfast:!0}),{savePreferredVersionName:a}=(0,l.g1)(r),{latestDocSuggestion:d,latestVersionSuggestion:m}=(0,c.HW)(r),b=d??(g=m).docs.find(e=>e.id===g.mainDocId);var g;return(0,u.jsxs)("div",{className:(0,s.A)(e,o.G.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert",children:[(0,u.jsx)("div",{children:(0,u.jsx)(h,{siteTitle:t,versionMetadata:n})}),(0,u.jsx)("div",{className:"margin-top--md",children:(0,u.jsx)(x,{versionLabel:m.label,to:b.path,onClick:()=>a(m.name)})})]})}function g({className:e}){const n=(0,d.r)();return n.banner?(0,u.jsx)(b,{className:e,versionMetadata:n}):null}},1107(e,n,t){t.d(n,{A:()=>l});t(6540);var s=t(8215),i=t(1312),r=t(3535),a=t(8774),c=t(3427),o=t(4848);function l({as:e,id:n,...t}){const l=(0,c.A)(),d=(0,r.v)(n);if("h1"===e||!n)return(0,o.jsx)(e,{...t,id:void 0});l.collectAnchor(n);const u=(0,i.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof t.children?t.children:n});return(0,o.jsxs)(e,{...t,className:(0,s.A)("anchor",d,t.className),id:n,children:[t.children,(0,o.jsx)(a.A,{className:"hash-link",to:`#${n}`,"aria-label":u,title:u,translate:"no",children:"\u200b"})]})}},3535(e,n,t){t.d(n,{v:()=>a});var s=t(6342);const i="anchorTargetStickyNavbar_Vzrq",r="anchorTargetHideOnScrollNavbar_vjPI";function a(e){const{navbar:{hideOnScroll:n}}=(0,s.p)();if(void 0!==e)return n?r:i}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/1513.b9d94836.js b/docs/build/assets/js/1513.b9d94836.js deleted file mode 100644 index 417255798..000000000 --- a/docs/build/assets/js/1513.b9d94836.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[1513],{3894(t,e,s){s.d(e,{Zk:()=>h,q7:()=>B,tM:()=>ot,u4:()=>rt});var i=s(9625),n=s(4345),r=s(3848),o=s(8515),a=s(3706),c=s(797),l=function(){var t=(0,c.K2)(function(t,e,s,i){for(s=s||{},i=t.length;i--;s[t[i]]=e);return s},"o"),e=[1,2],s=[1,3],i=[1,4],n=[2,4],r=[1,9],o=[1,11],a=[1,16],l=[1,17],h=[1,18],d=[1,19],u=[1,33],p=[1,20],y=[1,21],g=[1,22],m=[1,23],f=[1,24],S=[1,26],k=[1,27],b=[1,28],_=[1,29],T=[1,30],E=[1,31],D=[1,32],x=[1,35],C=[1,36],$=[1,37],v=[1,38],I=[1,34],A=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],L=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,39,40,41,45,48,51,52,53,54,57],w=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],R={trace:(0,c.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,styleStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"--\x3e":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,CLICK:38,STRING:39,HREF:40,classDef:41,CLASSDEF_ID:42,CLASSDEF_STYLEOPTS:43,DEFAULT:44,style:45,STYLE_IDS:46,STYLEDEF_STYLEOPTS:47,class:48,CLASSENTITY_IDS:49,STYLECLASS:50,direction_tb:51,direction_bt:52,direction_rl:53,direction_lr:54,eol:55,";":56,EDGE_STATE:57,STYLE_SEPARATOR:58,left_of:59,right_of:60,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",14:"DESCR",15:"--\x3e",16:"HIDE_EMPTY",17:"scale",18:"WIDTH",19:"COMPOSIT_STATE",20:"STRUCT_START",21:"STRUCT_STOP",22:"STATE_DESCR",23:"AS",24:"ID",25:"FORK",26:"JOIN",27:"CHOICE",28:"CONCURRENT",29:"note",31:"NOTE_TEXT",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",38:"CLICK",39:"STRING",40:"HREF",41:"classDef",42:"CLASSDEF_ID",43:"CLASSDEF_STYLEOPTS",44:"DEFAULT",45:"style",46:"STYLE_IDS",47:"STYLEDEF_STYLEOPTS",48:"class",49:"CLASSENTITY_IDS",50:"STYLECLASS",51:"direction_tb",52:"direction_bt",53:"direction_rl",54:"direction_lr",56:";",57:"EDGE_STATE",58:"STYLE_SEPARATOR",59:"left_of",60:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[9,5],[9,5],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[55,1],[55,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],performAction:(0,c.K2)(function(t,e,s,i,n,r,o){var a=r.length-1;switch(n){case 3:return i.setRootDoc(r[a]),r[a];case 4:this.$=[];break;case 5:"nl"!=r[a]&&(r[a-1].push(r[a]),this.$=r[a-1]);break;case 6:case 7:case 12:this.$=r[a];break;case 8:this.$="nl";break;case 13:const t=r[a-1];t.description=i.trimColon(r[a]),this.$=t;break;case 14:this.$={stmt:"relation",state1:r[a-2],state2:r[a]};break;case 15:const e=i.trimColon(r[a]);this.$={stmt:"relation",state1:r[a-3],state2:r[a-1],description:e};break;case 19:this.$={stmt:"state",id:r[a-3],type:"default",description:"",doc:r[a-1]};break;case 20:var c=r[a],l=r[a-2].trim();if(r[a].match(":")){var h=r[a].split(":");c=h[0],l=[l,h[1]]}this.$={stmt:"state",id:c,type:"default",description:l};break;case 21:this.$={stmt:"state",id:r[a-3],type:"default",description:r[a-5],doc:r[a-1]};break;case 22:this.$={stmt:"state",id:r[a],type:"fork"};break;case 23:this.$={stmt:"state",id:r[a],type:"join"};break;case 24:this.$={stmt:"state",id:r[a],type:"choice"};break;case 25:this.$={stmt:"state",id:i.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:r[a-1].trim(),note:{position:r[a-2].trim(),text:r[a].trim()}};break;case 29:this.$=r[a].trim(),i.setAccTitle(this.$);break;case 30:case 31:this.$=r[a].trim(),i.setAccDescription(this.$);break;case 32:this.$={stmt:"click",id:r[a-3],url:r[a-2],tooltip:r[a-1]};break;case 33:this.$={stmt:"click",id:r[a-3],url:r[a-1],tooltip:""};break;case 34:case 35:this.$={stmt:"classDef",id:r[a-1].trim(),classes:r[a].trim()};break;case 36:this.$={stmt:"style",id:r[a-1].trim(),styleClass:r[a].trim()};break;case 37:this.$={stmt:"applyClass",id:r[a-1].trim(),styleClass:r[a].trim()};break;case 38:i.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 39:i.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 40:i.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 41:i.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 44:case 45:this.$={stmt:"state",id:r[a].trim(),type:"default",description:""};break;case 46:case 47:this.$={stmt:"state",id:r[a-2].trim(),classes:[r[a].trim()],type:"default",description:""}}},"anonymous"),table:[{3:1,4:e,5:s,6:i},{1:[3]},{3:5,4:e,5:s,6:i},{3:6,4:e,5:s,6:i},t([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],n,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:r,5:o,8:8,9:10,10:12,11:13,12:14,13:15,16:a,17:l,19:h,22:d,24:u,25:p,26:y,27:g,28:m,29:f,32:25,33:S,35:k,37:b,38:_,41:T,45:E,48:D,51:x,52:C,53:$,54:v,57:I},t(A,[2,5]),{9:39,10:12,11:13,12:14,13:15,16:a,17:l,19:h,22:d,24:u,25:p,26:y,27:g,28:m,29:f,32:25,33:S,35:k,37:b,38:_,41:T,45:E,48:D,51:x,52:C,53:$,54:v,57:I},t(A,[2,7]),t(A,[2,8]),t(A,[2,9]),t(A,[2,10]),t(A,[2,11]),t(A,[2,12],{14:[1,40],15:[1,41]}),t(A,[2,16]),{18:[1,42]},t(A,[2,18],{20:[1,43]}),{23:[1,44]},t(A,[2,22]),t(A,[2,23]),t(A,[2,24]),t(A,[2,25]),{30:45,31:[1,46],59:[1,47],60:[1,48]},t(A,[2,28]),{34:[1,49]},{36:[1,50]},t(A,[2,31]),{13:51,24:u,57:I},{42:[1,52],44:[1,53]},{46:[1,54]},{49:[1,55]},t(L,[2,44],{58:[1,56]}),t(L,[2,45],{58:[1,57]}),t(A,[2,38]),t(A,[2,39]),t(A,[2,40]),t(A,[2,41]),t(A,[2,6]),t(A,[2,13]),{13:58,24:u,57:I},t(A,[2,17]),t(w,n,{7:59}),{24:[1,60]},{24:[1,61]},{23:[1,62]},{24:[2,48]},{24:[2,49]},t(A,[2,29]),t(A,[2,30]),{39:[1,63],40:[1,64]},{43:[1,65]},{43:[1,66]},{47:[1,67]},{50:[1,68]},{24:[1,69]},{24:[1,70]},t(A,[2,14],{14:[1,71]}),{4:r,5:o,8:8,9:10,10:12,11:13,12:14,13:15,16:a,17:l,19:h,21:[1,72],22:d,24:u,25:p,26:y,27:g,28:m,29:f,32:25,33:S,35:k,37:b,38:_,41:T,45:E,48:D,51:x,52:C,53:$,54:v,57:I},t(A,[2,20],{20:[1,73]}),{31:[1,74]},{24:[1,75]},{39:[1,76]},{39:[1,77]},t(A,[2,34]),t(A,[2,35]),t(A,[2,36]),t(A,[2,37]),t(L,[2,46]),t(L,[2,47]),t(A,[2,15]),t(A,[2,19]),t(w,n,{7:78}),t(A,[2,26]),t(A,[2,27]),{5:[1,79]},{5:[1,80]},{4:r,5:o,8:8,9:10,10:12,11:13,12:14,13:15,16:a,17:l,19:h,21:[1,81],22:d,24:u,25:p,26:y,27:g,28:m,29:f,32:25,33:S,35:k,37:b,38:_,41:T,45:E,48:D,51:x,52:C,53:$,54:v,57:I},t(A,[2,32]),t(A,[2,33]),t(A,[2,21])],defaultActions:{5:[2,1],6:[2,2],47:[2,48],48:[2,49]},parseError:(0,c.K2)(function(t,e){if(!e.recoverable){var s=new Error(t);throw s.hash=e,s}this.trace(t)},"parseError"),parse:(0,c.K2)(function(t){var e=this,s=[0],i=[],n=[null],r=[],o=this.table,a="",l=0,h=0,d=0,u=r.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;r.push(m);var f=p.options&&p.options.ranges;function S(){var t;return"number"!=typeof(t=i.pop()||p.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,c.K2)(function(t){s.length=s.length-2*t,n.length=n.length-t,r.length=r.length-t},"popStack"),(0,c.K2)(S,"lex");for(var k,b,_,T,E,D,x,C,$,v={};;){if(_=s[s.length-1],this.defaultActions[_]?T=this.defaultActions[_]:(null==k&&(k=S()),T=o[_]&&o[_][k]),void 0===T||!T.length||!T[0]){var I="";for(D in $=[],o[_])this.terminals_[D]&&D>2&&$.push("'"+this.terminals_[D]+"'");I=p.showPosition?"Parse error on line "+(l+1)+":\n"+p.showPosition()+"\nExpecting "+$.join(", ")+", got '"+(this.terminals_[k]||k)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==k?"end of input":"'"+(this.terminals_[k]||k)+"'"),this.parseError(I,{text:p.match,token:this.terminals_[k]||k,line:p.yylineno,loc:m,expected:$})}if(T[0]instanceof Array&&T.length>1)throw new Error("Parse Error: multiple actions possible at state: "+_+", token: "+k);switch(T[0]){case 1:s.push(k),n.push(p.yytext),r.push(p.yylloc),s.push(T[1]),k=null,b?(k=b,b=null):(h=p.yyleng,a=p.yytext,l=p.yylineno,m=p.yylloc,d>0&&d--);break;case 2:if(x=this.productions_[T[1]][1],v.$=n[n.length-x],v._$={first_line:r[r.length-(x||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(x||1)].first_column,last_column:r[r.length-1].last_column},f&&(v._$.range=[r[r.length-(x||1)].range[0],r[r.length-1].range[1]]),void 0!==(E=this.performAction.apply(v,[a,h,l,y.yy,T[1],n,r].concat(u))))return E;x&&(s=s.slice(0,-1*x*2),n=n.slice(0,-1*x),r=r.slice(0,-1*x)),s.push(this.productions_[T[1]][0]),n.push(v.$),r.push(v._$),C=o[s[s.length-2]][s[s.length-1]],s.push(C);break;case 3:return!0}}return!0},"parse")},N=function(){return{EOF:1,parseError:(0,c.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,c.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,c.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,c.K2)(function(t){var e=t.length,s=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,c.K2)(function(){return this._more=!0,this},"more"),reject:(0,c.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,c.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,c.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,c.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,c.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,c.K2)(function(t,e){var s,i,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],s=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var r in n)this[r]=n[r];return!1}return!1},"test_match"),next:(0,c.K2)(function(){if(this.done)return this.EOF;var t,e,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;re[0].length)){if(e=s,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(s,n[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,c.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,c.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,c.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,c.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,c.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,c.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,c.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,c.K2)(function(t,e,s,i){function n(){const s=e.yytext.indexOf("%%");if(0===s)return!1;if(s>0){const i=e.yytext.slice(0,s),n=e.yytext.slice(s);n&&t.lexer.unput(n),e.yytext=i}return!0}(0,c.K2)(n,"processId");switch(s){case 0:return 38;case 1:return 40;case 2:return 39;case 3:return 44;case 4:case 43:return 51;case 5:case 44:return 52;case 6:case 45:return 53;case 7:case 46:return 54;case 8:case 77:return 5;case 9:case 10:case 11:case 12:case 56:case 62:break;case 13:case 33:return this.pushState("SCALE"),17;case 14:case 34:return 18;case 15:case 21:case 35:case 50:case 53:this.popState();break;case 16:return this.begin("acc_title"),33;case 17:return this.popState(),"acc_title_value";case 18:return this.begin("acc_descr"),35;case 19:return this.popState(),"acc_descr_value";case 20:this.begin("acc_descr_multiline");break;case 22:return"acc_descr_multiline_value";case 23:return this.pushState("CLASSDEF"),41;case 24:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 25:return this.popState(),this.pushState("CLASSDEFID"),42;case 26:return this.popState(),43;case 27:return this.pushState("CLASS"),48;case 28:return this.popState(),this.pushState("CLASS_STYLE"),49;case 29:return this.popState(),50;case 30:return this.pushState("STYLE"),45;case 31:return this.popState(),this.pushState("STYLEDEF_STYLES"),46;case 32:return this.popState(),47;case 36:this.pushState("STATE");break;case 37:case 40:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),25;case 38:case 41:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),26;case 39:case 42:return this.popState(),e.yytext=e.yytext.slice(0,-10).trim(),27;case 47:this.pushState("STATE_STRING");break;case 48:return this.pushState("STATE_ID"),"AS";case 49:case 64:if(!n())return;return this.popState(),"ID";case 51:return"STATE_DESCR";case 52:return 19;case 54:return this.popState(),this.pushState("struct"),20;case 55:return this.popState(),21;case 57:return this.begin("NOTE"),29;case 58:return this.popState(),this.pushState("NOTE_ID"),59;case 59:return this.popState(),this.pushState("NOTE_ID"),60;case 60:this.popState(),this.pushState("FLOATING_NOTE");break;case 61:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 63:return"NOTE_TEXT";case 65:if(!n())return;return this.popState(),this.pushState("NOTE_TEXT"),24;case 66:return this.popState(),e.yytext=e.yytext.substr(2).trim(),31;case 67:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),31;case 68:case 69:return 6;case 70:return 16;case 71:return 57;case 72:if(!n())return;return 24;case 73:return e.yytext=e.yytext.trim(),14;case 74:return 15;case 75:return 28;case 76:return 58;case 78:return"INVALID"}},"anonymous"),rules:[/^(?:click\b)/i,/^(?:href\b)/i,/^(?:"[^"]*")/i,/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:style\s+)/i,/^(?:[\w,]+\s+)/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?\n\s*end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:(?:[^:\n;]|:[^:\n;])+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[10,11,12],inclusive:!1},struct:{rules:[10,11,12,23,27,30,36,43,44,45,46,55,56,57,71,72,73,74,75,76],inclusive:!1},FLOATING_NOTE_ID:{rules:[64],inclusive:!1},FLOATING_NOTE:{rules:[61,62,63],inclusive:!1},NOTE_TEXT:{rules:[66,67],inclusive:!1},NOTE_ID:{rules:[65],inclusive:!1},NOTE:{rules:[58,59,60],inclusive:!1},STYLEDEF_STYLEOPTS:{rules:[],inclusive:!1},STYLEDEF_STYLES:{rules:[32],inclusive:!1},STYLE_IDS:{rules:[],inclusive:!1},STYLE:{rules:[31],inclusive:!1},CLASS_STYLE:{rules:[29],inclusive:!1},CLASS:{rules:[28],inclusive:!1},CLASSDEFID:{rules:[26],inclusive:!1},CLASSDEF:{rules:[24,25],inclusive:!1},acc_descr_multiline:{rules:[21,22],inclusive:!1},acc_descr:{rules:[19],inclusive:!1},acc_title:{rules:[17],inclusive:!1},SCALE:{rules:[14,15,34,35],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[49],inclusive:!1},STATE_STRING:{rules:[50,51],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[10,11,12,37,38,39,40,41,42,47,48,52,53,54],inclusive:!1},ID:{rules:[10,11,12],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,11,12,13,16,18,20,23,27,30,33,36,54,57,68,69,70,71,72,73,74,76,77,78],inclusive:!0}}}}();function O(){this.yy={}}return R.lexer=N,(0,c.K2)(O,"Parser"),O.prototype=R,R.Parser=O,new O}();l.parser=l;var h=l,d="state",u="root",p="relation",y="default",g="divider",m="fill:none",f="fill: #333",S="markdown",k="normal",b="rect",_="rectWithTitle",T="divider",E="roundedWithTitle",D="statediagram",x=`${D}-state`,C="transition",$=`${C} note-edge`,v=`${D}-note`,I=`${D}-cluster`,A=`${D}-cluster-alt`,L="parent",w="note",R="----",N=`${R}${w}`,O=`${R}${L}`,K=(0,c.K2)((t,e="TB")=>{if(!t.doc)return e;let s=e;for(const i of t.doc)"dir"===i.stmt&&(s=i.value);return s},"getDir"),B={getClasses:(0,c.K2)(function(t,e){return e.db.getClasses()},"getClasses"),draw:(0,c.K2)(async function(t,e,s,l){c.Rm.info("REF0:"),c.Rm.info("Drawing state diagram (v2)",e);const{securityLevel:h,state:d,layout:u}=(0,a.D7)();l.db.extract(l.db.getRootDocV2());const p=l.db.getData(),y=(0,i.A)(e,h);p.type=l.type,p.layoutAlgorithm=u,p.nodeSpacing=d?.nodeSpacing||50,p.rankSpacing=d?.rankSpacing||50;"neo"===(0,a.D7)().look?p.markers=["barbNeo"]:p.markers=["barb"],p.diagramId=e,await(0,r.XX)(p,y);try{("function"==typeof l.db.getLinks?l.db.getLinks():new Map).forEach((t,e)=>{const s="string"==typeof e?e:"string"==typeof e?.id?e.id:"";if(!s)return void c.Rm.warn("\u26a0\ufe0f Invalid or missing stateId from key:",JSON.stringify(e));const i=y.node()?.querySelectorAll("g");let n;if(i?.forEach(t=>{const e=t.textContent?.trim();e===s&&(n=t)}),!n)return void c.Rm.warn("\u26a0\ufe0f Could not find node matching text:",s);const r=n.parentNode;if(!r)return void c.Rm.warn("\u26a0\ufe0f Node has no parent, cannot wrap:",s);const o=document.createElementNS("http://www.w3.org/2000/svg","a"),a=t.url.replace(/^"+|"+$/g,"");if(o.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",a),o.setAttribute("target","_blank"),t.tooltip){const e=t.tooltip.replace(/^"+|"+$/g,"");o.setAttribute("title",e)}r.replaceChild(o,n),o.appendChild(n),c.Rm.info("\ud83d\udd17 Wrapped node in tag for:",s,t.url)})}catch(g){c.Rm.error("\u274c Error injecting clickable links:",g)}o._K.insertTitle(y,"statediagramTitleText",d?.titleTopMargin??25,l.db.getDiagramTitle()),(0,n.P)(y,8,D,d?.useMaxWidth??!0)},"draw"),getDir:K},F=new Map,Y=0;function P(t="",e=0,s="",i=R){return`state-${t}${null!==s&&s.length>0?`${i}${s}`:""}-${e}`}(0,c.K2)(P,"stateDomId");var G=(0,c.K2)((t,e,s,i,n,r,o,l)=>{c.Rm.trace("items",e),e.forEach(e=>{switch(e.stmt){case d:case y:U(t,e,s,i,n,r,o,l);break;case p:{U(t,e.state1,s,i,n,r,o,l),U(t,e.state2,s,i,n,r,o,l);const c="neo"===o,h={id:"edge"+Y,start:e.state1.id,end:e.state2.id,arrowhead:"normal",arrowTypeEnd:c?"arrow_barb_neo":"arrow_barb",style:m,labelStyle:"",label:a.Y2.sanitizeText(e.description??"",(0,a.D7)()),arrowheadStyle:f,labelpos:"c",labelType:S,thickness:k,classes:C,look:o};n.push(h),Y++}}})},"setupDoc"),j=(0,c.K2)((t,e="TB")=>{let s=e;if(t.doc)for(const i of t.doc)"dir"===i.stmt&&(s=i.value);return s},"getDir");function W(t,e,s){if(!e.id||""===e.id||""===e.id)return;e.cssClasses&&(Array.isArray(e.cssCompiledStyles)||(e.cssCompiledStyles=[]),e.cssClasses.split(" ").forEach(t=>{const i=s.get(t);i&&(e.cssCompiledStyles=[...e.cssCompiledStyles??[],...i.styles])}));const i=t.find(t=>t.id===e.id);i?Object.assign(i,e):t.push(e)}function z(t){return t?.classes?.join(" ")??""}function M(t){return t?.styles??[]}(0,c.K2)(W,"insertOrUpdateNode"),(0,c.K2)(z,"getClassesFromDbInfo"),(0,c.K2)(M,"getStylesFromDbInfo");var U=(0,c.K2)((t,e,s,i,n,r,o,l)=>{const h=e.id,d=s.get(h),u=z(d),p=M(d),D=(0,a.D7)();if(c.Rm.info("dataFetcher parsedItem",e,d,p),"root"!==h){let s=b;!0===e.start?s="stateStart":!1===e.start&&(s="stateEnd"),e.type!==y&&(s=e.type),F.get(h)||F.set(h,{id:h,shape:s,description:a.Y2.sanitizeText(h,D),cssClasses:`${u} ${x}`,cssStyles:p});const d=F.get(h);e.description&&(Array.isArray(d.description)?(d.shape=_,d.description.push(e.description)):d.description?.length&&d.description.length>0?(d.shape=_,d.description===h?d.description=[e.description]:d.description=[d.description,e.description]):(d.shape=b,d.description=e.description),d.description=a.Y2.sanitizeTextOrArray(d.description,D)),1===d.description?.length&&d.shape===_&&("group"===d.type?d.shape=E:d.shape=b),!d.type&&e.doc&&(c.Rm.info("Setting cluster for XCX",h,j(e)),d.type="group",d.isGroup=!0,d.dir=j(e),d.shape=e.type===g?T:E,d.cssClasses=`${d.cssClasses} ${I} ${r?A:""}`);const C={labelStyle:"",shape:d.shape,label:d.description,cssClasses:d.cssClasses,cssCompiledStyles:[],cssStyles:d.cssStyles,id:h,dir:d.dir,domId:P(h,Y),type:d.type,isGroup:"group"===d.type,padding:8,rx:10,ry:10,look:o,labelType:"markdown"};if(C.shape===T&&(C.label=""),t&&"root"!==t.id&&(c.Rm.trace("Setting node ",h," to be child of its parent ",t.id),C.parentId=t.id),C.centerLabel=!0,e.note){const t={labelStyle:"",shape:"note",label:e.note.text,labelType:"markdown",cssClasses:v,cssStyles:[],cssCompiledStyles:[],id:h+N+"-"+Y,domId:P(h,Y,w),type:d.type,isGroup:"group"===d.type,padding:D.flowchart?.padding,look:o,position:e.note.position},s=h+O,r={labelStyle:"",shape:"noteGroup",label:e.note.text,cssClasses:d.cssClasses,cssStyles:[],id:h+O,domId:P(h,Y,L),type:"group",isGroup:!0,padding:16,look:o,position:e.note.position};Y++,r.id=s,t.parentId=s,W(i,r,l),W(i,t,l),W(i,C,l);let a=h,c=t.id;"left of"===e.note.position&&(a=t.id,c=h),n.push({id:a+"-"+c,start:a,end:c,arrowhead:"none",arrowTypeEnd:"",style:m,labelStyle:"",classes:$,arrowheadStyle:f,labelpos:"c",labelType:S,thickness:k,look:o})}else W(i,C,l)}e.doc&&(c.Rm.trace("Adding nodes children "),G(e,e.doc,s,i,n,!r,o,l))},"dataFetcher"),X=(0,c.K2)(()=>{F.clear(),Y=0},"reset"),H="[*]",V="start",J="[*]",q="end",Z="color",Q="fill",tt="bgFill",et=",",st=(0,c.K2)(()=>new Map,"newClassesList"),it=(0,c.K2)(()=>({relations:[],states:new Map,documents:{}}),"newDoc"),nt=(0,c.K2)(t=>JSON.parse(JSON.stringify(t)),"clone"),rt=class{constructor(t){this.version=t,this.nodes=[],this.edges=[],this.rootDoc=[],this.classes=st(),this.documents={root:it()},this.currentDocument=this.documents.root,this.startEndCount=0,this.dividerCnt=0,this.links=new Map,this.getAccTitle=a.iN,this.setAccTitle=a.SV,this.getAccDescription=a.m7,this.setAccDescription=a.EI,this.setDiagramTitle=a.ke,this.getDiagramTitle=a.ab,this.clear(),this.setRootDoc=this.setRootDoc.bind(this),this.getDividerId=this.getDividerId.bind(this),this.setDirection=this.setDirection.bind(this),this.trimColon=this.trimColon.bind(this)}static{(0,c.K2)(this,"StateDB")}static{this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3}}extract(t){this.clear(!0);for(const i of Array.isArray(t)?t:t.doc)switch(i.stmt){case d:this.addState(i.id.trim(),i.type,i.doc,i.description,i.note);break;case p:this.addRelation(i.state1,i.state2,i.description);break;case"classDef":this.addStyleClass(i.id.trim(),i.classes);break;case"style":this.handleStyleDef(i);break;case"applyClass":this.setCssClass(i.id.trim(),i.styleClass);break;case"click":this.addLink(i.id,i.url,i.tooltip)}const e=this.getStates(),s=(0,a.D7)();X(),U(void 0,this.getRootDocV2(),e,this.nodes,this.edges,!0,s.look,this.classes);for(const i of this.nodes)if(Array.isArray(i.label)){if(i.description=i.label.slice(1),i.isGroup&&i.description.length>0)throw new Error(`Group nodes can only have label. Remove the additional description for node [${i.id}]`);i.label=i.label[0]}}handleStyleDef(t){const e=t.id.trim().split(","),s=t.styleClass.split(",");for(const i of e){let t=this.getState(i);if(!t){const e=i.trim();this.addState(e),t=this.getState(e)}t&&(t.styles=s.map(t=>t.replace(/;/g,"")?.trim()))}}setRootDoc(t){c.Rm.info("Setting root doc",t),this.rootDoc=t,1===this.version?this.extract(t):this.extract(this.getRootDocV2())}docTranslator(t,e,s){if(e.stmt===p)return this.docTranslator(t,e.state1,!0),void this.docTranslator(t,e.state2,!1);if(e.stmt===d&&(e.id===H?(e.id=t.id+(s?"_start":"_end"),e.start=s):e.id=e.id.trim()),e.stmt!==u&&e.stmt!==d||!e.doc)return;const i=[];let n=[];for(const r of e.doc)if(r.type===g){const t=nt(r);t.doc=nt(n),i.push(t),n=[]}else n.push(r);if(i.length>0&&n.length>0){const t={stmt:d,id:(0,o.$C)(),type:"divider",doc:nt(n)};i.push(nt(t)),e.doc=i}e.doc.forEach(t=>this.docTranslator(e,t,!0))}getRootDocV2(){return this.docTranslator({id:u,stmt:u},{id:u,stmt:u,doc:this.rootDoc},!0),{id:u,doc:this.rootDoc}}addState(t,e=y,s=void 0,i=void 0,n=void 0,r=void 0,o=void 0,l=void 0){const h=t?.trim();if(this.currentDocument.states.has(h)){const t=this.currentDocument.states.get(h);if(!t)throw new Error(`State not found: ${h}`);t.doc||(t.doc=s),t.type||(t.type=e)}else c.Rm.info("Adding state ",h,i),this.currentDocument.states.set(h,{stmt:d,id:h,descriptions:[],type:e,doc:s,note:n,classes:[],styles:[],textStyles:[]});if(i){c.Rm.info("Setting state description",h,i);(Array.isArray(i)?i:[i]).forEach(t=>this.addDescription(h,t.trim()))}if(n){const t=this.currentDocument.states.get(h);if(!t)throw new Error(`State not found: ${h}`);t.note=n,t.note.text=a.Y2.sanitizeText(t.note.text,(0,a.D7)())}if(r){c.Rm.info("Setting state classes",h,r);(Array.isArray(r)?r:[r]).forEach(t=>this.setCssClass(h,t.trim()))}if(o){c.Rm.info("Setting state styles",h,o);(Array.isArray(o)?o:[o]).forEach(t=>this.setStyle(h,t.trim()))}if(l){c.Rm.info("Setting state styles",h,o);(Array.isArray(l)?l:[l]).forEach(t=>this.setTextStyle(h,t.trim()))}}clear(t){this.nodes=[],this.edges=[],this.documents={root:it()},this.currentDocument=this.documents.root,this.startEndCount=0,this.classes=st(),t||(this.links=new Map,(0,a.IU)())}getState(t){return this.currentDocument.states.get(t)}getStates(){return this.currentDocument.states}logDocuments(){c.Rm.info("Documents = ",this.documents)}getRelations(){return this.currentDocument.relations}addLink(t,e,s){this.links.set(t,{url:e,tooltip:s}),c.Rm.warn("Adding link",t,e,s)}getLinks(){return this.links}startIdIfNeeded(t=""){return t===H?(this.startEndCount++,`${V}${this.startEndCount}`):t}startTypeIfNeeded(t="",e=y){return t===H?V:e}endIdIfNeeded(t=""){return t===J?(this.startEndCount++,`${q}${this.startEndCount}`):t}endTypeIfNeeded(t="",e=y){return t===J?q:e}addRelationObjs(t,e,s=""){const i=this.startIdIfNeeded(t.id.trim()),n=this.startTypeIfNeeded(t.id.trim(),t.type),r=this.startIdIfNeeded(e.id.trim()),o=this.startTypeIfNeeded(e.id.trim(),e.type);this.addState(i,n,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles),this.addState(r,o,e.doc,e.description,e.note,e.classes,e.styles,e.textStyles),this.currentDocument.relations.push({id1:i,id2:r,relationTitle:a.Y2.sanitizeText(s,(0,a.D7)())})}addRelation(t,e,s){if("object"==typeof t&&"object"==typeof e)this.addRelationObjs(t,e,s);else if("string"==typeof t&&"string"==typeof e){const i=this.startIdIfNeeded(t.trim()),n=this.startTypeIfNeeded(t),r=this.endIdIfNeeded(e.trim()),o=this.endTypeIfNeeded(e);this.addState(i,n),this.addState(r,o),this.currentDocument.relations.push({id1:i,id2:r,relationTitle:s?a.Y2.sanitizeText(s,(0,a.D7)()):void 0})}}addDescription(t,e){const s=this.currentDocument.states.get(t),i=e.startsWith(":")?e.replace(":","").trim():e;s?.descriptions?.push(a.Y2.sanitizeText(i,(0,a.D7)()))}cleanupLabel(t){return t.startsWith(":")?t.slice(2).trim():t.trim()}getDividerId(){return this.dividerCnt++,`divider-id-${this.dividerCnt}`}addStyleClass(t,e=""){this.classes.has(t)||this.classes.set(t,{id:t,styles:[],textStyles:[]});const s=this.classes.get(t);e&&s&&e.split(et).forEach(t=>{const e=t.replace(/([^;]*);/,"$1").trim();if(RegExp(Z).exec(t)){const t=e.replace(Q,tt).replace(Z,Q);s.textStyles.push(t)}s.styles.push(e)})}getClasses(){return this.classes}setCssClass(t,e){t.split(",").forEach(t=>{let s=this.getState(t);if(!s){const e=t.trim();this.addState(e),s=this.getState(e)}s?.classes?.push(e)})}setStyle(t,e){this.getState(t)?.styles?.push(e)}setTextStyle(t,e){this.getState(t)?.textStyles?.push(e)}getDirectionStatement(){return this.rootDoc.find(t=>"dir"===t.stmt)}getDirection(){return this.getDirectionStatement()?.value??"TB"}setDirection(t){const e=this.getDirectionStatement();e?e.value=t:this.rootDoc.unshift({stmt:"dir",value:t})}trimColon(t){return t.startsWith(":")?t.slice(1).trim():t.trim()}getData(){const t=(0,a.D7)();return{nodes:this.nodes,edges:this.edges,other:{},config:t,direction:K(this.getRootDocV2())}}getConfig(){return(0,a.D7)().state}},ot=(0,c.K2)(t=>`\ndefs [id$="-barbEnd"] {\n fill: ${t.transitionColor};\n stroke: ${t.transitionColor};\n }\ng.stateGroup text {\n fill: ${t.nodeBorder};\n stroke: none;\n font-size: 10px;\n}\ng.stateGroup text {\n fill: ${t.textColor};\n stroke: none;\n font-size: 10px;\n\n}\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: ${t.stateLabelColor};\n}\n\ng.stateGroup rect {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n}\n\ng.stateGroup line {\n stroke: ${t.lineColor};\n stroke-width: ${t.strokeWidth||1};\n}\n\n.transition {\n stroke: ${t.transitionColor};\n stroke-width: ${t.strokeWidth||1};\n fill: none;\n}\n\n.stateGroup .composit {\n fill: ${t.background};\n border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px\n}\n\n.state-note {\n stroke: ${t.noteBorderColor};\n fill: ${t.noteBkgColor};\n\n text {\n fill: ${t.noteTextColor};\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${t.mainBkg};\n opacity: 0.5;\n}\n\n.edgeLabel .label rect {\n fill: ${t.labelBackgroundColor};\n opacity: 0.5;\n}\n.edgeLabel {\n background-color: ${t.edgeLabelBackground};\n p {\n background-color: ${t.edgeLabelBackground};\n }\n rect {\n opacity: 0.5;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n}\n.edgeLabel .label text {\n fill: ${t.transitionLabelColor||t.tertiaryTextColor};\n}\n.label div .edgeLabel {\n color: ${t.transitionLabelColor||t.tertiaryTextColor};\n}\n\n.stateLabel text {\n fill: ${t.stateLabelColor};\n font-size: 10px;\n font-weight: bold;\n}\n\n.node circle.state-start {\n fill: ${t.specialStateColor};\n stroke: ${t.specialStateColor};\n}\n\n.node .fork-join {\n fill: ${t.specialStateColor};\n stroke: ${t.specialStateColor};\n}\n\n.node circle.state-end {\n fill: ${t.innerEndBackground};\n stroke: ${t.background};\n stroke-width: 1.5\n}\n.end-state-inner {\n fill: ${t.compositeBackground||t.background};\n // stroke: ${t.background};\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ${t.stateBkg||t.mainBkg};\n stroke: ${t.stateBorder||t.nodeBorder};\n stroke-width: ${t.strokeWidth||1}px;\n}\n.node polygon {\n fill: ${t.mainBkg};\n stroke: ${t.stateBorder||t.nodeBorder};;\n stroke-width: ${t.strokeWidth||1}px;\n}\n[id$="-barbEnd"] {\n fill: ${t.lineColor};\n}\n\n.statediagram-cluster rect {\n fill: ${t.compositeTitleBackground};\n stroke: ${t.stateBorder||t.nodeBorder};\n stroke-width: ${t.strokeWidth||1}px;\n}\n\n.cluster-label, .nodeLabel {\n color: ${t.stateLabelColor};\n // line-height: 1;\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ${t.stateBorder||t.nodeBorder};\n}\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n fill: ${t.compositeBackground||t.background};\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: ${t.altBackground?t.altBackground:"#efefef"};\n}\n\n.statediagram-cluster .inner {\n rx:0;\n ry:0;\n}\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: ${t.altBackground?t.altBackground:"#efefef"};\n}\n\n.note-edge {\n stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n fill: ${t.noteBkgColor};\n stroke: ${t.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n.statediagram-note rect {\n fill: ${t.noteBkgColor};\n stroke: ${t.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n\n.statediagram-note text {\n fill: ${t.noteTextColor};\n}\n\n.statediagram-note .nodeLabel {\n color: ${t.noteTextColor};\n}\n.statediagram .edgeLabel {\n color: red; // ${t.noteTextColor};\n}\n\n[id$="-dependencyStart"], [id$="-dependencyEnd"] {\n fill: ${t.lineColor};\n stroke: ${t.lineColor};\n stroke-width: ${t.strokeWidth||1};\n}\n\n.statediagramTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n}\n\n[data-look="neo"].statediagram-cluster rect {\n fill: ${t.mainBkg};\n stroke: ${t.useGradient?"url("+t.svgId+"-gradient)":t.stateBorder||t.nodeBorder};\n stroke-width: ${t.strokeWidth??1};\n}\n[data-look="neo"].statediagram-cluster rect.outer {\n rx: ${t.radius}px;\n ry: ${t.radius}px;\n filter: ${t.dropShadow?t.dropShadow.replace("url(#drop-shadow)",`url(${t.svgId}-drop-shadow)`):"none"}\n}\n`,"getStyles")}}]); \ No newline at end of file diff --git a/docs/build/assets/js/165.6fcb797c.js b/docs/build/assets/js/165.6fcb797c.js deleted file mode 100644 index 54fa3e409..000000000 --- a/docs/build/assets/js/165.6fcb797c.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see 165.6fcb797c.js.LICENSE.txt */ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[165],{165(e,t,n){function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(s)throw i}}}}function s(e,t,n){return(t=c(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,s=[],l=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){u=!0,a=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||h(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e){return function(e){if(Array.isArray(e))return r(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||h(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}function d(e){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},d(e)}function h(e,t){if(e){if("string"==typeof e)return r(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}n.d(t,{A:()=>$h});var f="undefined"==typeof window?null:window,p=f?f.navigator:null;f&&f.document;var v,g,y,m,b,x,w,E,k,T,C,P,S,B,D,_,A,M,R,I,N,L,z,O,V,F,X,j,Y=d(""),q=d({}),W=d(function(){}),U="undefined"==typeof HTMLElement?"undefined":d(HTMLElement),H=function(e){return e&&e.instanceString&&G(e.instanceString)?e.instanceString():null},K=function(e){return null!=e&&d(e)==Y},G=function(e){return null!=e&&d(e)===W},Z=function(e){return!ee(e)&&(Array.isArray?Array.isArray(e):null!=e&&e instanceof Array)},$=function(e){return null!=e&&d(e)===q&&!Z(e)&&e.constructor===Object},Q=function(e){return null!=e&&d(e)===d(1)&&!isNaN(e)},J=function(e){return"undefined"===U?void 0:null!=e&&e instanceof HTMLElement},ee=function(e){return te(e)||ne(e)},te=function(e){return"collection"===H(e)&&e._private.single},ne=function(e){return"collection"===H(e)&&!e._private.single},re=function(e){return"core"===H(e)},ae=function(e){return"stylesheet"===H(e)},ie=function(e){return null==e||!(""!==e&&!e.match(/^\s+$/))},oe=function(e){return function(e){return null!=e&&d(e)===q}(e)&&G(e.then)},se=function(e,t){t||(t=function(){if(1===arguments.length)return arguments[0];if(0===arguments.length)return"undefined";for(var e=[],t=0;tt?1:0},be=null!=Object.assign?Object.assign.bind(Object):function(e){for(var t=arguments,n=1;n255)return;t.push(Math.floor(i))}var o=r[1]||r[2]||r[3],s=r[1]&&r[2]&&r[3];if(o&&!s)return;var l=n[4];if(void 0!==l){if((l=parseFloat(l))<0||l>1)return;t.push(l)}}return t}(e)||function(e){var t,n,r,a,i,o,s,l;function u(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var c=new RegExp("^"+ge+"$").exec(e);if(c){if((n=parseInt(c[1]))<0?n=(360- -1*n%360)%360:n>360&&(n%=360),n/=360,(r=parseFloat(c[2]))<0||r>100)return;if(r/=100,(a=parseFloat(c[3]))<0||a>100)return;if(a/=100,void 0!==(i=c[4])&&((i=parseFloat(i))<0||i>1))return;if(0===r)o=s=l=Math.round(255*a);else{var d=a<.5?a*(1+r):a+r-a*r,h=2*a-d;o=Math.round(255*u(h,d,n+1/3)),s=Math.round(255*u(h,d,n)),l=Math.round(255*u(h,d,n-1/3))}t=[o,s,l,i]}return t}(e)},we={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},Ee=function(e){for(var t=e.map,n=e.keys,r=n.length,a=0;a=o||t<0||g&&e-p>=c}function x(){var e=t();if(b(e))return w(e);h=setTimeout(x,function(e){var t=o-(e-f);return g?a(t,c-(e-p)):t}(e))}function w(e){return h=void 0,y&&l?m(e):(l=u=void 0,d)}function E(){var e=t(),n=b(e);if(l=arguments,u=this,f=e,n){if(void 0===h)return function(e){return p=e,h=setTimeout(x,o),v?m(e):d}(f);if(g)return clearTimeout(h),h=setTimeout(x,o),m(f)}return void 0===h&&(h=setTimeout(x,o)),d}return o=n(o)||0,e(s)&&(v=!!s.leading,c=(g="maxWait"in s)?r(n(s.maxWait)||0,o):c,y="trailing"in s?!!s.trailing:y),E.cancel=function(){void 0!==h&&clearTimeout(h),p=0,l=f=u=h=void 0},E.flush=function(){return void 0===h?d:w(t())},E},X}(),Re=Ce(Me),Ie=f?f.performance:null,Ne=Ie&&Ie.now?function(){return Ie.now()}:function(){return Date.now()},Le=function(){if(f){if(f.requestAnimationFrame)return function(e){f.requestAnimationFrame(e)};if(f.mozRequestAnimationFrame)return function(e){f.mozRequestAnimationFrame(e)};if(f.webkitRequestAnimationFrame)return function(e){f.webkitRequestAnimationFrame(e)};if(f.msRequestAnimationFrame)return function(e){f.msRequestAnimationFrame(e)}}return function(e){e&&setTimeout(function(){e(Ne())},1e3/60)}}(),ze=function(e){return Le(e)},Oe=Ne,Ve=9261,Fe=5381,Xe=function(e){for(var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Ve;!(t=e.next()).done;)n=65599*n+t.value|0;return n},je=function(e){return 65599*(arguments.length>1&&void 0!==arguments[1]?arguments[1]:Ve)+e|0},Ye=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Fe;return(t<<5)+t+e|0},qe=function(e){return 2097152*e[0]+e[1]},We=function(e,t){return[je(e[0],t[0]),Ye(e[1],t[1])]},Ue=function(e,t){var n={value:0,done:!1},r=0,a=e.length;return Xe({next:function(){return r=0;r--)e[r]===t&&e.splice(r,1)},pt=function(e){e.splice(0,e.length)},vt=function(e,t,n){return n&&(t=ce(n,t)),e[t]},gt=function(e,t,n,r){n&&(t=ce(n,t)),e[t]=r},yt="undefined"!=typeof Map?Map:function(){return i(function e(){a(this,e),this._obj={}},[{key:"set",value:function(e,t){return this._obj[e]=t,this}},{key:"delete",value:function(e){return this._obj[e]=void 0,this}},{key:"clear",value:function(){this._obj={}}},{key:"has",value:function(e){return void 0!==this._obj[e]}},{key:"get",value:function(e){return this._obj[e]}}])}(),mt=function(){return i(function e(t){if(a(this,e),this._obj=Object.create(null),this.size=0,null!=t){var n;n=null!=t.instanceString&&t.instanceString()===this.instanceString()?t.toArray():t;for(var r=0;r2&&void 0!==arguments[2])||arguments[2];if(void 0!==e&&void 0!==t&&re(e)){var r=t.group;if(null==r&&(r=t.data&&null!=t.data.source&&null!=t.data.target?"edges":"nodes"),"nodes"===r||"edges"===r){this.length=1,this[0]=this;var a=this._private={cy:e,single:!0,data:t.data||{},position:t.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:r,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!t.selected,selectable:void 0===t.selectable||!!t.selectable,locked:!!t.locked,grabbed:!1,grabbable:void 0===t.grabbable||!!t.grabbable,pannable:void 0===t.pannable?"edges"===r:!!t.pannable,active:!1,classes:new bt,animation:{current:[],queue:[]},rscratch:{},scratch:t.scratch||{},edges:[],children:[],parent:t.parent&&t.parent.isNode()?t.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(null==a.position.x&&(a.position.x=0),null==a.position.y&&(a.position.y=0),t.renderedPosition){var i=t.renderedPosition,o=e.pan(),s=e.zoom();a.position={x:(i.x-o.x)/s,y:(i.y-o.y)/s}}var l=[];Z(t.classes)?l=t.classes:K(t.classes)&&(l=t.classes.split(/\s+/));for(var u=0,c=l.length;ut?1:0},u=function(e,t,a,i,o){var s;if(null==a&&(a=0),null==o&&(o=n),a<0)throw new Error("lo must be non-negative");for(null==i&&(i=e.length);an;0<=n?t++:t--)u.push(t);return u}.apply(this).reverse()).length;iv;0<=v?++h:--h)g.push(i(e,r));return g},p=function(e,t,r,a){var i,o,s;for(null==a&&(a=n),i=e[r];r>t&&a(i,o=e[s=r-1>>1])<0;)e[r]=o,r=s;return e[r]=i},v=function(e,t,r){var a,i,o,s,l;for(null==r&&(r=n),i=e.length,l=t,o=e[t],a=2*t+1;a0;){var w=y.pop(),E=v(w),k=w.id();if(d[k]=E,E!==1/0)for(var T=w.neighborhood().intersect(f),C=0;C0)for(n.unshift(t);c[a];){var i=c[a];n.unshift(i.edge),n.unshift(i.node),a=(r=i.node).id()}return o.spawn(n)}}}},Rt={kruskal:function(e){e=e||function(e){return 1};for(var t=this.byGroup(),n=t.nodes,r=t.edges,a=n.length,i=new Array(a),o=n,s=function(e){for(var t=0;t0;){if(x(),E++,u===d){for(var k=[],T=a,C=d,P=m[C];k.unshift(T),null!=P&&k.unshift(P),null!=(T=y[C]);)P=m[C=T.id()];return{found:!0,distance:h[u],path:this.spawn(k),steps:E}}p[u]=!0;for(var S=l._private.edges,B=0;BP&&(f[C]=P,y[C]=T,m[C]=x),!a){var S=T*u+k;!a&&f[S]>P&&(f[S]=P,y[S]=k,m[S]=x)}}}for(var B=0;B1&&void 0!==arguments[1]?arguments[1]:i,r=[],a=m(e);;){if(null==a)return t.spawn();var o=y(a),l=o.edge,u=o.pred;if(r.unshift(a[0]),a.same(n)&&r.length>0)break;null!=l&&r.unshift(l),a=u}return s.spawn(r)},hasNegativeWeightCycle:p,negativeWeightCycles:v}}},Ft=Math.sqrt(2),Xt=function(e,t,n){0===n.length&&it("Karger-Stein must be run on a connected (sub)graph");for(var r=n[e],a=r[1],i=r[2],o=t[a],s=t[i],l=n,u=l.length-1;u>=0;u--){var c=l[u],d=c[1],h=c[2];(t[d]===o&&t[h]===s||t[d]===s&&t[h]===o)&&l.splice(u,1)}for(var f=0;fr;){var a=Math.floor(Math.random()*t.length);t=Xt(a,e,t),n--}return t},Yt={kargerStein:function(){var e=this,t=this.byGroup(),n=t.nodes,r=t.edges;r.unmergeBy(function(e){return e.isLoop()});var a=n.length,i=r.length,o=Math.ceil(Math.pow(Math.log(a)/Math.LN2,2)),s=Math.floor(a/Ft);if(!(a<2)){for(var l=[],u=0;u0?1:e<0?-1:0},Zt=function(e,t){return Math.sqrt($t(e,t))},$t=function(e,t){var n=t.x-e.x,r=t.y-e.y;return n*n+r*r},Qt=function(e){for(var t=e.length,n=0,r=0;r=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(null!=e.w&&null!=e.h&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}},rn=function(e,t){e.x1=Math.min(e.x1,t.x1),e.x2=Math.max(e.x2,t.x2),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,t.y1),e.y2=Math.max(e.y2,t.y2),e.h=e.y2-e.y1},an=function(e,t,n){e.x1=Math.min(e.x1,t),e.x2=Math.max(e.x2,t),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,n),e.y2=Math.max(e.y2,n),e.h=e.y2-e.y1},on=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e.x1-=t,e.x2+=t,e.y1-=t,e.y2+=t,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},sn=function(e){var t,n,r,a,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[0];if(1===i.length)t=n=r=a=i[0];else if(2===i.length)t=r=i[0],a=n=i[1];else if(4===i.length){var o=l(i,4);t=o[0],n=o[1],r=o[2],a=o[3]}return e.x1-=a,e.x2+=n,e.y1-=t,e.y2+=r,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},ln=function(e,t){e.x1=t.x1,e.y1=t.y1,e.x2=t.x2,e.y2=t.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1},un=function(e,t){return!(e.x1>t.x2)&&(!(t.x1>e.x2)&&(!(e.x2t.y2)&&!(t.y1>e.y2)))))))},cn=function(e,t,n){return e.x1<=t&&t<=e.x2&&e.y1<=n&&n<=e.y2},dn=function(e,t){return cn(e,t.x,t.y)},hn=function(e,t){return cn(e,t.x1,t.y1)&&cn(e,t.x2,t.y2)},fn=null!==(Dt=Math.hypot)&&void 0!==Dt?Dt:function(e,t){return Math.sqrt(e*e+t*t)};function pn(e,t,n,r,a,i){var o=function(e,t){if(e.length<3)throw new Error("Need at least 3 vertices");var n=function(e,t){return{x:e.x+t.x,y:e.y+t.y}},r=function(e,t){return{x:e.x-t.x,y:e.y-t.y}},a=function(e,t){return{x:e.x*t,y:e.y*t}},i=function(e,t){return e.x*t.y-e.y*t.x},o=function(e){var t=fn(e.x,e.y);return 0===t?{x:0,y:0}:{x:e.x/t,y:e.y/t}},s=function(e,t,o,s){var l=r(t,e),u=r(s,o),c=i(l,u);if(Math.abs(c)<1e-9)return n(e,a(l,.5));var d=i(r(o,e),u)/c;return n(e,a(l,d))},l=e.map(function(e){return{x:e.x,y:e.y}});(function(e){for(var t=0,n=0;n7&&void 0!==arguments[7]?arguments[7]:"auto",c="auto"===u?In(a,i):u,d=a/2,h=i/2,f=(c=Math.min(c,d,h))!==d,p=c!==h;if(f){var v=r-h-o;if((s=Sn(e,t,n,r,n-d+c-o,v,n+d-c+o,v,!1)).length>0)return s}if(p){var g=n+d+o;if((s=Sn(e,t,n,r,g,r-h+c-o,g,r+h-c+o,!1)).length>0)return s}if(f){var y=r+h+o;if((s=Sn(e,t,n,r,n-d+c-o,y,n+d-c+o,y,!1)).length>0)return s}if(p){var m=n-d-o;if((s=Sn(e,t,n,r,m,r-h+c-o,m,r+h-c+o,!1)).length>0)return s}var b=n-d+c,x=r-h+c;if((l=Cn(e,t,n,r,b,x,c+o)).length>0&&l[0]<=b&&l[1]<=x)return[l[0],l[1]];var w=n+d-c,E=r-h+c;if((l=Cn(e,t,n,r,w,E,c+o)).length>0&&l[0]>=w&&l[1]<=E)return[l[0],l[1]];var k=n+d-c,T=r+h-c;if((l=Cn(e,t,n,r,k,T,c+o)).length>0&&l[0]>=k&&l[1]>=T)return[l[0],l[1]];var C=n-d+c,P=r+h-c;return(l=Cn(e,t,n,r,C,P,c+o)).length>0&&l[0]<=C&&l[1]>=P?[l[0],l[1]]:[]},gn=function(e,t,n,r,a,i,o){var s=o,l=Math.min(n,a),u=Math.max(n,a),c=Math.min(r,i),d=Math.max(r,i);return l-s<=e&&e<=u+s&&c-s<=t&&t<=d+s},yn=function(e,t,n,r,a,i,o,s,l){var u=Math.min(n,o,a)-l,c=Math.max(n,o,a)+l,d=Math.min(r,s,i)-l,h=Math.max(r,s,i)+l;return!(ec||th)},mn=function(e,t,n,r,a,i,o,s){var l=[];!function(e,t,n,r,a){var i,o,s,l,u,c,d,h;0===e&&(e=1e-5),s=-27*(r/=e)+(t/=e)*(9*(n/=e)-t*t*2),i=(o=(3*n-t*t)/9)*o*o+(s/=54)*s,a[1]=0,d=t/3,i>0?(u=(u=s+Math.sqrt(i))<0?-Math.pow(-u,1/3):Math.pow(u,1/3),c=(c=s-Math.sqrt(i))<0?-Math.pow(-c,1/3):Math.pow(c,1/3),a[0]=-d+u+c,d+=(u+c)/2,a[4]=a[2]=-d,d=Math.sqrt(3)*(-c+u)/2,a[3]=d,a[5]=-d):(a[5]=a[3]=0,0===i?(h=s<0?-Math.pow(-s,1/3):Math.pow(s,1/3),a[0]=2*h-d,a[4]=a[2]=-(h+d)):(l=(o=-o)*o*o,l=Math.acos(s/Math.sqrt(l)),h=2*Math.sqrt(o),a[0]=-d+h*Math.cos(l/3),a[2]=-d+h*Math.cos((l+2*Math.PI)/3),a[4]=-d+h*Math.cos((l+4*Math.PI)/3)))}(1*n*n-4*n*a+2*n*o+4*a*a-4*a*o+o*o+r*r-4*r*i+2*r*s+4*i*i-4*i*s+s*s,9*n*a-3*n*n-3*n*o-6*a*a+3*a*o+9*r*i-3*r*r-3*r*s-6*i*i+3*i*s,3*n*n-6*n*a+n*o-n*e+2*a*a+2*a*e-o*e+3*r*r-6*r*i+r*s-r*t+2*i*i+2*i*t-s*t,1*n*a-n*n+n*e-a*e+r*i-r*r+r*t-i*t,l);for(var u=[],c=0;c<6;c+=2)Math.abs(l[c+1])<1e-7&&l[c]>=0&&l[c]<=1&&u.push(l[c]);u.push(1),u.push(0);for(var d,h,f,p=-1,v=0;v=0?fl?(e-a)*(e-a)+(t-i)*(t-i):u-d},xn=function(e,t,n){for(var r,a,i,o,s=0,l=0;l=e&&e>=i||r<=e&&e<=i))continue;(e-r)/(i-r)*(o-a)+a>t&&s++}return s%2!=0},wn=function(e,t,n,r,a,i,o,s,l){var u,c=new Array(n.length);null!=s[0]?(u=Math.atan(s[1]/s[0]),s[0]<0?u+=Math.PI/2:u=-u-Math.PI/2):u=s;for(var d,h=Math.cos(-u),f=Math.sin(-u),p=0;p0){var v=kn(c,-l);d=En(v)}else d=c;return xn(e,t,d)},En=function(e){for(var t,n,r,a,i,o,s,l,u=new Array(e.length/2),c=0;c=0&&p<=1&&g.push(p),v>=0&&v<=1&&g.push(v),0===g.length)return[];var y=g[0]*s[0]+e,m=g[0]*s[1]+t;return g.length>1?g[0]==g[1]?[y,m]:[y,m,g[1]*s[0]+e,g[1]*s[1]+t]:[y,m]},Pn=function(e,t,n){return t<=e&&e<=n||n<=e&&e<=t?e:e<=t&&t<=n||n<=t&&t<=e?t:n},Sn=function(e,t,n,r,a,i,o,s,l){var u=e-a,c=n-e,d=o-a,h=t-i,f=r-t,p=s-i,v=d*h-p*u,g=c*h-f*u,y=p*c-d*f;if(0!==y){var m=v/y,b=g/y,x=-.001;return x<=m&&m<=1.001&&x<=b&&b<=1.001||l?[e+m*c,t+m*f]:[]}return 0===v||0===g?Pn(e,n,o)===o?[o,s]:Pn(e,n,a)===a?[a,i]:Pn(a,o,n)===n?[n,r]:[]:[]},Bn=function(e,t,n,r,a){var i=[],o=r/2,s=a/2,l=t,u=n;i.push({x:l+o*e[0],y:u+s*e[1]});for(var c=1;c0){var m=kn(v,-s);u=En(m)}else u=v}else u=n;for(var b=0;bu&&(u=t)},d=function(e){return l[e]},h=0;h0?b.edgesTo(m)[0]:m.edgesTo(b)[0];var w=r(x);m=m.id(),u[m]>u[v]+w&&(u[m]=u[v]+w,h.nodes.indexOf(m)<0?h.push(m):h.updateItem(m),l[m]=0,n[m]=[]),u[m]==u[v]+w&&(l[m]=l[m]+l[v],n[m].push(v))}else for(var E=0;E0;){for(var P=t.pop(),S=0;S0&&o.push(n[s]);0!==o.length&&a.push(r.collection(o))}return a}(c,l,t,r);return b=function(e){for(var t=0;t5&&void 0!==arguments[5]?arguments[5]:nr,o=r,s=0;s=2?lr(e,t,n,0,ir,or):lr(e,t,n,0,ar)},squaredEuclidean:function(e,t,n){return lr(e,t,n,0,ir)},manhattan:function(e,t,n){return lr(e,t,n,0,ar)},max:function(e,t,n){return lr(e,t,n,-1/0,sr)}};function cr(e,t,n,r,a,i){var o;return o=G(e)?e:ur[e]||ur.euclidean,0===t&&G(e)?o(a,i):o(t,n,r,a,i)}ur["squared-euclidean"]=ur.squaredEuclidean,ur.squaredeuclidean=ur.squaredEuclidean;var dr=ht({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),hr=function(e){return dr(e)},fr=function(e,t,n,r,a){var i="kMedoids"!==a?function(e){return n[e]}:function(e){return r[e](n)},o=n,s=t;return cr(e,r.length,i,function(e){return r[e](t)},o,s)},pr=function(e,t,n){for(var r=n.length,a=new Array(r),i=new Array(r),o=new Array(t),s=null,l=0;ln)return!1}return!0},br=function(e,t,n){for(var r=0;ra&&(a=t[l][u],i=u);o[i].push(e[l])}for(var c=0;c=a.threshold||"dendrogram"===a.mode&&1===e.length)return!1;var f,p=t[o],v=t[r[o]];f="dendrogram"===a.mode?{left:p,right:v,key:p.key}:{value:p.value.concat(v.value),key:p.key},e[p.index]=f,e.splice(v.index,1),t[p.key]=f;for(var g=0;gn[v.key][y.key]&&(i=n[v.key][y.key])):"max"===a.linkage?(i=n[p.key][y.key],n[p.key][y.key]1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];arguments.length>3&&void 0!==arguments[3]&&!arguments[3]?(n0&&e.splice(0,t)):e=e.slice(t,n);for(var i=0,o=e.length-1;o>=0;o--){var s=e[o];a?isFinite(s)||(e[o]=-1/0,i++):e.splice(o,1)}r&&e.sort(function(e,t){return e-t});var l=e.length,u=Math.floor(l/2);return l%2!=0?e[u+1+i]:(e[u-1+i]+e[u+i])/2}(e):"mean"===t?function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=0,a=0,i=t;i1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=1/0,a=t;a1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=-1/0,a=t;ao&&(i=l,o=t[a*e+l])}i>0&&r.push(i)}for(var u=0;u=P?(S=P,P=D,B=_):D>S&&(S=D);for(var A=0;A0?1:0;k[E%u.minIterations*t+z]=O,L+=O}if(L>0&&(E>=u.minIterations-1||E==u.maxIterations-1)){for(var V=0,F=0;F0&&r.push(a);return r}(t,i,o),Y=function(e,t,n){for(var r=zr(e,t,n),a=0;al&&(s=u,l=c)}n[a]=i[s]}return zr(e,t,n)}(t,r,j),q={},W=0;W1||o>1)&&(u=!0),c[t]=[],e.outgoers().forEach(function(e){e.isEdge()&&c[t].push(e.id())})}else d[t]=[void 0,e.target().id()]}):l.forEach(function(e){var t=e.id();e.isNode()?(e.degree(!0)%2&&(n?r?u=!0:r=t:n=t),c[t]=[],e.connectedEdges().forEach(function(e){return c[t].push(e.id())})):d[t]=[e.source().id(),e.target().id()]});var h={found:!1,trail:void 0};if(u)return h;if(r&&n)if(s){if(a&&r!=a)return h;a=r}else{if(a&&r!=a&&n!=a)return h;a||(a=r)}else a||(a=l[0].id());var f=function(e){for(var t,n,r,a=e,i=[e];c[a].length;)t=c[a].shift(),n=d[t][0],a!=(r=d[t][1])?(c[r]=c[r].filter(function(e){return e!=t}),a=r):s||a==n||(c[n]=c[n].filter(function(e){return e!=t}),a=n),i.unshift(t),i.unshift(a);return i},p=[],v=[];for(v=f(a);1!=v.length;)0==c[v[0]].length?(p.unshift(l.getElementById(v.shift())),p.unshift(l.getElementById(v.shift()))):v=f(v.shift()).concat(v);for(var g in p.unshift(l.getElementById(v.shift())),c)if(c[g].length)return h;return h.found=!0,h.trail=this.spawn(p,!0),h}},jr=function(){var e=this,t={},n=0,r=0,a=[],i=[],o={},s=function(l,u,c){l===c&&(r+=1),t[u]={id:n,low:n++,cutVertex:!1};var d,h,f,p,v=e.getElementById(u).connectedEdges().intersection(e);0===v.size()?a.push(e.spawn(e.getElementById(u))):v.forEach(function(n){d=n.source().id(),h=n.target().id(),(f=d===u?h:d)!==c&&(p=n.id(),o[p]||(o[p]=!0,i.push({x:u,y:f,edge:n})),f in t?t[u].low=Math.min(t[u].low,t[f].id):(s(l,f,u),t[u].low=Math.min(t[u].low,t[f].low),t[u].id<=t[f].low&&(t[u].cutVertex=!0,function(n,r){for(var o=i.length-1,s=[],l=e.spawn();i[o].x!=n||i[o].y!=r;)s.push(i.pop().edge),o--;s.push(i.pop().edge),s.forEach(function(n){var r=n.connectedNodes().intersection(e);l.merge(n),r.forEach(function(n){var r=n.id(),a=n.connectedEdges().intersection(e);l.merge(n),t[r].cutVertex?l.merge(a.filter(function(e){return e.isLoop()})):l.merge(a)})}),a.push(l)}(u,f))))})};e.forEach(function(e){if(e.isNode()){var n=e.id();n in t||(r=0,s(n,n),t[n].cutVertex=r>1)}});var l=Object.keys(t).filter(function(e){return t[e].cutVertex}).map(function(t){return e.getElementById(t)});return{cut:e.spawn(l),components:a}},Yr=function(){var e=this,t={},n=0,r=[],a=[],i=e.spawn(e),o=function(s){if(a.push(s),t[s]={index:n,low:n++,explored:!1},e.getElementById(s).connectedEdges().intersection(e).forEach(function(e){var n=e.target().id();n!==s&&(n in t||o(n),t[n].explored||(t[s].low=Math.min(t[s].low,t[n].low)))}),t[s].index===t[s].low){for(var l=e.spawn();;){var u=a.pop();if(l.merge(e.getElementById(u)),t[u].low=t[s].index,t[u].explored=!0,u===s)break}var c=l.edgesWith(l),d=l.merge(c);r.push(d),i=i.difference(d)}};return e.forEach(function(e){if(e.isNode()){var n=e.id();n in t||o(n)}}),{cut:i,components:r}},qr={};[Et,Mt,Rt,Nt,zt,Vt,Yt,Vn,Xn,Yn,Wn,tr,Cr,Rr,Vr,Xr,{hopcroftTarjanBiconnected:jr,htbc:jr,htb:jr,hopcroftTarjanBiconnectedComponents:jr},{tarjanStronglyConnected:Yr,tsc:Yr,tscc:Yr,tarjanStronglyConnectedComponents:Yr}].forEach(function(e){be(qr,e)});var Wr=function(e){if(!(this instanceof Wr))return new Wr(e);this.id="Thenable/1.0.7",this.state=0,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},"function"==typeof e&&e.call(this,this.fulfill.bind(this),this.reject.bind(this))};Wr.prototype={fulfill:function(e){return Ur(this,1,"fulfillValue",e)},reject:function(e){return Ur(this,2,"rejectReason",e)},then:function(e,t){var n=this,r=new Wr;return n.onFulfilled.push(Gr(e,r,"fulfill")),n.onRejected.push(Gr(t,r,"reject")),Hr(n),r.proxy}};var Ur=function(e,t,n,r){return 0===e.state&&(e.state=t,e[n]=r,Hr(e)),e},Hr=function(e){1===e.state?Kr(e,"onFulfilled",e.fulfillValue):2===e.state&&Kr(e,"onRejected",e.rejectReason)},Kr=function(e,t,n){if(0!==e[t].length){var r=e[t];e[t]=[];var a=function(){for(var e=0;e0:void 0}},clearQueue:function(){return function(){var e=this,t=void 0!==e.length?e:[e];if(!(this._private.cy||this).styleEnabled())return this;for(var n=0;n-1}}(),a=function(){if(Wa)return qa;Wa=1;var e=Fi();return qa=function(t,n){var r=this.__data__,a=e(r,t);return a<0?(++this.size,r.push([t,n])):r[a][1]=n,this},qa}();function i(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t-1&&t%1==0&&t0&&this.spawn(r).updateStyle().emit("class"),t},addClass:function(e){return this.toggleClass(e,!0)},hasClass:function(e){var t=this[0];return null!=t&&t._private.classes.has(e)},toggleClass:function(e,t){Z(e)||(e=e.match(/\S+/g)||[]);for(var n=this,r=void 0===t,a=[],i=0,o=n.length;i0&&this.spawn(a).updateStyle().emit("class"),n},removeClass:function(e){return this.toggleClass(e,!1)},flashClass:function(e,t){var n=this;if(null==t)t=250;else if(0===t)return n;return n.addClass(e),setTimeout(function(){n.removeClass(e)},t),n}};Po.className=Po.classNames=Po.classes;var So={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:"\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'",number:fe,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};So.variable="(?:[\\w-.]|(?:\\\\"+So.metaChar+"))+",So.className="(?:[\\w-]|(?:\\\\"+So.metaChar+"))+",So.value=So.string+"|"+So.number,So.id=So.variable,function(){var e,t,n;for(e=So.comparatorOp.split("|"),n=0;n=0||"="!==t&&(So.comparatorOp+="|\\!"+t)}();var Bo=0,Do=1,_o=2,Ao=3,Mo=4,Ro=5,Io=6,No=7,Lo=8,zo=9,Oo=10,Vo=11,Fo=12,Xo=13,jo=14,Yo=15,qo=16,Wo=17,Uo=18,Ho=19,Ko=20,Go=[{selector:":selected",matches:function(e){return e.selected()}},{selector:":unselected",matches:function(e){return!e.selected()}},{selector:":selectable",matches:function(e){return e.selectable()}},{selector:":unselectable",matches:function(e){return!e.selectable()}},{selector:":locked",matches:function(e){return e.locked()}},{selector:":unlocked",matches:function(e){return!e.locked()}},{selector:":visible",matches:function(e){return e.visible()}},{selector:":hidden",matches:function(e){return!e.visible()}},{selector:":transparent",matches:function(e){return e.transparent()}},{selector:":grabbed",matches:function(e){return e.grabbed()}},{selector:":free",matches:function(e){return!e.grabbed()}},{selector:":removed",matches:function(e){return e.removed()}},{selector:":inside",matches:function(e){return!e.removed()}},{selector:":grabbable",matches:function(e){return e.grabbable()}},{selector:":ungrabbable",matches:function(e){return!e.grabbable()}},{selector:":animated",matches:function(e){return e.animated()}},{selector:":unanimated",matches:function(e){return!e.animated()}},{selector:":parent",matches:function(e){return e.isParent()}},{selector:":childless",matches:function(e){return e.isChildless()}},{selector:":child",matches:function(e){return e.isChild()}},{selector:":orphan",matches:function(e){return e.isOrphan()}},{selector:":nonorphan",matches:function(e){return e.isChild()}},{selector:":compound",matches:function(e){return e.isNode()?e.isParent():e.source().isParent()||e.target().isParent()}},{selector:":loop",matches:function(e){return e.isLoop()}},{selector:":simple",matches:function(e){return e.isSimple()}},{selector:":active",matches:function(e){return e.active()}},{selector:":inactive",matches:function(e){return!e.active()}},{selector:":backgrounding",matches:function(e){return e.backgrounding()}},{selector:":nonbackgrounding",matches:function(e){return!e.backgrounding()}}].sort(function(e,t){return function(e,t){return-1*me(e,t)}(e.selector,t.selector)}),Zo=function(){for(var e,t={},n=0;n0&&u.edgeCount>0)return st("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(u.edgeCount>1)return st("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;1===u.edgeCount&&st("The selector `"+e+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},toString:function(){if(null!=this.toStringCache)return this.toStringCache;for(var e=function(e){return null==e?"":e},t=function(t){return K(t)?'"'+t+'"':e(t)},n=function(e){return" "+e+" "},r=function(r,i){var o=r.type,s=r.value;switch(o){case Bo:var l=e(s);return l.substring(0,l.length-1);case Ao:var u=r.field,c=r.operator;return"["+u+n(e(c))+t(s)+"]";case Ro:var d=r.operator,h=r.field;return"["+e(d)+h+"]";case Mo:return"["+r.field+"]";case Io:var f=r.operator;return"[["+r.field+n(e(f))+t(s)+"]]";case No:return s;case Lo:return"#"+s;case zo:return"."+s;case Wo:case Yo:return a(r.parent,i)+n(">")+a(r.child,i);case Uo:case qo:return a(r.ancestor,i)+" "+a(r.descendant,i);case Ho:var p=a(r.left,i),v=a(r.subject,i),g=a(r.right,i);return p+(p.length>0?" ":"")+v+g;case Ko:return""}},a=function(e,t){return e.checks.reduce(function(n,a,i){return n+(t===e&&0===i?"$":"")+r(a,t)},"")},i="",o=0;o1&&o=0&&(t=t.replace("!",""),c=!0),t.indexOf("@")>=0&&(t=t.replace("@",""),u=!0),(o||l||u)&&(a=o||s?""+e:"",i=""+n),u&&(e=a=a.toLowerCase(),n=i=i.toLowerCase()),t){case"*=":r=a.indexOf(i)>=0;break;case"$=":r=a.indexOf(i,a.length-i.length)>=0;break;case"^=":r=0===a.indexOf(i);break;case"=":r=e===n;break;case">":d=!0,r=e>n;break;case">=":d=!0,r=e>=n;break;case"<":d=!0,r=e0;){var u=a.shift();t(u),i.add(u.id()),o&&r(a,i,u)}return e}function gs(e,t,n){if(n.isParent())for(var r=n._private.children,a=0;a1&&void 0!==arguments[1])||arguments[1],gs)},ps.forEachUp=function(e){return vs(this,e,!(arguments.length>1&&void 0!==arguments[1])||arguments[1],ys)},ps.forEachUpAndDown=function(e){return vs(this,e,!(arguments.length>1&&void 0!==arguments[1])||arguments[1],ms)},ps.ancestors=ps.parents,(ds=hs={data:To.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:To.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:To.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:To.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:To.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:To.removeData({field:"rscratch",triggerEvent:!1}),id:function(){var e=this[0];if(e)return e._private.data.id}}).attr=ds.data,ds.removeAttr=ds.removeData;var bs,xs,ws=hs,Es={};function ks(e){return function(t){var n=this;if(void 0===t&&(t=!0),0!==n.length&&n.isNode()&&!n.removed()){for(var r=0,a=n[0],i=a._private.edges,o=0;ot}),minIndegree:Ts("indegree",function(e,t){return et}),minOutdegree:Ts("outdegree",function(e,t){return et})}),be(Es,{totalDegree:function(e){for(var t=0,n=this.nodes(),r=0;r0,c=u;u&&(l=l[0]);var d=c?l.position():{x:0,y:0};return a={x:s.x-d.x,y:s.y-d.y},void 0===e?a:a[e]}for(var h=0;h0,g=v;v&&(p=p[0]);var y=g?p.position():{x:0,y:0};void 0!==t?f.position(e,t+y[e]):void 0!==a&&f.position({x:a.x+y.x,y:a.y+y.y})}}else if(!i)return;return this}},bs.modelPosition=bs.point=bs.position,bs.modelPositions=bs.points=bs.positions,bs.renderedPoint=bs.renderedPosition,bs.relativePoint=bs.relativePosition;var Ss,Bs,Ds=xs;Ss=Bs={},Bs.renderedBoundingBox=function(e){var t=this.boundingBox(e),n=this.cy(),r=n.zoom(),a=n.pan(),i=t.x1*r+a.x,o=t.x2*r+a.x,s=t.y1*r+a.y,l=t.y2*r+a.y;return{x1:i,x2:o,y1:s,y2:l,w:o-i,h:l-s}},Bs.dirtyCompoundBoundsCache=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.cy();return t.styleEnabled()&&t.hasCompoundNodes()?(this.forEachUp(function(t){if(t.isParent()){var n=t._private;n.compoundBoundsClean=!1,n.bbCache=null,e||t.emitAndNotify("bounds")}}),this):this},Bs.updateCompoundBounds=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.cy();if(!t.styleEnabled()||!t.hasCompoundNodes())return this;if(!e&&t.batching())return this;function n(e){if(e.isParent()){var t=e._private,n=e.children(),r="include"===e.pstyle("compound-sizing-wrt-labels").value,a={width:{val:e.pstyle("min-width").pfValue,left:e.pstyle("min-width-bias-left"),right:e.pstyle("min-width-bias-right")},height:{val:e.pstyle("min-height").pfValue,top:e.pstyle("min-height-bias-top"),bottom:e.pstyle("min-height-bias-bottom")}},i=n.boundingBox({includeLabels:r,includeOverlays:!1,useCache:!1}),o=t.position;0!==i.w&&0!==i.h||((i={w:e.pstyle("width").pfValue,h:e.pstyle("height").pfValue}).x1=o.x-i.w/2,i.x2=o.x+i.w/2,i.y1=o.y-i.h/2,i.y2=o.y+i.h/2);var s=a.width.left.value;"px"===a.width.left.units&&a.width.val>0&&(s=100*s/a.width.val);var l=a.width.right.value;"px"===a.width.right.units&&a.width.val>0&&(l=100*l/a.width.val);var u=a.height.top.value;"px"===a.height.top.units&&a.height.val>0&&(u=100*u/a.height.val);var c=a.height.bottom.value;"px"===a.height.bottom.units&&a.height.val>0&&(c=100*c/a.height.val);var d=y(a.width.val-i.w,s,l),h=d.biasDiff,f=d.biasComplementDiff,p=y(a.height.val-i.h,u,c),v=p.biasDiff,g=p.biasComplementDiff;t.autoPadding=function(e,t,n,r){if("%"!==n.units)return"px"===n.units?n.pfValue:0;switch(r){case"width":return e>0?n.pfValue*e:0;case"height":return t>0?n.pfValue*t:0;case"average":return e>0&&t>0?n.pfValue*(e+t)/2:0;case"min":return e>0&&t>0?e>t?n.pfValue*t:n.pfValue*e:0;case"max":return e>0&&t>0?e>t?n.pfValue*e:n.pfValue*t:0;default:return 0}}(i.w,i.h,e.pstyle("padding"),e.pstyle("padding-relative-to").value),t.autoWidth=Math.max(i.w,a.width.val),o.x=(-h+i.x1+i.x2+f)/2,t.autoHeight=Math.max(i.h,a.height.val),o.y=(-v+i.y1+i.y2+g)/2}function y(e,t,n){var r=0,a=0,i=t+n;return e>0&&i>0&&(r=t/i*e,a=n/i*e),{biasDiff:r,biasComplementDiff:a}}}for(var r=0;re.x2?r:e.x2,e.y1=ne.y2?a:e.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1)},Ms=function(e,t){return null==t?e:As(e,t.x1,t.y1,t.x2,t.y2)},Rs=function(e,t,n){return vt(e,t,n)},Is=function(e,t,n){if(!t.cy().headless()){var r,a,i=t._private,o=i.rstyle,s=o.arrowWidth/2;if("none"!==t.pstyle(n+"-arrow-shape").value){"source"===n?(r=o.srcX,a=o.srcY):"target"===n?(r=o.tgtX,a=o.tgtY):(r=o.midX,a=o.midY);var l=i.arrowBounds=i.arrowBounds||{},u=l[n]=l[n]||{};u.x1=r-s,u.y1=a-s,u.x2=r+s,u.y2=a+s,u.w=u.x2-u.x1,u.h=u.y2-u.y1,on(u,1),As(e,u.x1,u.y1,u.x2,u.y2)}}},Ns=function(e,t,n){if(!t.cy().headless()){var r;r=n?n+"-":"";var a=t._private,i=a.rstyle;if(t.pstyle(r+"label").strValue){var o,s,l,u,c=t.pstyle("text-halign"),d=t.pstyle("text-valign"),h=Rs(i,"labelWidth",n),f=Rs(i,"labelHeight",n),p=Rs(i,"labelX",n),v=Rs(i,"labelY",n),g=t.pstyle(r+"text-margin-x").pfValue,y=t.pstyle(r+"text-margin-y").pfValue,m=t.isEdge(),b=t.pstyle(r+"text-rotation"),x=t.pstyle("text-outline-width").pfValue,w=t.pstyle("text-border-width").pfValue/2,E=t.pstyle("text-background-padding").pfValue,k=f,T=h,C=T/2,P=k/2;if(m)o=p-C,s=p+C,l=v-P,u=v+P;else{switch(c.value){case"left":o=p-T,s=p;break;case"center":o=p-C,s=p+C;break;case"right":o=p,s=p+T}switch(d.value){case"top":l=v-k,u=v;break;case"center":l=v-P,u=v+P;break;case"bottom":l=v,u=v+k}}var S=g-Math.max(x,w)-E-2,B=g+Math.max(x,w)+E+2,D=y-Math.max(x,w)-E-2,_=y+Math.max(x,w)+E+2;o+=S,s+=B,l+=D,u+=_;var A=n||"main",M=a.labelBounds,R=M[A]=M[A]||{};R.x1=o,R.y1=l,R.x2=s,R.y2=u,R.w=s-o,R.h=u-l,R.leftPad=S,R.rightPad=B,R.topPad=D,R.botPad=_;var I=m&&"autorotate"===b.strValue,N=null!=b.pfValue&&0!==b.pfValue;if(I||N){var L=I?Rs(a.rstyle,"labelAngle",n):b.pfValue,z=Math.cos(L),O=Math.sin(L),V=(o+s)/2,F=(l+u)/2;if(!m){switch(c.value){case"left":V=s;break;case"right":V=o}switch(d.value){case"top":F=u;break;case"bottom":F=l}}var X=function(e,t){return{x:(e-=V)*z-(t-=F)*O+V,y:e*O+t*z+F}},j=X(o,l),Y=X(o,u),q=X(s,l),W=X(s,u);o=Math.min(j.x,Y.x,q.x,W.x),s=Math.max(j.x,Y.x,q.x,W.x),l=Math.min(j.y,Y.y,q.y,W.y),u=Math.max(j.y,Y.y,q.y,W.y)}var U=A+"Rot",H=M[U]=M[U]||{};H.x1=o,H.y1=l,H.x2=s,H.y2=u,H.w=s-o,H.h=u-l,As(e,o,l,s,u),As(a.labelBounds.all,o,l,s,u)}return e}},Ls=function(e,t){if(!t.cy().headless()){var n=t.pstyle("outline-opacity").value,r=t.pstyle("outline-width").value+t.pstyle("outline-offset").value;zs(e,t,n,r,"outside",r/2)}},zs=function(e,t,n,r,a,i){if(!(0===n||r<=0||"inside"===a)){var o=t.cy().renderer(),s=o.nodeShapes[o.getNodeShape(t)];if(s){var l=t.position(),u=l.x,c=l.y,d=t.width(),h=t.height();if(s.hasMiterBounds){"center"===a&&(r/=2);var f=s.miterBounds(u,c,d,h,r);Ms(e,f)}else null!=i&&i>0&&sn(e,[i,i,i,i])}}},Os=function(e,t){var n,r,a,i,o,s,l,u=e._private.cy,c=u.styleEnabled(),d=u.headless(),h=nn(),f=e._private,p=e.isNode(),v=e.isEdge(),g=f.rstyle,y=p&&c?e.pstyle("bounds-expansion").pfValue:[0],m=function(e){return"none"!==e.pstyle("display").value},b=!c||m(e)&&(!v||m(e.source())&&m(e.target()));if(b){var x=0;c&&t.includeOverlays&&0!==e.pstyle("overlay-opacity").value&&(x=e.pstyle("overlay-padding").value);var w=0;c&&t.includeUnderlays&&0!==e.pstyle("underlay-opacity").value&&(w=e.pstyle("underlay-padding").value);var E=Math.max(x,w),k=0;if(c&&(k=e.pstyle("width").pfValue/2),p&&t.includeNodes){var T=e.position();o=T.x,s=T.y;var C=e.outerWidth()/2,P=e.outerHeight()/2;As(h,n=o-C,a=s-P,r=o+C,i=s+P),c&&Ls(h,e),c&&t.includeOutlines&&!d&&Ls(h,e),c&&function(e,t){if(!t.cy().headless()){var n=t.pstyle("border-opacity").value,r=t.pstyle("border-width").pfValue,a=t.pstyle("border-position").value;zs(e,t,n,r,a)}}(h,e)}else if(v&&t.includeEdges)if(c&&!d){var S=e.pstyle("curve-style").strValue;if(n=Math.min(g.srcX,g.midX,g.tgtX),r=Math.max(g.srcX,g.midX,g.tgtX),a=Math.min(g.srcY,g.midY,g.tgtY),i=Math.max(g.srcY,g.midY,g.tgtY),As(h,n-=k,a-=k,r+=k,i+=k),"haystack"===S){var B=g.haystackPts;if(B&&2===B.length){if(n=B[0].x,a=B[0].y,n>(r=B[1].x)){var D=n;n=r,r=D}if(a>(i=B[1].y)){var _=a;a=i,i=_}As(h,n-k,a-k,r+k,i+k)}}else if("bezier"===S||"unbundled-bezier"===S||he(S,"segments")||he(S,"taxi")){var A;switch(S){case"bezier":case"unbundled-bezier":A=g.bezierPts;break;case"segments":case"taxi":case"round-segments":case"round-taxi":A=g.linePts}if(null!=A)for(var M=0;M(r=N.x)){var L=n;n=r,r=L}if((a=I.y)>(i=N.y)){var z=a;a=i,i=z}As(h,n-=k,a-=k,r+=k,i+=k)}if(c&&t.includeEdges&&v&&(Is(h,e,"mid-source"),Is(h,e,"mid-target"),Is(h,e,"source"),Is(h,e,"target")),c)if("yes"===e.pstyle("ghost").value){var O=e.pstyle("ghost-offset-x").pfValue,V=e.pstyle("ghost-offset-y").pfValue;As(h,h.x1+O,h.y1+V,h.x2+O,h.y2+V)}var F=f.bodyBounds=f.bodyBounds||{};ln(F,h),sn(F,y),on(F,1),c&&(n=h.x1,r=h.x2,a=h.y1,i=h.y2,As(h,n-E,a-E,r+E,i+E));var X=f.overlayBounds=f.overlayBounds||{};ln(X,h),sn(X,y),on(X,1);var j=f.labelBounds=f.labelBounds||{};null!=j.all?((l=j.all).x1=1/0,l.y1=1/0,l.x2=-1/0,l.y2=-1/0,l.w=0,l.h=0):j.all=nn(),c&&t.includeLabels&&(t.includeMainLabels&&Ns(h,e,null),v&&(t.includeSourceLabels&&Ns(h,e,"source"),t.includeTargetLabels&&Ns(h,e,"target")))}return h.x1=_s(h.x1),h.y1=_s(h.y1),h.x2=_s(h.x2),h.y2=_s(h.y2),h.w=_s(h.x2-h.x1),h.h=_s(h.y2-h.y1),h.w>0&&h.h>0&&b&&(sn(h,y),on(h,1)),h},Vs=function(e){var t=0,n=function(e){return(e?1:0)<0&&void 0!==arguments[0]?arguments[0]:il,t=arguments.length>1?arguments[1]:void 0,n=0;n=0;s--)o(s);return this},sl.removeAllListeners=function(){return this.removeListener("*")},sl.emit=sl.trigger=function(e,t,n){var r=this.listeners,a=r.length;return this.emitting++,Z(t)||(t=[t]),cl(this,function(e,i){null!=n&&(r=[{event:i.event,type:i.type,namespace:i.namespace,callback:n}],a=r.length);for(var o=function(){var n=r[s];if(n.type===i.type&&(!n.namespace||n.namespace===i.namespace||".*"===n.namespace)&&e.eventMatches(e.context,n,i)){var a=[i];null!=t&&function(e,t){for(var n=0;n1&&!r){var a=this.length-1,i=this[a],o=i._private.data.id;this[a]=void 0,this[e]=i,n.set(o,{ele:i,index:e})}return this.length--,this},unmergeOne:function(e){e=e[0];var t=this._private,n=e._private.data.id,r=t.map.get(n);if(!r)return this;var a=r.index;return this.unmergeAt(a),this},unmerge:function(e){var t=this._private.cy;if(!e)return this;if(e&&K(e)){var n=e;e=t.mutableElements().filter(n)}for(var r=0;r=0;t--){e(this[t])&&this.unmergeAt(t)}return this},map:function(e,t){for(var n=[],r=this,a=0;ar&&(r=s,n=o)}return{value:r,ele:n}},min:function(e,t){for(var n,r=1/0,a=this,i=0;i=0&&a1&&void 0!==arguments[1])||arguments[1],n=this[0],r=n.cy();if(r.styleEnabled()&&n){n._private.styleDirty&&(n._private.styleDirty=!1,r.style().apply(n));var a=n._private.style[e];return null!=a?a:t?r.style().getDefaultProperty(e):null}},numericStyle:function(e){var t=this[0];if(t.cy().styleEnabled()&&t){var n=t.pstyle(e);return void 0!==n.pfValue?n.pfValue:n.value}},numericStyleUnits:function(e){var t=this[0];if(t.cy().styleEnabled())return t?t.pstyle(e).units:void 0},renderedStyle:function(e){var t=this.cy();if(!t.styleEnabled())return this;var n=this[0];return n?t.style().getRenderedStyle(n,e):void 0},style:function(e,t){var n=this.cy();if(!n.styleEnabled())return this;var r=!1,a=n.style();if($(e)){var i=e;a.applyBypass(this,i,r),this.emitAndNotify("style")}else if(K(e)){if(void 0===t){var o=this[0];return o?a.getStylePropertyValue(o,e):void 0}a.applyBypass(this,e,t,r),this.emitAndNotify("style")}else if(void 0===e){var s=this[0];return s?a.getRawStyle(s):void 0}return this},removeStyle:function(e){var t=this.cy();if(!t.styleEnabled())return this;var n=!1,r=t.style(),a=this;if(void 0===e)for(var i=0;i0&&t.push(c[0]),t.push(s[0])}return this.spawn(t,!0).filter(e)},"neighborhood"),closedNeighborhood:function(e){return this.neighborhood().add(this).filter(e)},openNeighborhood:function(e){return this.neighborhood(e)}}),Nl.neighbourhood=Nl.neighborhood,Nl.closedNeighbourhood=Nl.closedNeighborhood,Nl.openNeighbourhood=Nl.openNeighborhood,be(Nl,{source:fs(function(e){var t,n=this[0];return n&&(t=n._private.source||n.cy().collection()),t&&e?t.filter(e):t},"source"),target:fs(function(e){var t,n=this[0];return n&&(t=n._private.target||n.cy().collection()),t&&e?t.filter(e):t},"target"),sources:Vl({attr:"source"}),targets:Vl({attr:"target"})}),be(Nl,{edgesWith:fs(Fl(),"edgesWith"),edgesTo:fs(Fl({thisIsSrc:!0}),"edgesTo")}),be(Nl,{connectedEdges:fs(function(e){for(var t=[],n=0;n0);return i},component:function(){var e=this[0];return e.cy().mutableElements().components(e)[0]}}),Nl.componentsOf=Nl.components;var jl=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(void 0!==e){var a=new yt,i=!1;if(t){if(t.length>0&&$(t[0])&&!te(t[0])){i=!0;for(var o=[],s=new bt,l=0,u=t.length;l0&&void 0!==arguments[0])||arguments[0],r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=this,i=a.cy(),o=i._private,s=[],l=[],u=0,c=a.length;u0){for(var I=e.length===a.length?a:new jl(i,e),N=0;N0&&void 0!==arguments[0])||arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this,r=[],a={},i=n._private.cy;function o(e){var n=a[e.id()];t&&e.removed()||n||(a[e.id()]=!0,e.isNode()?(r.push(e),function(e){for(var t=e._private.edges,n=0;n0&&(e?k.emitAndNotify("remove"):t&&k.emit("remove"));for(var T=0;T=.001?function(t,r){for(var a=0;a<4;++a){var i=h(r,e,n);if(0===i)return r;r-=(d(r,e,n)-t)/i}return r}(t,o):0===l?o:function(t,r,a){var i,o,s=0;do{(i=d(o=r+(a-r)/2,e,n)-t)>0?a=o:r=o}while(Math.abs(i)>1e-7&&++s<10);return o}(t,r,r+a)}var p=!1;function v(){p=!0,e===t&&n===r||function(){for(var t=0;t<11;++t)s[t]=d(t*a,e,n)}()}var g=function(a){return p||v(),e===t&&n===r?a:0===a?0:1===a?1:d(f(a),t,r)};g.getControlPoints=function(){return[{x:e,y:t},{x:n,y:r}]};var y="generateBezier("+[e,t,n,r]+")";return g.toString=function(){return y},g}var Ul=function(){function e(e){return-e.tension*e.x-e.friction*e.v}function t(t,n,r){var a={x:t.x+r.dx*n,v:t.v+r.dv*n,tension:t.tension,friction:t.friction};return{dx:a.v,dv:e(a)}}function n(n,r){var a={dx:n.v,dv:e(n)},i=t(n,.5*r,a),o=t(n,.5*r,i),s=t(n,r,o),l=1/6*(a.dx+2*(i.dx+o.dx)+s.dx),u=1/6*(a.dv+2*(i.dv+o.dv)+s.dv);return n.x=n.x+l*r,n.v=n.v+u*r,n}return function e(t,r,a){var i,o,s,l={x:-1,v:0,tension:null,friction:null},u=[0],c=0,d=1e-4;for(t=parseFloat(t)||500,r=parseFloat(r)||20,a=a||null,l.tension=t,l.friction=r,o=(i=null!==a)?(c=e(t,r))/a*.016:.016;s=n(s||l,o),u.push(1+s.x),c+=16,Math.abs(s.x)>d&&Math.abs(s.v)>d;);return i?function(e){return u[e*(u.length-1)|0]}:c}}(),Hl=function(e,t,n,r){var a=Wl(e,t,n,r);return function(e,t,n){return e+(t-e)*a(n)}},Kl={linear:function(e,t,n){return e+(t-e)*n},ease:Hl(.25,.1,.25,1),"ease-in":Hl(.42,0,1,1),"ease-out":Hl(0,0,.58,1),"ease-in-out":Hl(.42,0,.58,1),"ease-in-sine":Hl(.47,0,.745,.715),"ease-out-sine":Hl(.39,.575,.565,1),"ease-in-out-sine":Hl(.445,.05,.55,.95),"ease-in-quad":Hl(.55,.085,.68,.53),"ease-out-quad":Hl(.25,.46,.45,.94),"ease-in-out-quad":Hl(.455,.03,.515,.955),"ease-in-cubic":Hl(.55,.055,.675,.19),"ease-out-cubic":Hl(.215,.61,.355,1),"ease-in-out-cubic":Hl(.645,.045,.355,1),"ease-in-quart":Hl(.895,.03,.685,.22),"ease-out-quart":Hl(.165,.84,.44,1),"ease-in-out-quart":Hl(.77,0,.175,1),"ease-in-quint":Hl(.755,.05,.855,.06),"ease-out-quint":Hl(.23,1,.32,1),"ease-in-out-quint":Hl(.86,0,.07,1),"ease-in-expo":Hl(.95,.05,.795,.035),"ease-out-expo":Hl(.19,1,.22,1),"ease-in-out-expo":Hl(1,0,0,1),"ease-in-circ":Hl(.6,.04,.98,.335),"ease-out-circ":Hl(.075,.82,.165,1),"ease-in-out-circ":Hl(.785,.135,.15,.86),spring:function(e,t,n){if(0===n)return Kl.linear;var r=Ul(e,t,n);return function(e,t,n){return e+(t-e)*r(n)}},"cubic-bezier":Hl};function Gl(e,t,n,r,a){if(1===r)return n;if(t===n)return n;var i=a(t,n,r);return null==e||((e.roundValue||e.color)&&(i=Math.round(i)),void 0!==e.min&&(i=Math.max(i,e.min)),void 0!==e.max&&(i=Math.min(i,e.max))),i}function Zl(e,t){return null!=e.pfValue||null!=e.value?null==e.pfValue||null!=t&&"%"===t.type.units?e.value:e.pfValue:e}function $l(e,t,n,r,a){var i=null!=a?a.type:null;n<0?n=0:n>1&&(n=1);var o=Zl(e,a),s=Zl(t,a);if(Q(o)&&Q(s))return Gl(i,o,s,n,r);if(Z(o)&&Z(s)){for(var l=[],u=0;u0?("spring"===d&&h.push(o.duration),o.easingImpl=Kl[d].apply(null,h)):o.easingImpl=Kl[d]}var f,p=o.easingImpl;if(f=0===o.duration?1:(n-l)/o.duration,o.applying&&(f=o.progress),f<0?f=0:f>1&&(f=1),null==o.delay){var v=o.startPosition,g=o.position;if(g&&a&&!e.locked()){var y={};Jl(v.x,g.x)&&(y.x=$l(v.x,g.x,f,p)),Jl(v.y,g.y)&&(y.y=$l(v.y,g.y,f,p)),e.position(y)}var m=o.startPan,b=o.pan,x=i.pan,w=null!=b&&r;w&&(Jl(m.x,b.x)&&(x.x=$l(m.x,b.x,f,p)),Jl(m.y,b.y)&&(x.y=$l(m.y,b.y,f,p)),e.emit("pan"));var E=o.startZoom,k=o.zoom,T=null!=k&&r;T&&(Jl(E,k)&&(i.zoom=tn(i.minZoom,$l(E,k,f,p),i.maxZoom)),e.emit("zoom")),(w||T)&&e.emit("viewport");var C=o.style;if(C&&C.length>0&&a){for(var P=0;P=0;t--){(0,e[t])()}e.splice(0,e.length)},c=i.length-1;c>=0;c--){var d=i[c],h=d._private;h.stopped?(i.splice(c,1),h.hooked=!1,h.playing=!1,h.started=!1,u(h.frames)):(h.playing||h.applying)&&(h.playing&&h.applying&&(h.applying=!1),h.started||eu(0,d,e),Ql(t,d,e,n),h.applying&&(h.applying=!1),u(h.frames),null!=h.step&&h.step(e),d.completed()&&(i.splice(c,1),h.hooked=!1,h.playing=!1,h.started=!1,u(h.completes)),s=!0)}return n||0!==i.length||0!==o.length||r.push(t),s}for(var i=!1,o=0;o0?t.notify("draw",n):t.notify("draw")),n.unmerge(r),t.emit("step")}var nu={animate:To.animate(),animation:To.animation(),animated:To.animated(),clearQueue:To.clearQueue(),delay:To.delay(),delayAnimation:To.delayAnimation(),stop:To.stop(),addToAnimationPool:function(e){this.styleEnabled()&&this._private.aniEles.merge(e)},stopAnimationLoop:function(){this._private.animationsRunning=!1},startAnimationLoop:function(){var e=this;if(e._private.animationsRunning=!0,e.styleEnabled()){var t=e.renderer();t&&t.beforeRender?t.beforeRender(function(t,n){tu(n,e)},t.beforeRenderPriorities.animations):function t(){e._private.animationsRunning&&ze(function(n){tu(n,e),t()})}()}}},ru={qualifierCompare:function(e,t){return null==e||null==t?null==e&&null==t:e.sameText(t)},eventMatches:function(e,t,n){var r=t.qualifier;return null==r||e!==n.target&&te(n.target)&&r.matches(n.target)},addEventFields:function(e,t){t.cy=e,t.target=e},callbackContext:function(e,t,n){return null!=t.qualifier?n.target:e}},au=function(e){return K(e)?new ls(e):e},iu={createEmitter:function(){var e=this._private;return e.emitter||(e.emitter=new ol(ru,this)),this},emitter:function(){return this._private.emitter},on:function(e,t,n){return this.emitter().on(e,au(t),n),this},removeListener:function(e,t,n){return this.emitter().removeListener(e,au(t),n),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},one:function(e,t,n){return this.emitter().one(e,au(t),n),this},once:function(e,t,n){return this.emitter().one(e,au(t),n),this},emit:function(e,t){return this.emitter().emit(e,t),this},emitAndNotify:function(e,t){return this.emit(e),this.notify(e,t),this}};To.eventAliasesOn(iu);var ou={png:function(e){return e=e||{},this._private.renderer.png(e)},jpg:function(e){var t=this._private.renderer;return(e=e||{}).bg=e.bg||"#fff",t.jpg(e)}};ou.jpeg=ou.jpg;var su={layout:function(e){var t=this;if(null!=e)if(null!=e.name){var n=e.name,r=t.extension("layout",n);if(null!=r){var a;a=K(e.eles)?t.$(e.eles):null!=e.eles?e.eles:t.$();var i=new r(be({},e,{cy:t,eles:a}));return i}it("No such layout `"+n+"` found. Did you forget to import it and `cytoscape.use()` it?")}else it("A `name` must be specified to make a layout");else it("Layout options must be specified to make a layout")}};su.createLayout=su.makeLayout=su.layout;var lu={notify:function(e,t){var n=this._private;if(this.batching()){n.batchNotifications=n.batchNotifications||{};var r=n.batchNotifications[e]=n.batchNotifications[e]||this.collection();null!=t&&r.merge(t)}else if(n.notificationsEnabled){var a=this.renderer();!this.destroyed()&&a&&a.notify(e,t)}},notifications:function(e){var t=this._private;return void 0===e?t.notificationsEnabled:(t.notificationsEnabled=!!e,this)},noNotifications:function(e){this.notifications(!1),e(),this.notifications(!0)},batching:function(){return this._private.batchCount>0},startBatch:function(){var e=this._private;return null==e.batchCount&&(e.batchCount=0),0===e.batchCount&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},endBatch:function(){var e=this._private;if(0===e.batchCount)return this;if(e.batchCount--,0===e.batchCount){e.batchStyleEles.updateStyle();var t=this.renderer();Object.keys(e.batchNotifications).forEach(function(n){var r=e.batchNotifications[n];r.empty()?t.notify(n):t.notify(n,r)})}return this},batch:function(e){return this.startBatch(),e(),this.endBatch(),this},batchData:function(e){var t=this;return this.batch(function(){for(var n=Object.keys(e),r=0;r0;)t.removeChild(t.childNodes[0]);e._private.renderer=null,e.mutableElements().forEach(function(e){var t=e._private;t.rscratch={},t.rstyle={},t.animation.current=[],t.animation.queue=[]})},onRender:function(e){return this.on("render",e)},offRender:function(e){return this.off("render",e)}};cu.invalidateDimensions=cu.resize;var du={collection:function(e,t){return K(e)?this.$(e):ee(e)?e.collection():Z(e)?(t||(t={}),new jl(this,e,t.unique,t.removed)):new jl(this)},nodes:function(e){var t=this.$(function(e){return e.isNode()});return e?t.filter(e):t},edges:function(e){var t=this.$(function(e){return e.isEdge()});return e?t.filter(e):t},$:function(e){var t=this._private.elements;return e?t.filter(e):t.spawnSelf()},mutableElements:function(){return this._private.elements}};du.elements=du.filter=du.$;var hu={},fu="t";hu.apply=function(e){for(var t=this,n=t._private.cy.collection(),r=0;r0;if(h||d&&f){var p=void 0;h&&f||h?p=u.properties:f&&(p=u.mappedProperties);for(var v=0;v1&&(g=1),s.color){var w=a.valueMin[0],E=a.valueMax[0],k=a.valueMin[1],T=a.valueMax[1],C=a.valueMin[2],P=a.valueMax[2],S=null==a.valueMin[3]?1:a.valueMin[3],B=null==a.valueMax[3]?1:a.valueMax[3],D=[Math.round(w+(E-w)*g),Math.round(k+(T-k)*g),Math.round(C+(P-C)*g),Math.round(S+(B-S)*g)];n={bypass:a.bypass,name:a.name,value:D,strValue:"rgb("+D[0]+", "+D[1]+", "+D[2]+")"}}else{if(!s.number)return!1;var _=a.valueMin+(a.valueMax-a.valueMin)*g;n=this.parse(a.name,_,a.bypass,h)}if(!n)return v(),!1;n.mapping=a,a=n;break;case o.data:for(var A=a.field.split("."),M=d.data,R=0;R0&&i>0){for(var s={},l=!1,u=0;u0?e.delayAnimation(o).play().promise().then(t):t()}).then(function(){return e.animation({style:s,duration:i,easing:e.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){n.removeBypasses(e,a),e.emitAndNotify("style"),r.transitioning=!1})}else r.transitioning&&(this.removeBypasses(e,a),e.emitAndNotify("style"),r.transitioning=!1)},hu.checkTrigger=function(e,t,n,r,a,i){var o=this.properties[t],s=a(o);e.removed()||null!=s&&s(n,r,e)&&i(o)},hu.checkZOrderTrigger=function(e,t,n,r){var a=this;this.checkTrigger(e,t,n,r,function(e){return e.triggersZOrder},function(){a._private.cy.notify("zorder",e)})},hu.checkBoundsTrigger=function(e,t,n,r){this.checkTrigger(e,t,n,r,function(e){return e.triggersBounds},function(t){e.dirtyCompoundBoundsCache(),e.dirtyBoundingBoxCache()})},hu.checkConnectedEdgesBoundsTrigger=function(e,t,n,r){this.checkTrigger(e,t,n,r,function(e){return e.triggersBoundsOfConnectedEdges},function(t){e.connectedEdges().forEach(function(e){e.dirtyBoundingBoxCache()})})},hu.checkParallelEdgesBoundsTrigger=function(e,t,n,r){this.checkTrigger(e,t,n,r,function(e){return e.triggersBoundsOfParallelEdges},function(t){e.parallelEdges().forEach(function(e){e.dirtyBoundingBoxCache()})})},hu.checkTriggers=function(e,t,n,r){e.dirtyStyleCache(),this.checkZOrderTrigger(e,t,n,r),this.checkBoundsTrigger(e,t,n,r),this.checkConnectedEdgesBoundsTrigger(e,t,n,r),this.checkParallelEdgesBoundsTrigger(e,t,n,r)};var pu={applyBypass:function(e,t,n,r){var a=[];if("*"===t||"**"===t){if(void 0!==n)for(var i=0;it.length?i.substr(t.length):""}function s(){n=n.length>r.length?n.substr(r.length):""}for(i=i.replace(/[/][*](\s|.)+?[*][/]/g,"");;){if(i.match(/^\s*$/))break;var l=i.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!l){st("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+i);break}t=l[0];var u=l[1];if("core"!==u)if(new ls(u).invalid){st("Skipping parsing of block: Invalid selector found in string stylesheet: "+u),o();continue}var c=l[2],d=!1;n=c;for(var h=[];;){if(n.match(/^\s*$/))break;var f=n.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!f){st("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+c),d=!0;break}r=f[0];var p=f[1],v=f[2];if(this.properties[p])a.parse(p,v)?(h.push({name:p,val:v}),s()):(st("Skipping property: Invalid property definition in: "+r),s());else st("Skipping property: Invalid property name in: "+r),s()}if(d){o();break}a.selector(u);for(var g=0;g=7&&"d"===t[0]&&(u=new RegExp(s.data.regex).exec(t))){if(n)return!1;var h=s.data;return{name:e,value:u,strValue:""+t,mapped:h,field:u[1],bypass:n}}if(t.length>=10&&"m"===t[0]&&(c=new RegExp(s.mapData.regex).exec(t))){if(n)return!1;if(d.multiple)return!1;var f=s.mapData;if(!d.color&&!d.number)return!1;var p=this.parse(e,c[4]);if(!p||p.mapped)return!1;var v=this.parse(e,c[5]);if(!v||v.mapped)return!1;if(p.pfValue===v.pfValue||p.strValue===v.strValue)return st("`"+e+": "+t+"` is not a valid mapper because the output range is zero; converting to `"+e+": "+p.strValue+"`"),this.parse(e,p.strValue);if(d.color){var g=p.value,y=v.value;if(!(g[0]!==y[0]||g[1]!==y[1]||g[2]!==y[2]||g[3]!==y[3]&&(null!=g[3]&&1!==g[3]||null!=y[3]&&1!==y[3])))return!1}return{name:e,value:c,strValue:""+t,mapped:f,field:c[1],fieldMin:parseFloat(c[2]),fieldMax:parseFloat(c[3]),valueMin:p.value,valueMax:v.value,bypass:n}}}if(d.multiple&&"multiple"!==r){var m;if(m=l?t.split(/\s+/):Z(t)?t:[t],d.evenMultiple&&m.length%2!=0)return null;for(var b=[],x=[],w=[],E="",k=!1,T=0;T0?" ":"")+C.strValue}return d.validate&&!d.validate(b,x)?null:d.singleEnum&&k?1===b.length&&K(b[0])?{name:e,value:b[0],strValue:b[0],bypass:n}:null:{name:e,value:b,pfValue:w,strValue:E,bypass:n,units:x}}var P,S,B=function(){for(var r=0;rd.max||d.strictMax&&t===d.max))return null;var R={name:e,value:t,strValue:""+t+(D||""),units:D,bypass:n};return d.unitless||"px"!==D&&"em"!==D?R.pfValue=t:R.pfValue="px"!==D&&D?this.getEmSizeInPixels()*t:t,"ms"!==D&&"s"!==D||(R.pfValue="ms"===D?t:1e3*t),"deg"!==D&&"rad"!==D||(R.pfValue="rad"===D?t:(P=t,Math.PI*P/180)),"%"===D&&(R.pfValue=t/100),R}if(d.propList){var I=[],N=""+t;if("none"===N);else{for(var L=N.split(/\s*,\s*|\s+/),z=0;z0&&l>0&&!isNaN(n.w)&&!isNaN(n.h)&&n.w>0&&n.h>0)return{zoom:o=(o=(o=Math.min((s-2*t)/n.w,(l-2*t)/n.h))>this._private.maxZoom?this._private.maxZoom:o)=n.minZoom&&(n.maxZoom=t),this},minZoom:function(e){return void 0===e?this._private.minZoom:this.zoomRange({min:e})},maxZoom:function(e){return void 0===e?this._private.maxZoom:this.zoomRange({max:e})},getZoomedViewport:function(e){var t,n,r=this._private,a=r.pan,i=r.zoom,o=!1;if(r.zoomingEnabled||(o=!0),Q(e)?n=e:$(e)&&(n=e.level,null!=e.position?t=qt(e.position,i,a):null!=e.renderedPosition&&(t=e.renderedPosition),null==t||r.panningEnabled||(o=!0)),n=(n=n>r.maxZoom?r.maxZoom:n)t.maxZoom||!t.zoomingEnabled?i=!0:(t.zoom=s,a.push("zoom"))}if(r&&(!i||!e.cancelOnFailedZoom)&&t.panningEnabled){var l=e.pan;Q(l.x)&&(t.pan.x=l.x,o=!1),Q(l.y)&&(t.pan.y=l.y,o=!1),o||a.push("pan")}return a.length>0&&(a.push("viewport"),this.emit(a.join(" ")),this.notify("viewport")),this},center:function(e){var t=this.getCenterPan(e);return t&&(this._private.pan=t,this.emit("pan viewport"),this.notify("viewport")),this},getCenterPan:function(e,t){if(this._private.panningEnabled){if(K(e)){var n=e;e=this.mutableElements().filter(n)}else ee(e)||(e=this.mutableElements());if(0!==e.length){var r=e.boundingBox(),a=this.width(),i=this.height();return{x:(a-(t=void 0===t?this._private.zoom:t)*(r.x1+r.x2))/2,y:(i-t*(r.y1+r.y2))/2}}}},reset:function(){return this._private.panningEnabled&&this._private.zoomingEnabled?(this.viewport({pan:{x:0,y:0},zoom:1}),this):this},invalidateSize:function(){this._private.sizeCache=null},size:function(){var e,t,n=this._private,r=n.container,a=this;return n.sizeCache=n.sizeCache||(r?(e=a.window().getComputedStyle(r),t=function(t){return parseFloat(e.getPropertyValue(t))},{width:r.clientWidth-t("padding-left")-t("padding-right"),height:r.clientHeight-t("padding-top")-t("padding-bottom")}):{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var e=this._private.pan,t=this._private.zoom,n=this.renderedExtent(),r={x1:(n.x1-e.x)/t,x2:(n.x2-e.x)/t,y1:(n.y1-e.y)/t,y2:(n.y2-e.y)/t};return r.w=r.x2-r.x1,r.h=r.y2-r.y1,r},renderedExtent:function(){var e=this.width(),t=this.height();return{x1:0,y1:0,x2:e,y2:t,w:e,h:t}},multiClickDebounceTime:function(e){return e?(this._private.multiClickDebounceTime=e,this):this._private.multiClickDebounceTime}};Tu.centre=Tu.center,Tu.autolockNodes=Tu.autolock,Tu.autoungrabifyNodes=Tu.autoungrabify;var Cu={data:To.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:To.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:To.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:To.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};Cu.attr=Cu.data,Cu.removeAttr=Cu.removeData;var Pu=function(e){var t=this,n=(e=be({},e)).container;n&&!J(n)&&J(n[0])&&(n=n[0]);var r=n?n._cyreg:null;(r=r||{})&&r.cy&&(r.cy.destroy(),r={});var a=r.readies=r.readies||[];n&&(n._cyreg=r),r.cy=t;var i=void 0!==f&&void 0!==n&&!e.headless,o=e;o.layout=be({name:i?"grid":"null"},o.layout),o.renderer=be({name:i?"canvas":"null"},o.renderer);var s=function(e,t,n){return void 0!==t?t:void 0!==n?n:e},l=this._private={container:n,ready:!1,options:o,elements:new jl(this),listeners:[],aniEles:new jl(this),data:o.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:s(!0,o.zoomingEnabled),userZoomingEnabled:s(!0,o.userZoomingEnabled),panningEnabled:s(!0,o.panningEnabled),userPanningEnabled:s(!0,o.userPanningEnabled),boxSelectionEnabled:s(!0,o.boxSelectionEnabled),autolock:s(!1,o.autolock,o.autolockNodes),autoungrabify:s(!1,o.autoungrabify,o.autoungrabifyNodes),autounselectify:s(!1,o.autounselectify),styleEnabled:void 0===o.styleEnabled?i:o.styleEnabled,zoom:Q(o.zoom)?o.zoom:1,pan:{x:$(o.pan)&&Q(o.pan.x)?o.pan.x:0,y:$(o.pan)&&Q(o.pan.y)?o.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:s(250,o.multiClickDebounceTime)};this.createEmitter(),this.selectionType(o.selectionType),this.zoomRange({min:o.minZoom,max:o.maxZoom});l.styleEnabled&&t.setStyle([]);var u=be({},o,o.renderer);t.initRenderer(u);!function(e,t){if(e.some(oe))return $r.all(e).then(t);t(e)}([o.style,o.elements],function(e){var n=e[0],i=e[1];l.styleEnabled&&t.style().append(n),function(e,n,r){t.notifications(!1);var a=t.mutableElements();a.length>0&&a.remove(),null!=e&&($(e)||Z(e))&&t.add(e),t.one("layoutready",function(e){t.notifications(!0),t.emit(e),t.one("load",n),t.emitAndNotify("load")}).one("layoutstop",function(){t.one("done",r),t.emit("done")});var i=be({},t._private.options.layout);i.eles=t.elements(),t.layout(i).run()}(i,function(){t.startAnimationLoop(),l.ready=!0,G(o.ready)&&t.on("ready",o.ready);for(var e=0;e0,l=!!t.boundingBox,u=nn(l?t.boundingBox:structuredClone(n.extent()));if(ee(t.roots))e=t.roots;else if(Z(t.roots)){for(var c=[],d=0;d0;){var D=B(),_=T(D,P);if(_)D.outgoers().filter(function(e){return e.isNode()&&r.has(e)}).forEach(S);else if(null===_){st("Detected double maximal shift for node `"+D.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}var A=0;if(t.avoidOverlap)for(var M=0;M0&&y[0].length<=3?i/2:0),s=2*Math.PI/y[r].length*a;return 0===r&&1===y[0].length&&(o=1),{x:W+o*Math.cos(s),y:U+o*Math.sin(s)}}var c=y[r].length,d=Math.max(1===c?0:l?(u.w-2*t.padding-H.w)/((t.grid?$:c)-1):(u.w-2*t.padding-H.w)/((t.grid?$:c)+1),A);return{x:W+(a+1-(c+1)/2)*d,y:U+(r+1-(V+1)/2)*G}}(e),u,Q[t.direction])}),this};var Ru={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function Iu(e){this.options=be({},Ru,e)}Iu.prototype.run=function(){var e=this.options,t=e,n=e.cy,r=t.eles,a=void 0!==t.counterclockwise?!t.counterclockwise:t.clockwise,i=r.nodes().not(":parent");t.sort&&(i=i.sort(t.sort));for(var o,s=nn(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()}),l=s.x1+s.w/2,u=s.y1+s.h/2,c=(void 0===t.sweep?2*Math.PI-2*Math.PI/i.length:t.sweep)/Math.max(1,i.length-1),d=0,h=0;h1&&t.avoidOverlap){d*=1.75;var g=Math.cos(c)-Math.cos(0),y=Math.sin(c)-Math.sin(0),m=Math.sqrt(d*d/(g*g+y*y));o=Math.max(m,o)}return r.nodes().layoutPositions(this,t,function(e,n){var r=t.startAngle+n*c*(a?1:-1),i=o*Math.cos(r),s=o*Math.sin(r);return{x:l+i,y:u+s}}),this};var Nu,Lu={fit:!0,padding:30,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(e){return e.degree()},levelWidth:function(e){return e.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function zu(e){this.options=be({},Lu,e)}zu.prototype.run=function(){for(var e=this.options,t=e,n=void 0!==t.counterclockwise?!t.counterclockwise:t.clockwise,r=e.cy,a=t.eles,i=a.nodes().not(":parent"),o=nn(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),s=o.x1+o.w/2,l=o.y1+o.h/2,u=[],c=0,d=0;d0)Math.abs(m[0].value-x.value)>=g&&(m=[],y.push(m));m.push(x)}var w=c+t.minNodeSpacing;if(!t.avoidOverlap){var E=y.length>0&&y[0].length>1,k=(Math.min(o.w,o.h)/2-w)/(y.length+E?1:0);w=Math.min(w,k)}for(var T=0,C=0;C1&&t.avoidOverlap){var D=Math.cos(B)-Math.cos(0),_=Math.sin(B)-Math.sin(0),A=Math.sqrt(w*w/(D*D+_*_));T=Math.max(A,T)}P.r=T,T+=w}if(t.equidistant){for(var M=0,R=0,I=0;I=e.numIter)&&(Uu(r,e),r.temperature=r.temperature*e.coolingFactor,!(r.temperature=e.animationThreshold&&i(),ze(c)):(ac(r,e),s())};c()}else{for(;u;)u=o(l),l++;ac(r,e),s()}return this},Vu.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this},Vu.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var Fu=function(e,t,n){for(var r=n.eles.edges(),a=n.eles.nodes(),i=nn(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()}),o={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:a.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:r.size(),temperature:n.initialTemp,clientWidth:i.w,clientHeight:i.h,boundingBox:i},s=n.eles.components(),l={},u=0;u0){o.graphSet.push(w);for(u=0;ur.count?0:r.graph},ju=function(e,t,n,r){var a=r.graphSet[n];if(-10)var s=(u=r.nodeOverlap*o)*a/(v=Math.sqrt(a*a+i*i)),l=u*i/v;else{var u,c=$u(e,a,i),d=$u(t,-1*a,-1*i),h=d.x-c.x,f=d.y-c.y,p=h*h+f*f,v=Math.sqrt(p);s=(u=(e.nodeRepulsion+t.nodeRepulsion)/p)*h/v,l=u*f/v}e.isLocked||(e.offsetX-=s,e.offsetY-=l),t.isLocked||(t.offsetX+=s,t.offsetY+=l)}},Zu=function(e,t,n,r){if(n>0)var a=e.maxX-t.minX;else a=t.maxX-e.minX;if(r>0)var i=e.maxY-t.minY;else i=t.maxY-e.minY;return a>=0&&i>=0?Math.sqrt(a*a+i*i):0},$u=function(e,t,n){var r=e.positionX,a=e.positionY,i=e.height||1,o=e.width||1,s=n/t,l=i/o,u={};return 0===t&&0n?(u.x=r,u.y=a+i/2,u):0t&&-1*l<=s&&s<=l?(u.x=r-o/2,u.y=a-o*n/2/t,u):0=l)?(u.x=r+i*t/2/n,u.y=a+i/2,u):0>n&&(s<=-1*l||s>=l)?(u.x=r-i*t/2/n,u.y=a-i/2,u):u},Qu=function(e,t){for(var n=0;n1){var p=t.gravity*d/f,v=t.gravity*h/f;c.offsetX+=p,c.offsetY+=v}}}}},ec=function(e,t){var n=[],r=0,a=-1;for(n.push.apply(n,e.graphSet[0]),a+=e.graphSet[0].length;r<=a;){var i=n[r++],o=e.idToIndex[i],s=e.layoutNodes[o],l=s.children;if(0n)var a={x:n*e/r,y:n*t/r};else a={x:e,y:t};return a},rc=function(e,t){var n=e.parentId;if(null!=n){var r=t.layoutNodes[t.idToIndex[n]],a=!1;return(null==r.maxX||e.maxX+r.padRight>r.maxX)&&(r.maxX=e.maxX+r.padRight,a=!0),(null==r.minX||e.minX-r.padLeftr.maxY)&&(r.maxY=e.maxY+r.padBottom,a=!0),(null==r.minY||e.minY-r.padTopp&&(d+=f+t.componentSpacing,c=0,h=0,f=0)}}},ic={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:function(e){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function oc(e){this.options=be({},ic,e)}oc.prototype.run=function(){var e=this.options,t=e,n=e.cy,r=t.eles,a=r.nodes().not(":parent");t.sort&&(a=a.sort(t.sort));var i=nn(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()});if(0===i.h||0===i.w)r.nodes().layoutPositions(this,t,function(e){return{x:i.x1,y:i.y1}});else{var o=a.size(),s=Math.sqrt(o*i.h/i.w),l=Math.round(s),u=Math.round(i.w/i.h*s),c=function(e){if(null==e)return Math.min(l,u);Math.min(l,u)==l?l=e:u=e},d=function(e){if(null==e)return Math.max(l,u);Math.max(l,u)==l?l=e:u=e},h=t.rows,f=null!=t.cols?t.cols:t.columns;if(null!=h&&null!=f)l=h,u=f;else if(null!=h&&null==f)l=h,u=Math.ceil(o/l);else if(null==h&&null!=f)u=f,l=Math.ceil(o/u);else if(u*l>o){var p=c(),v=d();(p-1)*v>=o?c(p-1):(v-1)*p>=o&&d(v-1)}else for(;u*l=o?d(y+1):c(g+1)}var m=i.w/u,b=i.h/l;if(t.condense&&(m=0,b=0),t.avoidOverlap)for(var x=0;x=u&&(A=0,_++)},R={},I=0;I(r=bn(e,t,x[w],x[w+1],x[w+2],x[w+3])))return g(n,r),!0}else if("bezier"===i.edgeType||"multibezier"===i.edgeType||"self"===i.edgeType||"compound"===i.edgeType)for(x=i.allpts,w=0;w+5(r=mn(e,t,x[w],x[w+1],x[w+2],x[w+3],x[w+4],x[w+5])))return g(n,r),!0;m=m||a.source,b=b||a.target;var E=o.getArrowWidth(l,c),k=[{name:"source",x:i.arrowStartX,y:i.arrowStartY,angle:i.srcArrowAngle},{name:"target",x:i.arrowEndX,y:i.arrowEndY,angle:i.tgtArrowAngle},{name:"mid-source",x:i.midX,y:i.midY,angle:i.midsrcArrowAngle},{name:"mid-target",x:i.midX,y:i.midY,angle:i.midtgtArrowAngle}];for(w=0;w0&&(y(m),y(b))}function b(e,t,n){return vt(e,t,n)}function x(n,r){var a,i=n._private,o=p;a=r?r+"-":"",n.boundingBox();var s=i.labelBounds[r||"main"],l=n.pstyle(a+"label").value;if("yes"===n.pstyle("text-events").strValue&&l){var u=b(i.rscratch,"labelX",r),c=b(i.rscratch,"labelY",r),d=b(i.rscratch,"labelAngle",r),h=n.pstyle(a+"text-margin-x").pfValue,f=n.pstyle(a+"text-margin-y").pfValue,v=s.x1-o-h,y=s.x2+o-h,m=s.y1-o-f,x=s.y2+o-f;if(d){var w=Math.cos(d),E=Math.sin(d),k=function(e,t){return{x:(e-=u)*w-(t-=c)*E+u,y:e*E+t*w+c}},T=k(v,m),C=k(v,x),P=k(y,m),S=k(y,x),B=[T.x+h,T.y+f,P.x+h,P.y+f,S.x+h,S.y+f,C.x+h,C.y+f];if(xn(e,t,B))return g(n),!0}else if(cn(s,e,t))return g(n),!0}}n&&(l=l.interactive);for(var w=l.length-1;w>=0;w--){var E=l[w];E.isNode()?y(E)||x(E):m(E)||x(E)||x(E,"source")||x(E,"target")}return u},getAllInBox:function(e,t,n,r){var a=this.getCachedZSortedEles().interactive,i=2/this.cy.zoom(),o=[],s=Math.min(e,n),u=Math.max(e,n),c=Math.min(t,r),d=Math.max(t,r),h=nn({x1:e=s,y1:t=c,x2:n=u,y2:r=d}),f=[{x:h.x1,y:h.y1},{x:h.x2,y:h.y1},{x:h.x2,y:h.y2},{x:h.x1,y:h.y2}],p=[[f[0],f[1]],[f[1],f[2]],[f[2],f[3]],[f[3],f[0]]];function v(e,t,n){return vt(e,t,n)}function g(e,t){var n=e._private,r=i;e.boundingBox();var a=n.labelBounds.main;if(!a)return null;var o=v(n.rscratch,"labelX",t),s=v(n.rscratch,"labelY",t),l=v(n.rscratch,"labelAngle",t),u=e.pstyle("text-margin-x").pfValue,c=e.pstyle("text-margin-y").pfValue,d=a.x1-r-u,h=a.x2+r-u,f=a.y1-r-c,p=a.y2+r-c;if(l){var g=Math.cos(l),y=Math.sin(l),m=function(e,t){return{x:(e-=o)*g-(t-=s)*y+o,y:e*y+t*g+s}};return[m(d,f),m(h,f),m(h,p),m(d,p)]}return[{x:d,y:f},{x:h,y:f},{x:h,y:p},{x:d,y:p}]}function y(e,t,n,r){function a(e,t,n){return(n.y-e.y)*(t.x-e.x)>(t.y-e.y)*(n.x-e.x)}return a(e,n,r)!==a(t,n,r)&&a(e,t,n)!==a(e,t,r)}for(var m=0;m0?-(Math.PI-i.ang):Math.PI+i.ang),Vc(t,n,Oc),Ec=zc.nx*Oc.ny-zc.ny*Oc.nx,kc=zc.nx*Oc.nx-zc.ny*-Oc.ny,Pc=Math.asin(Math.max(-1,Math.min(1,Ec))),Math.abs(Pc)<1e-6)return xc=t.x,wc=t.y,void(Bc=_c=0);Tc=1,Cc=!1,kc<0?Pc<0?Pc=Math.PI+Pc:(Pc=Math.PI-Pc,Tc=-1,Cc=!0):Pc>0&&(Tc=-1,Cc=!0),_c=void 0!==t.radius?t.radius:r,Sc=Pc/2,Ac=Math.min(zc.len/2,Oc.len/2),a?(Dc=Math.abs(Math.cos(Sc)*_c/Math.sin(Sc)))>Ac?(Dc=Ac,Bc=Math.abs(Dc*Math.sin(Sc)/Math.cos(Sc))):Bc=_c:(Dc=Math.min(Ac,_c),Bc=Math.abs(Dc*Math.sin(Sc)/Math.cos(Sc))),Ic=t.x+Oc.nx*Dc,Nc=t.y+Oc.ny*Dc,xc=Ic-Oc.ny*Bc*Tc,wc=Nc+Oc.nx*Bc*Tc,Mc=t.x+zc.nx*Dc,Rc=t.y+zc.ny*Dc,Lc=t};function Xc(e,t){0===t.radius?e.lineTo(t.cx,t.cy):e.arc(t.cx,t.cy,t.radius,t.startAngle,t.endAngle,t.counterClockwise)}function jc(e,t,n,r){var a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];return 0===r||0===t.radius?{cx:t.x,cy:t.y,radius:0,startX:t.x,startY:t.y,stopX:t.x,stopY:t.y,startAngle:void 0,endAngle:void 0,counterClockwise:void 0}:(Fc(e,t,n,r,a),{cx:xc,cy:wc,radius:Bc,startX:Mc,startY:Rc,stopX:Ic,stopY:Nc,startAngle:zc.ang+Math.PI/2*Tc,endAngle:Oc.ang-Math.PI/2*Tc,counterClockwise:Cc})}var Yc=.01,qc=Math.sqrt(.02),Wc={};function Uc(e){var t=[];if(null!=e){for(var n=0;n0?Math.max(e-t,0):Math.min(e+t,0)},S=P(T,E),B=P(C,k),D=!1;"auto"===g?v=Math.abs(S)>Math.abs(B)?a:r:g===l||g===s?(v=r,D=!0):g!==i&&g!==o||(v=a,D=!0);var _,A=v===r,M=A?B:S,R=A?C:T,I=Gt(R),N=!1;(D&&(m||x)||!(g===s&&R<0||g===l&&R>0||g===i&&R>0||g===o&&R<0)||(M=(I*=-1)*Math.abs(M),N=!0),m)?_=(b<0?1+b:b)*M:_=(b<0?M:0)+b*I;var L=function(e){return Math.abs(e)=Math.abs(M)},z=L(_),O=L(Math.abs(M)-Math.abs(_));if((z||O)&&!N)if(A){var V=Math.abs(R)<=d/2,F=Math.abs(T)<=h/2;if(V){var X=(u.x1+u.x2)/2,j=u.y1,Y=u.y2;n.segpts=[X,j,X,Y]}else if(F){var q=(u.y1+u.y2)/2,W=u.x1,U=u.x2;n.segpts=[W,q,U,q]}else n.segpts=[u.x1,u.y2]}else{var H=Math.abs(R)<=c/2,K=Math.abs(C)<=f/2;if(H){var G=(u.y1+u.y2)/2,Z=u.x1,$=u.x2;n.segpts=[Z,G,$,G]}else if(K){var Q=(u.x1+u.x2)/2,J=u.y1,ee=u.y2;n.segpts=[Q,J,Q,ee]}else n.segpts=[u.x2,u.y1]}else if(A){var te=u.y1+_+(p?d/2*I:0),ne=u.x1,re=u.x2;n.segpts=[ne,te,re,te]}else{var ae=u.x1+_+(p?c/2*I:0),ie=u.y1,oe=u.y2;n.segpts=[ae,ie,ae,oe]}if(n.isRound){var se=e.pstyle("taxi-radius").value,le="arc-radius"===e.pstyle("radius-type").value[0];n.radii=new Array(n.segpts.length/2).fill(se),n.isArcRadius=new Array(n.segpts.length/2).fill(le)}},Wc.tryToCorrectInvalidPoints=function(e,t){var n=e._private.rscratch;if("bezier"===n.edgeType){var r=t.srcPos,a=t.tgtPos,i=t.srcW,o=t.srcH,s=t.tgtW,l=t.tgtH,u=t.srcShape,c=t.tgtShape,d=t.srcCornerRadius,h=t.tgtCornerRadius,f=t.srcRs,p=t.tgtRs,v=!Q(n.startX)||!Q(n.startY),g=!Q(n.arrowStartX)||!Q(n.arrowStartY),y=!Q(n.endX)||!Q(n.endY),m=!Q(n.arrowEndX)||!Q(n.arrowEndY),b=3*(this.getArrowWidth(e.pstyle("width").pfValue,e.pstyle("arrow-scale").value)*this.arrowShapeWidth),x=Zt({x:n.ctrlpts[0],y:n.ctrlpts[1]},{x:n.startX,y:n.startY}),w=xv.poolIndex()){var g=p;p=v,v=g}var y=d.srcPos=p.position(),m=d.tgtPos=v.position(),b=d.srcW=p.outerWidth(),x=d.srcH=p.outerHeight(),E=d.tgtW=v.outerWidth(),k=d.tgtH=v.outerHeight(),T=d.srcShape=n.nodeShapes[t.getNodeShape(p)],C=d.tgtShape=n.nodeShapes[t.getNodeShape(v)],P=d.srcCornerRadius="auto"===p.pstyle("corner-radius").value?"auto":p.pstyle("corner-radius").pfValue,S=d.tgtCornerRadius="auto"===v.pstyle("corner-radius").value?"auto":v.pstyle("corner-radius").pfValue,B=d.tgtRs=v._private.rscratch,D=d.srcRs=p._private.rscratch;d.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var _=0;_=qc||(q=Math.sqrt(Math.max(Y*Y,Yc)+Math.max(j*j,Yc)));var W=d.vector={x:Y,y:j},U=d.vectorNorm={x:W.x/q,y:W.y/q},H={x:-U.y,y:U.x};d.nodesOverlap=!Q(q)||C.checkPoint(L[0],L[1],0,E,k,m.x,m.y,S,B)||T.checkPoint(O[0],O[1],0,b,x,y.x,y.y,P,D),d.vectorNormInverse=H,e={nodesOverlap:d.nodesOverlap,dirCounts:d.dirCounts,calculatedIntersection:!0,hasBezier:d.hasBezier,hasUnbundled:d.hasUnbundled,eles:d.eles,srcPos:m,srcRs:B,tgtPos:y,tgtRs:D,srcW:E,srcH:k,tgtW:b,tgtH:x,srcIntn:V,tgtIntn:z,srcShape:C,tgtShape:T,posPts:{x1:X.x2,y1:X.y2,x2:X.x1,y2:X.y1},intersectionPts:{x1:F.x2,y1:F.y2,x2:F.x1,y2:F.y1},vector:{x:-W.x,y:-W.y},vectorNorm:{x:-U.x,y:-U.y},vectorNormInverse:{x:-H.x,y:-H.y}}}var K=N?e:d;M.nodesOverlap=K.nodesOverlap,M.srcIntn=K.srcIntn,M.tgtIntn=K.tgtIntn,M.isRound=R.startsWith("round"),r&&(p.isParent()||p.isChild()||v.isParent()||v.isChild())&&(p.parents().anySame(v)||v.parents().anySame(p)||p.same(v)&&p.isParent())?t.findCompoundLoopPoints(A,K,_,I):p===v?t.findLoopPoints(A,K,_,I):R.endsWith("segments")?t.findSegmentsPoints(A,K):R.endsWith("taxi")?t.findTaxiPoints(A,K):"straight"===R||!I&&d.eles.length%2==1&&_===Math.floor(d.eles.length/2)?t.findStraightEdgePoints(A):t.findBezierPoints(A,K,_,I,N),t.findEndpoints(A),t.tryToCorrectInvalidPoints(A,K),t.checkForInvalidEdgeWarning(A),t.storeAllpts(A),t.storeEdgeProjections(A),t.calculateArrowAngles(A),t.recalculateEdgeLabelProjections(A),t.calculateLabelAngles(A)}},w=0;w0){var J=f,ee=$t(J,Ut(i)),te=$t(J,Ut($)),ne=ee;if(te2)$t(J,{x:$[2],y:$[3]})0){var ge=p,ye=$t(ge,Ut(i)),me=$t(ge,Ut(ve)),be=ye;if(me2)$t(ge,{x:ve[2],y:ve[3]})=u||m){c={cp:v,segment:y};break}}if(c)break}var b=c.cp,x=c.segment,w=(u-h)/x.length,E=x.t1-x.t0,k=s?x.t0+E*w:x.t1-E*w;k=tn(0,k,1),t=en(b.p0,b.p1,b.p2,k),a=function(e,t,n,r){var a=tn(0,r-.001,1),i=tn(0,r+.001,1),o=en(e,t,n,a),s=en(e,t,n,i);return Qc(o,s)}(b.p0,b.p1,b.p2,k);break;case"straight":case"segments":case"haystack":for(var T,C,P,S,B=0,D=r.allpts.length,_=0;_+3=u));_+=2);var A=(u-C)/T;A=tn(0,A,1),t=function(e,t,n,r){var a=t.x-e.x,i=t.y-e.y,o=Zt(e,t),s=a/o,l=i/o;return n=null==n?0:n,r=null!=r?r:n*o,{x:e.x+s*r,y:e.y+l*r}}(P,S,A),a=Qc(P,S)}o("labelX",n,t.x),o("labelY",n,t.y),o("labelAutoAngle",n,a)}};u("source"),u("target"),this.applyLabelDimensions(e)}},Zc.applyLabelDimensions=function(e){this.applyPrefixedLabelDimensions(e),e.isEdge()&&(this.applyPrefixedLabelDimensions(e,"source"),this.applyPrefixedLabelDimensions(e,"target"))},Zc.applyPrefixedLabelDimensions=function(e,t){var n=e._private,r=this.getLabelText(e,t),a=He(r,e._private.labelDimsKey);if(vt(n.rscratch,"prefixedLabelDimsKey",t)!==a){gt(n.rscratch,"prefixedLabelDimsKey",t,a);var i=this.calculateLabelDimensions(e,r),o=e.pstyle("line-height").pfValue,s=e.pstyle("text-wrap").strValue,l=vt(n.rscratch,"labelWrapCachedLines",t)||[],u="wrap"!==s?1:Math.max(l.length,1),c=i.height/u,d=c*o,h=i.width,f=i.height+(u-1)*(o-1)*c;gt(n.rstyle,"labelWidth",t,h),gt(n.rscratch,"labelWidth",t,h),gt(n.rstyle,"labelHeight",t,f),gt(n.rscratch,"labelHeight",t,f),gt(n.rscratch,"labelLineHeight",t,d)}},Zc.getLabelText=function(e,t){var n=e._private,r=t?t+"-":"",a=e.pstyle(r+"label").strValue,i=e.pstyle("text-transform").value,s=function(e,r){return r?(gt(n.rscratch,e,t,r),r):vt(n.rscratch,e,t)};if(!a)return"";"none"==i||("uppercase"==i?a=a.toUpperCase():"lowercase"==i&&(a=a.toLowerCase()));var l=e.pstyle("text-wrap").value;if("wrap"===l){var u=s("labelKey");if(null!=u&&s("labelWrapKey")===u)return s("labelWrapCachedText");for(var c=a.split("\n"),d=e.pstyle("text-max-width").pfValue,h="anywhere"===e.pstyle("text-overflow-wrap").value,f=[],p=/[\s\u200b]+|$/g,v=0;vd){var b,x="",w=0,E=o(g.matchAll(p));try{for(E.s();!(b=E.n()).done;){var k=b.value,T=k[0],C=g.substring(w,k.index);w=k.index+T.length;var P=0===x.length?C:x+C+T;this.calculateLabelDimensions(e,P).width<=d?x+=C+T:(x&&f.push(x),x=C+T)}}catch(A){E.e(A)}finally{E.f()}x.match(/^[\s\u200b]+$/)||f.push(x)}else f.push(g)}s("labelWrapCachedLines",f),a=s("labelWrapCachedText",f.join("\n")),s("labelWrapKey",u)}else if("ellipsis"===l){var S=e.pstyle("text-max-width").pfValue,B="",D=!1;if(this.calculateLabelDimensions(e,a).widthS)break;B+=a[_],_===a.length-1&&(D=!0)}return D||(B+="\u2026"),B}return a},Zc.getLabelJustification=function(e){var t=e.pstyle("text-justification").strValue,n=e.pstyle("text-halign").strValue;if("auto"!==t)return t;if(!e.isNode())return"center";switch(n){case"left":return"right";case"right":return"left";default:return"center"}},Zc.calculateLabelDimensions=function(e,t){var n=this.cy.window().document,r=e.pstyle("font-style").strValue,a=e.pstyle("font-size").pfValue,i=e.pstyle("font-family").strValue,o=e.pstyle("font-weight").strValue,s=this.labelCalcCanvas,l=this.labelCalcCanvasContext;if(!s){s=this.labelCalcCanvas=n.createElement("canvas"),l=this.labelCalcCanvasContext=s.getContext("2d");var u=s.style;u.position="absolute",u.left="-9999px",u.top="-9999px",u.zIndex="-1",u.visibility="hidden",u.pointerEvents="none"}l.font="".concat(r," ").concat(o," ").concat(a,"px ").concat(i);for(var c=0,d=0,h=t.split("\n"),f=0;f1&&void 0!==arguments[1])||arguments[1];if(t.merge(e),n)for(var r=0;r=e.desktopTapThreshold2}var P=a(t);g&&(e.hoverData.tapholdCancelled=!0);n=!0,r(v,["mousemove","vmousemove","tapdrag"],t,{x:c[0],y:c[1]});var S=function(e){return{originalEvent:t,type:e,position:{x:c[0],y:c[1]}}},B=function(){e.data.bgActivePosistion=void 0,e.hoverData.selecting||o.emit(S("boxstart")),p[4]=1,e.hoverData.selecting=!0,e.redrawHint("select",!0),e.redraw()};if(3===e.hoverData.which){if(g){var D=S("cxtdrag");b?b.emit(D):o.emit(D),e.hoverData.cxtDragged=!0,e.hoverData.cxtOver&&v===e.hoverData.cxtOver||(e.hoverData.cxtOver&&e.hoverData.cxtOver.emit(S("cxtdragout")),e.hoverData.cxtOver=v,v&&v.emit(S("cxtdragover")))}}else if(e.hoverData.dragging){if(n=!0,o.panningEnabled()&&o.userPanningEnabled()){var _;if(e.hoverData.justStartedPan){var A=e.hoverData.mdownPos;_={x:(c[0]-A[0])*s,y:(c[1]-A[1])*s},e.hoverData.justStartedPan=!1}else _={x:x[0]*s,y:x[1]*s};o.panBy(_),o.emit(S("dragpan")),e.hoverData.dragged=!0}c=e.projectIntoViewport(t.clientX,t.clientY)}else if(1!=p[4]||null!=b&&!b.pannable()){if(b&&b.pannable()&&b.active()&&b.unactivate(),b&&b.grabbed()||v==y||(y&&r(y,["mouseout","tapdragout"],t,{x:c[0],y:c[1]}),v&&r(v,["mouseover","tapdragover"],t,{x:c[0],y:c[1]}),e.hoverData.last=v),b)if(g){if(o.boxSelectionEnabled()&&P)b&&b.grabbed()&&(d(w),b.emit(S("freeon")),w.emit(S("free")),e.dragData.didDrag&&(b.emit(S("dragfreeon")),w.emit(S("dragfree")))),B();else if(b&&b.grabbed()&&e.nodeIsDraggable(b)){var M=!e.dragData.didDrag;M&&e.redrawHint("eles",!0),e.dragData.didDrag=!0,e.hoverData.draggingEles||u(w,{inDragLayer:!0});var R={x:0,y:0};if(Q(x[0])&&Q(x[1])&&(R.x+=x[0],R.y+=x[1],M)){var I=e.hoverData.dragDelta;I&&Q(I[0])&&Q(I[1])&&(R.x+=I[0],R.y+=I[1])}e.hoverData.draggingEles=!0,w.silentShift(R).emit(S("position")).emit(S("drag")),e.redrawHint("drag",!0),e.redraw()}}else!function(){var t=e.hoverData.dragDelta=e.hoverData.dragDelta||[];0===t.length?(t.push(x[0]),t.push(x[1])):(t[0]+=x[0],t[1]+=x[1])}();n=!0}else if(g){if(e.hoverData.dragging||!o.boxSelectionEnabled()||!P&&o.panningEnabled()&&o.userPanningEnabled()){if(!e.hoverData.selecting&&o.panningEnabled()&&o.userPanningEnabled()){i(b,e.hoverData.downs)&&(e.hoverData.dragging=!0,e.hoverData.justStartedPan=!0,p[4]=0,e.data.bgActivePosistion=Ut(h),e.redrawHint("select",!0),e.redraw())}}else B();b&&b.pannable()&&b.active()&&b.unactivate()}return p[2]=c[0],p[3]=c[1],n?(t.stopPropagation&&t.stopPropagation(),t.preventDefault&&t.preventDefault(),!1):void 0}},!1),e.registerBinding(t,"mouseup",function(t){if((1!==e.hoverData.which||1===t.which||!e.hoverData.capture)&&e.hoverData.capture){e.hoverData.capture=!1;var i=e.cy,o=e.projectIntoViewport(t.clientX,t.clientY),s=e.selection,l=e.findNearestElement(o[0],o[1],!0,!1),u=e.dragData.possibleDragElements,c=e.hoverData.down,h=a(t);e.data.bgActivePosistion&&(e.redrawHint("select",!0),e.redraw()),e.hoverData.tapholdCancelled=!0,e.data.bgActivePosistion=void 0,c&&c.unactivate();var f=function(e){return{originalEvent:t,type:e,position:{x:o[0],y:o[1]}}};if(3===e.hoverData.which){var p=f("cxttapend");if(c?c.emit(p):i.emit(p),!e.hoverData.cxtDragged){var v=f("cxttap");c?c.emit(v):i.emit(v)}e.hoverData.cxtDragged=!1,e.hoverData.which=null}else if(1===e.hoverData.which){if(r(l,["mouseup","tapend","vmouseup"],t,{x:o[0],y:o[1]}),e.dragData.didDrag||e.hoverData.dragged||e.hoverData.selecting||e.hoverData.isOverThresholdDrag||(r(c,["click","tap","vclick"],t,{x:o[0],y:o[1]}),x=!1,t.timeStamp-w<=i.multiClickDebounceTime()?(b&&clearTimeout(b),x=!0,w=null,r(c,["dblclick","dbltap","vdblclick"],t,{x:o[0],y:o[1]})):(b=setTimeout(function(){x||r(c,["oneclick","onetap","voneclick"],t,{x:o[0],y:o[1]})},i.multiClickDebounceTime()),w=t.timeStamp)),null!=c||e.dragData.didDrag||e.hoverData.selecting||e.hoverData.dragged||a(t)||(i.$(n).unselect(["tapunselect"]),u.length>0&&e.redrawHint("eles",!0),e.dragData.possibleDragElements=u=i.collection()),l!=c||e.dragData.didDrag||e.hoverData.selecting||null!=l&&l._private.selectable&&(e.hoverData.dragging||("additive"===i.selectionType()||h?l.selected()?l.unselect(["tapunselect"]):l.select(["tapselect"]):h||(i.$(n).unmerge(l).unselect(["tapunselect"]),l.select(["tapselect"]))),e.redrawHint("eles",!0)),e.hoverData.selecting){var g=i.collection(e.getAllInBox(s[0],s[1],s[2],s[3]));e.redrawHint("select",!0),g.length>0&&e.redrawHint("eles",!0),i.emit(f("boxend"));var y=function(e){return e.selectable()&&!e.selected()};"additive"===i.selectionType()||h||i.$(n).unmerge(g).unselect(),g.emit(f("box")).stdFilter(y).select().emit(f("boxselect")),e.redraw()}if(e.hoverData.dragging&&(e.hoverData.dragging=!1,e.redrawHint("select",!0),e.redrawHint("eles",!0),e.redraw()),!s[4]){e.redrawHint("drag",!0),e.redrawHint("eles",!0);var m=c&&c.grabbed();d(u),m&&(c.emit(f("freeon")),u.emit(f("free")),e.dragData.didDrag&&(c.emit(f("dragfreeon")),u.emit(f("dragfree"))))}}s[4]=0,e.hoverData.down=null,e.hoverData.cxtStarted=!1,e.hoverData.draggingEles=!1,e.hoverData.selecting=!1,e.hoverData.isOverThresholdDrag=!1,e.dragData.didDrag=!1,e.hoverData.dragged=!1,e.hoverData.dragDelta=[],e.hoverData.mdownPos=null,e.hoverData.mdownGPos=null,e.hoverData.which=null}},!1);var k,T,C,P,S,B,D,_,A,M,R,I,N,L,z=[],O=1e5,V=function(t){var n=!1,r=t.deltaY;if(null==r&&(null!=t.wheelDeltaY?r=t.wheelDeltaY/4:null!=t.wheelDelta&&(r=t.wheelDelta/4)),0!==r){if(null==k)if(z.length>=4){var a=z;if(k=function(e,t){for(var n=0;n5}if(k)for(var o=0;o5&&(r=5*Gt(r)),h=r/-250,k&&(h/=O,h*=3),h*=e.wheelSensitivity,1===t.deltaMode&&(h*=33);var f=s.zoom()*Math.pow(10,h);"gesturechange"===t.type&&(f=e.gestureStartZoom*t.scale),s.zoom({level:f,renderedPosition:{x:d[0],y:d[1]}}),s.emit({type:"gesturechange"===t.type?"pinchzoom":"scrollzoom",originalEvent:t,position:{x:c[0],y:c[1]}})}}}};e.registerBinding(e.container,"wheel",V,!0),e.registerBinding(t,"scroll",function(t){e.scrollingPage=!0,clearTimeout(e.scrollingPageTimeout),e.scrollingPageTimeout=setTimeout(function(){e.scrollingPage=!1},250)},!0),e.registerBinding(e.container,"gesturestart",function(t){e.gestureStartZoom=e.cy.zoom(),e.hasTouchStarted||t.preventDefault()},!0),e.registerBinding(e.container,"gesturechange",function(t){e.hasTouchStarted||V(t)},!0),e.registerBinding(e.container,"mouseout",function(t){var n=e.projectIntoViewport(t.clientX,t.clientY);e.cy.emit({originalEvent:t,type:"mouseout",position:{x:n[0],y:n[1]}})},!1),e.registerBinding(e.container,"mouseover",function(t){var n=e.projectIntoViewport(t.clientX,t.clientY);e.cy.emit({originalEvent:t,type:"mouseover",position:{x:n[0],y:n[1]}})},!1);var F,X,j,Y,q,W,U,H=function(e,t,n,r){return Math.sqrt((n-e)*(n-e)+(r-t)*(r-t))},K=function(e,t,n,r){return(n-e)*(n-e)+(r-t)*(r-t)};if(e.registerBinding(e.container,"touchstart",F=function(t){if(e.hasTouchStarted=!0,m(t)){f(),e.touchData.capture=!0,e.data.bgActivePosistion=void 0;var n=e.cy,a=e.touchData.now,i=e.touchData.earlier;if(t.touches[0]){var o=e.projectIntoViewport(t.touches[0].clientX,t.touches[0].clientY);a[0]=o[0],a[1]=o[1]}if(t.touches[1]){o=e.projectIntoViewport(t.touches[1].clientX,t.touches[1].clientY);a[2]=o[0],a[3]=o[1]}if(t.touches[2]){o=e.projectIntoViewport(t.touches[2].clientX,t.touches[2].clientY);a[4]=o[0],a[5]=o[1]}var l=function(e){return{originalEvent:t,type:e,position:{x:a[0],y:a[1]}}};if(t.touches[1]){e.touchData.singleTouchMoved=!0,d(e.dragData.touchDragEles);var h=e.findContainerClientCoords();M=h[0],R=h[1],I=h[2],N=h[3],T=t.touches[0].clientX-M,C=t.touches[0].clientY-R,P=t.touches[1].clientX-M,S=t.touches[1].clientY-R,L=0<=T&&T<=I&&0<=P&&P<=I&&0<=C&&C<=N&&0<=S&&S<=N;var p=n.pan(),v=n.zoom();B=H(T,C,P,S),D=K(T,C,P,S),A=[((_=[(T+P)/2,(C+S)/2])[0]-p.x)/v,(_[1]-p.y)/v];if(D<4e4&&!t.touches[2]){var g=e.findNearestElement(a[0],a[1],!0,!0),y=e.findNearestElement(a[2],a[3],!0,!0);return g&&g.isNode()?(g.activate().emit(l("cxttapstart")),e.touchData.start=g):y&&y.isNode()?(y.activate().emit(l("cxttapstart")),e.touchData.start=y):n.emit(l("cxttapstart")),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!0,e.touchData.cxtDragged=!1,e.data.bgActivePosistion=void 0,void e.redraw()}}if(t.touches[2])n.boxSelectionEnabled()&&t.preventDefault();else if(t.touches[1]);else if(t.touches[0]){var b=e.findNearestElements(a[0],a[1],!0,!0),x=b[0];if(null!=x&&(x.activate(),e.touchData.start=x,e.touchData.starts=b,e.nodeIsGrabbable(x))){var w=e.dragData.touchDragEles=n.collection(),E=null;e.redrawHint("eles",!0),e.redrawHint("drag",!0),x.selected()?(E=n.$(function(t){return t.selected()&&e.nodeIsGrabbable(t)}),u(E,{addToList:w})):c(x,{addToList:w}),s(x),x.emit(l("grabon")),E?E.forEach(function(e){e.emit(l("grab"))}):x.emit(l("grab"))}r(x,["touchstart","tapstart","vmousedown"],t,{x:a[0],y:a[1]}),null==x&&(e.data.bgActivePosistion={x:o[0],y:o[1]},e.redrawHint("select",!0),e.redraw()),e.touchData.singleTouchMoved=!1,e.touchData.singleTouchStartTime=+new Date,clearTimeout(e.touchData.tapholdTimeout),e.touchData.tapholdTimeout=setTimeout(function(){!1!==e.touchData.singleTouchMoved||e.pinching||e.touchData.selecting||r(e.touchData.start,["taphold"],t,{x:a[0],y:a[1]})},e.tapholdDuration)}if(t.touches.length>=1){for(var k=e.touchData.startPosition=[null,null,null,null,null,null],z=0;z=e.touchTapThreshold2}if(n&&e.touchData.cxt){t.preventDefault();var E=t.touches[0].clientX-M,k=t.touches[0].clientY-R,_=t.touches[1].clientX-M,I=t.touches[1].clientY-R,N=K(E,k,_,I);if(N/D>=2.25||N>=22500){e.touchData.cxt=!1,e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var z=p("cxttapend");e.touchData.start?(e.touchData.start.unactivate().emit(z),e.touchData.start=null):o.emit(z)}}if(n&&e.touchData.cxt){z=p("cxtdrag");e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.touchData.start?e.touchData.start.emit(z):o.emit(z),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxtDragged=!0;var O=e.findNearestElement(s[0],s[1],!0,!0);e.touchData.cxtOver&&O===e.touchData.cxtOver||(e.touchData.cxtOver&&e.touchData.cxtOver.emit(p("cxtdragout")),e.touchData.cxtOver=O,O&&O.emit(p("cxtdragover")))}else if(n&&t.touches[2]&&o.boxSelectionEnabled())t.preventDefault(),e.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,e.touchData.selecting||o.emit(p("boxstart")),e.touchData.selecting=!0,e.touchData.didSelect=!0,a[4]=1,a&&0!==a.length&&void 0!==a[0]?(a[2]=(s[0]+s[2]+s[4])/3,a[3]=(s[1]+s[3]+s[5])/3):(a[0]=(s[0]+s[2]+s[4])/3,a[1]=(s[1]+s[3]+s[5])/3,a[2]=(s[0]+s[2]+s[4])/3+1,a[3]=(s[1]+s[3]+s[5])/3+1),e.redrawHint("select",!0),e.redraw();else if(n&&t.touches[1]&&!e.touchData.didSelect&&o.zoomingEnabled()&&o.panningEnabled()&&o.userZoomingEnabled()&&o.userPanningEnabled()){if(t.preventDefault(),e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),te=e.dragData.touchDragEles){e.redrawHint("drag",!0);for(var V=0;V0&&!e.hoverData.draggingEles&&!e.swipePanning&&null!=e.data.bgActivePosistion&&(e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.redraw())}},!1),e.registerBinding(t,"touchcancel",j=function(t){var n=e.touchData.start;e.touchData.capture=!1,n&&n.unactivate()}),e.registerBinding(t,"touchend",Y=function(t){var a=e.touchData.start;if(e.touchData.capture){0===t.touches.length&&(e.touchData.capture=!1),t.preventDefault();var i=e.selection;e.swipePanning=!1,e.hoverData.draggingEles=!1;var o=e.cy,s=o.zoom(),l=e.touchData.now,u=e.touchData.earlier;if(t.touches[0]){var c=e.projectIntoViewport(t.touches[0].clientX,t.touches[0].clientY);l[0]=c[0],l[1]=c[1]}if(t.touches[1]){c=e.projectIntoViewport(t.touches[1].clientX,t.touches[1].clientY);l[2]=c[0],l[3]=c[1]}if(t.touches[2]){c=e.projectIntoViewport(t.touches[2].clientX,t.touches[2].clientY);l[4]=c[0],l[5]=c[1]}var h,f=function(e){return{originalEvent:t,type:e,position:{x:l[0],y:l[1]}}};if(a&&a.unactivate(),e.touchData.cxt){if(h=f("cxttapend"),a?a.emit(h):o.emit(h),!e.touchData.cxtDragged){var p=f("cxttap");a?a.emit(p):o.emit(p)}return e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!1,e.touchData.start=null,void e.redraw()}if(!t.touches[2]&&o.boxSelectionEnabled()&&e.touchData.selecting){e.touchData.selecting=!1;var v=o.collection(e.getAllInBox(i[0],i[1],i[2],i[3]));i[0]=void 0,i[1]=void 0,i[2]=void 0,i[3]=void 0,i[4]=0,e.redrawHint("select",!0),o.emit(f("boxend"));v.emit(f("box")).stdFilter(function(e){return e.selectable()&&!e.selected()}).select().emit(f("boxselect")),v.nonempty()&&e.redrawHint("eles",!0),e.redraw()}if(null!=a&&a.unactivate(),t.touches[2])e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);else if(t.touches[1]);else if(t.touches[0]);else if(!t.touches[0]){e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var g=e.dragData.touchDragEles;if(null!=a){var y=a._private.grabbed;d(g),e.redrawHint("drag",!0),e.redrawHint("eles",!0),y&&(a.emit(f("freeon")),g.emit(f("free")),e.dragData.didDrag&&(a.emit(f("dragfreeon")),g.emit(f("dragfree")))),r(a,["touchend","tapend","vmouseup","tapdragout"],t,{x:l[0],y:l[1]}),a.unactivate(),e.touchData.start=null}else{var m=e.findNearestElement(l[0],l[1],!0,!0);r(m,["touchend","tapend","vmouseup","tapdragout"],t,{x:l[0],y:l[1]})}var b=e.touchData.startPosition[0]-l[0],x=b*b,w=e.touchData.startPosition[1]-l[1],E=(x+w*w)*s*s;e.touchData.singleTouchMoved||(a||o.$(":selected").unselect(["tapunselect"]),r(a,["tap","vclick"],t,{x:l[0],y:l[1]}),q=!1,t.timeStamp-U<=o.multiClickDebounceTime()?(W&&clearTimeout(W),q=!0,U=null,r(a,["dbltap","vdblclick"],t,{x:l[0],y:l[1]})):(W=setTimeout(function(){q||r(a,["onetap","voneclick"],t,{x:l[0],y:l[1]})},o.multiClickDebounceTime()),U=t.timeStamp)),null!=a&&!e.dragData.didDrag&&a._private.selectable&&E2){for(var f=[c[0],c[1]],p=Math.pow(f[0]-e,2)+Math.pow(f[1]-t,2),v=1;v0)return v[0]}return null},f=Object.keys(d),p=0;p0?u:vn(a,i,e,t,n,r,o,s)},checkPoint:function(e,t,n,r,a,i,o,s){var l=2*(s="auto"===s?In(r,a):s);if(wn(e,t,this.points,i,o,r,a-l,[0,-1],n))return!0;if(wn(e,t,this.points,i,o,r-l,a,[0,-1],n))return!0;var u=r/2+2*n,c=a/2+2*n;return!!xn(e,t,[i-u,o-c,i-u,o,i+u,o,i+u,o-c])||(!!Tn(e,t,l,l,i+r/2-s,o+a/2-s,n)||!!Tn(e,t,l,l,i-r/2+s,o+a/2-s,n))}}},sd.registerNodeShapes=function(){var e=this.nodeShapes={},t=this;this.generateEllipse(),this.generatePolygon("triangle",An(3,0)),this.generateRoundPolygon("round-triangle",An(3,0)),this.generatePolygon("rectangle",An(4,0)),e.square=e.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();var n=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",n),this.generateRoundPolygon("round-diamond",n),this.generatePolygon("pentagon",An(5,0)),this.generateRoundPolygon("round-pentagon",An(5,0)),this.generatePolygon("hexagon",An(6,0)),this.generateRoundPolygon("round-hexagon",An(6,0)),this.generatePolygon("heptagon",An(7,0)),this.generateRoundPolygon("round-heptagon",An(7,0)),this.generatePolygon("octagon",An(8,0)),this.generateRoundPolygon("round-octagon",An(8,0));var r=new Array(20),a=Rn(5,0),i=Rn(5,Math.PI/5),o=.5*(3-Math.sqrt(5));o*=1.57;for(var s=0;s=e.deqFastCost*v)break}else if(a){if(f>=e.deqCost*l||f>=e.deqAvgCost*s)break}else if(p>=e.deqNoDrawCost*hd)break;var g=e.deq(t,d,c);if(!(g.length>0))break;for(var y=0;y0&&(e.onDeqd(t,u),!a&&e.shouldRedraw(t,u,d,c)&&r())},a(t))}}},pd=function(){return i(function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:nt;a(this,e),this.idsByKey=new yt,this.keyForId=new yt,this.cachesByLvl=new yt,this.lvls=[],this.getKey=t,this.doesEleInvalidateKey=n},[{key:"getIdsFor",value:function(e){null==e&&it("Can not get id list for null key");var t=this.idsByKey,n=this.idsByKey.get(e);return n||(n=new bt,t.set(e,n)),n}},{key:"addIdForKey",value:function(e,t){null!=e&&this.getIdsFor(e).add(t)}},{key:"deleteIdForKey",value:function(e,t){null!=e&&this.getIdsFor(e).delete(t)}},{key:"getNumberOfIdsForKey",value:function(e){return null==e?0:this.getIdsFor(e).size}},{key:"updateKeyMappingFor",value:function(e){var t=e.id(),n=this.keyForId.get(t),r=this.getKey(e);this.deleteIdForKey(n,t),this.addIdForKey(r,t),this.keyForId.set(t,r)}},{key:"deleteKeyMappingFor",value:function(e){var t=e.id(),n=this.keyForId.get(t);this.deleteIdForKey(n,t),this.keyForId.delete(t)}},{key:"keyHasChangedFor",value:function(e){var t=e.id();return this.keyForId.get(t)!==this.getKey(e)}},{key:"isInvalid",value:function(e){return this.keyHasChangedFor(e)||this.doesEleInvalidateKey(e)}},{key:"getCachesAt",value:function(e){var t=this.cachesByLvl,n=this.lvls,r=t.get(e);return r||(r=new yt,t.set(e,r),n.push(e)),r}},{key:"getCache",value:function(e,t){return this.getCachesAt(t).get(e)}},{key:"get",value:function(e,t){var n=this.getKey(e),r=this.getCache(n,t);return null!=r&&this.updateKeyMappingFor(e),r}},{key:"getForCachedKey",value:function(e,t){var n=this.keyForId.get(e.id());return this.getCache(n,t)}},{key:"hasCache",value:function(e,t){return this.getCachesAt(t).has(e)}},{key:"has",value:function(e,t){var n=this.getKey(e);return this.hasCache(n,t)}},{key:"setCache",value:function(e,t,n){n.key=e,this.getCachesAt(t).set(e,n)}},{key:"set",value:function(e,t,n){var r=this.getKey(e);this.setCache(r,t,n),this.updateKeyMappingFor(e)}},{key:"deleteCache",value:function(e,t){this.getCachesAt(t).delete(e)}},{key:"delete",value:function(e,t){var n=this.getKey(e);this.deleteCache(n,t)}},{key:"invalidateKey",value:function(e){var t=this;this.lvls.forEach(function(n){return t.deleteCache(e,n)})}},{key:"invalidate",value:function(e){var t=e.id(),n=this.keyForId.get(t);this.deleteKeyMappingFor(e);var r=this.doesEleInvalidateKey(e);return r&&this.invalidateKey(n),r||0===this.getNumberOfIdsForKey(n)}}])}(),vd=7.99,gd={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},yd=ht({getKey:null,doesEleInvalidateKey:nt,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:tt,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),md=function(e,t){var n=this;n.renderer=e,n.onDequeues=[];var r=yd(t);be(n,r),n.lookup=new pd(r.getKey,r.doesEleInvalidateKey),n.setupDequeueing()},bd=md.prototype;bd.reasons=gd,bd.getTextureQueue=function(e){var t=this;return t.eleImgCaches=t.eleImgCaches||{},t.eleImgCaches[e]=t.eleImgCaches[e]||[]},bd.getRetiredTextureQueue=function(e){var t=this.eleImgCaches.retired=this.eleImgCaches.retired||{};return t[e]=t[e]||[]},bd.getElementQueue=function(){return this.eleCacheQueue=this.eleCacheQueue||new _t(function(e,t){return t.reqs-e.reqs})},bd.getElementKeyToQueue=function(){return this.eleKeyToCacheQueue=this.eleKeyToCacheQueue||{}},bd.getElement=function(e,t,n,r,a){var i=this,o=this.renderer,s=o.cy.zoom(),l=this.lookup;if(!t||0===t.w||0===t.h||isNaN(t.w)||isNaN(t.h)||!e.visible()||e.removed())return null;if(!i.allowEdgeTxrCaching&&e.isEdge()||!i.allowParentTxrCaching&&e.isParent())return null;if(null==r&&(r=Math.ceil(Kt(s*n))),r<-4)r=-4;else if(s>=7.99||r>3)return null;var u=Math.pow(2,r),c=t.h*u,d=t.w*u,h=o.eleTextBiggerThanMin(e,u);if(!this.isVisible(e,h))return null;var f,p=l.get(e,r);if(p&&p.invalidated&&(p.invalidated=!1,p.texture.invalidatedWidth-=p.width),p)return p;if(f=c<=25?25:c<=50?50:50*Math.ceil(c/50),c>1024||d>1024)return null;var v=i.getTextureQueue(f),g=v[v.length-2],y=function(){return i.recycleTexture(f,d)||i.addTexture(f,d)};g||(g=v[v.length-1]),g||(g=y()),g.width-g.usedWidthr;S--)C=i.getElement(e,t,n,S,gd.downscale);P()}else{var B;if(!x&&!w&&!E)for(var D=r-1;D>=-4;D--){var _=l.get(e,D);if(_){B=_;break}}if(b(B))return i.queueElement(e,r),B;g.context.translate(g.usedWidth,0),g.context.scale(u,u),this.drawElement(g.context,e,t,h,!1),g.context.scale(1/u,1/u),g.context.translate(-g.usedWidth,0)}return p={x:g.usedWidth,texture:g,level:r,scale:u,width:d,height:c,scaledLabelShown:h},g.usedWidth+=Math.ceil(d+8),g.eleCaches.push(p),l.set(e,r,p),i.checkTextureFullness(g),p},bd.invalidateElements=function(e){for(var t=0;t=.2*e.width&&this.retireTexture(e)},bd.checkTextureFullness=function(e){var t=this.getTextureQueue(e.height);e.usedWidth/e.width>.8&&e.fullnessChecks>=10?ft(t,e):e.fullnessChecks++},bd.retireTexture=function(e){var t=e.height,n=this.getTextureQueue(t),r=this.lookup;ft(n,e),e.retired=!0;for(var a=e.eleCaches,i=0;i=t)return i.retired=!1,i.usedWidth=0,i.invalidatedWidth=0,i.fullnessChecks=0,pt(i.eleCaches),i.context.setTransform(1,0,0,1,0,0),i.context.clearRect(0,0,i.width,i.height),ft(r,i),n.push(i),i}},bd.queueElement=function(e,t){var n=this.getElementQueue(),r=this.getElementKeyToQueue(),a=this.getKey(e),i=r[a];if(i)i.level=Math.max(i.level,t),i.eles.merge(e),i.reqs++,n.updateItem(i);else{var o={eles:e.spawn().merge(e),level:t,reqs:1,key:a};n.push(o),r[a]=o}},bd.dequeue=function(e){for(var t=this,n=t.getElementQueue(),r=t.getElementKeyToQueue(),a=[],i=t.lookup,o=0;o<1&&n.size()>0;o++){var s=n.pop(),l=s.key,u=s.eles[0],c=i.hasCache(u,s.level);if(r[l]=null,!c){a.push(s);var d=t.getBoundingBox(u);t.getElement(u,d,e,s.level,gd.dequeue)}}return a},bd.removeFromQueue=function(e){var t=this.getElementQueue(),n=this.getElementKeyToQueue(),r=this.getKey(e),a=n[r];null!=a&&(1===a.eles.length?(a.reqs=et,t.updateItem(a),t.pop(),n[r]=null):a.eles.unmerge(e))},bd.onDequeue=function(e){this.onDequeues.push(e)},bd.offDequeue=function(e){ft(this.onDequeues,e)},bd.setupDequeueing=fd({deqRedrawThreshold:100,deqCost:.15,deqAvgCost:.1,deqNoDrawCost:.9,deqFastCost:.9,deq:function(e,t,n){return e.dequeue(t,n)},onDeqd:function(e,t){for(var n=0;n=3.99||n>2)return null;r.validateLayersElesOrdering(n,e);var o,s,l=r.layersByLevel,u=Math.pow(2,n),c=l[n]=l[n]||[];if(r.levelIsComplete(n,e))return c;!function(){var t=function(t){if(r.validateLayersElesOrdering(t,e),r.levelIsComplete(t,e))return s=l[t],!0},a=function(e){if(!s)for(var r=n+e;-4<=r&&r<=2&&!t(r);r+=e);};a(1),a(-1);for(var i=c.length-1;i>=0;i--){var o=c[i];o.invalid&&ft(c,o)}}();var d=function(t){var a=(t=t||{}).after;!function(){if(!o){o=nn();for(var t=0;t32767||s>32767)return null;if(i*s>16e6)return null;var l=r.makeLayer(o,n);if(null!=a){var d=c.indexOf(a)+1;c.splice(d,0,l)}else(void 0===t.insert||t.insert)&&c.unshift(l);return l};if(r.skipping&&!i)return null;for(var h=null,f=e.length/1,p=!i,v=0;v=f||!hn(h.bb,g.boundingBox()))&&!(h=d({insert:!0,after:h})))return null;s||p?r.queueLayer(h,g):r.drawEleInLayer(h,g,n,t),h.eles.push(g),m[n]=h}}return s||(p?null:c)},wd.getEleLevelForLayerLevel=function(e,t){return e},wd.drawEleInLayer=function(e,t,n,r){var a=this.renderer,i=e.context,o=t.boundingBox();0!==o.w&&0!==o.h&&t.visible()&&(n=this.getEleLevelForLayerLevel(n,r),a.setImgSmoothing(i,!1),a.drawCachedElement(i,t,null,null,n,true),a.setImgSmoothing(i,!0))},wd.levelIsComplete=function(e,t){var n=this.layersByLevel[e];if(!n||0===n.length)return!1;for(var r=0,a=0;a0)return!1;if(i.invalid)return!1;r+=i.eles.length}return r===t.length},wd.validateLayersElesOrdering=function(e,t){var n=this.layersByLevel[e];if(n)for(var r=0;r0){e=!0;break}}return e},wd.invalidateElements=function(e){var t=this;0!==e.length&&(t.lastInvalidationTime=Oe(),0!==e.length&&t.haveLayers()&&t.updateElementsInLayers(e,function(e,n,r){t.invalidateLayer(e)}))},wd.invalidateLayer=function(e){if(this.lastInvalidationTime=Oe(),!e.invalid){var t=e.level,n=e.eles,r=this.layersByLevel[t];ft(r,e),e.elesQueue=[],e.invalid=!0,e.replacement&&(e.replacement.invalid=!0);for(var a=0;a3&&void 0!==arguments[3])||arguments[3],a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],i=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],o=this,s=t._private.rscratch;if((!i||t.visible())&&!s.badLine&&null!=s.allpts&&!isNaN(s.allpts[0])){var l;n&&(l=n,e.translate(-l.x1,-l.y1));var u=i?t.pstyle("opacity").value:1,c=i?t.pstyle("line-opacity").value:1,d=t.pstyle("curve-style").value,h=t.pstyle("line-style").value,f=t.pstyle("width").pfValue,p=t.pstyle("line-cap").value,v=t.pstyle("line-outline-width").value,g=t.pstyle("line-outline-color").value,y=u*c,m=u*c,b=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:y;"straight-triangle"===d?(o.eleStrokeStyle(e,t,n),o.drawEdgeTrianglePath(t,e,s.allpts)):(e.lineWidth=f,e.lineCap=p,o.eleStrokeStyle(e,t,n),o.drawEdgePath(t,e,s.allpts,h),e.lineCap="butt")},x=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m;o.drawArrowheads(e,t,n)};if(e.lineJoin="round","yes"===t.pstyle("ghost").value){var w=t.pstyle("ghost-offset-x").pfValue,E=t.pstyle("ghost-offset-y").pfValue,k=t.pstyle("ghost-opacity").value,T=y*k;e.translate(w,E),b(T),x(T),e.translate(-w,-E)}else!function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:y;e.lineWidth=f+v,e.lineCap=p,v>0?(o.colorStrokeStyle(e,g[0],g[1],g[2],n),"straight-triangle"===d?o.drawEdgeTrianglePath(t,e,s.allpts):(o.drawEdgePath(t,e,s.allpts,h),e.lineCap="butt")):e.lineCap="butt"}();a&&o.drawEdgeUnderlay(e,t),b(),x(),a&&o.drawEdgeOverlay(e,t),o.drawElementText(e,t,null,r),n&&e.translate(l.x1,l.y1)}}},Vd=function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(t,n){if(n.visible()){var r=n.pstyle("".concat(e,"-opacity")).value;if(0!==r){var a=this,i=a.usePaths(),o=n._private.rscratch,s=2*n.pstyle("".concat(e,"-padding")).pfValue,l=n.pstyle("".concat(e,"-color")).value;t.lineWidth=s,"self"!==o.edgeType||i?t.lineCap="round":t.lineCap="butt",a.colorStrokeStyle(t,l[0],l[1],l[2],r),a.drawEdgePath(n,t,o.allpts,"solid")}}}};Od.drawEdgeOverlay=Vd("overlay"),Od.drawEdgeUnderlay=Vd("underlay"),Od.drawEdgePath=function(e,t,n,r){var a,i=e._private.rscratch,s=t,l=!1,u=this.usePaths(),c=e.pstyle("line-dash-pattern").pfValue,d=e.pstyle("line-dash-offset").pfValue;if(u){var h=n.join("$");i.pathCacheKey&&i.pathCacheKey===h?(a=t=i.pathCache,l=!0):(a=t=new Path2D,i.pathCacheKey=h,i.pathCache=a)}if(s.setLineDash)switch(r){case"dotted":s.setLineDash([1,1]);break;case"dashed":s.setLineDash(c),s.lineDashOffset=d;break;case"solid":s.setLineDash([])}if(!l&&!i.badLine)switch(t.beginPath&&t.beginPath(),t.moveTo(n[0],n[1]),i.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var f=2;f+35&&void 0!==arguments[5]?arguments[5]:5,o=Math.min(i,r/2,a/2);e.beginPath(),e.moveTo(t+o,n),e.lineTo(t+r-o,n),e.quadraticCurveTo(t+r,n,t+r,n+o),e.lineTo(t+r,n+a-o),e.quadraticCurveTo(t+r,n+a,t+r-o,n+a),e.lineTo(t+o,n+a),e.quadraticCurveTo(t,n+a,t,n+a-o),e.lineTo(t,n+o),e.quadraticCurveTo(t,n,t+o,n),e.closePath()}Xd.eleTextBiggerThanMin=function(e,t){if(!t){var n=e.cy().zoom(),r=this.getPixelRatio(),a=Math.ceil(Kt(n*r));t=Math.pow(2,a)}return!(e.pstyle("font-size").pfValue*t5&&void 0!==arguments[5])||arguments[5],o=this;if(null==r){if(i&&!o.eleTextBiggerThanMin(t))return}else if(!1===r)return;if(t.isNode()){var s=t.pstyle("label");if(!s||!s.value)return;var l=o.getLabelJustification(t);e.textAlign=l,e.textBaseline="bottom"}else{var u=t.element()._private.rscratch.badLine,c=t.pstyle("label"),d=t.pstyle("source-label"),h=t.pstyle("target-label");if(u||(!c||!c.value)&&(!d||!d.value)&&(!h||!h.value))return;e.textAlign="center",e.textBaseline="bottom"}var f,p=!n;n&&(f=n,e.translate(-f.x1,-f.y1)),null==a?(o.drawText(e,t,null,p,i),t.isEdge()&&(o.drawText(e,t,"source",p,i),o.drawText(e,t,"target",p,i))):o.drawText(e,t,a,p,i),n&&e.translate(f.x1,f.y1)},Xd.getFontCache=function(e){var t;this.fontCaches=this.fontCaches||[];for(var n=0;n2&&void 0!==arguments[2])||arguments[2],r=t.pstyle("font-style").strValue,a=t.pstyle("font-size").pfValue+"px",i=t.pstyle("font-family").strValue,o=t.pstyle("font-weight").strValue,s=n?t.effectiveOpacity()*t.pstyle("text-opacity").value:1,l=t.pstyle("text-outline-opacity").value*s,u=t.pstyle("color").value,c=t.pstyle("text-outline-color").value;e.font=r+" "+o+" "+a+" "+i,e.lineJoin="round",this.colorFillStyle(e,u[0],u[1],u[2],s),this.colorStrokeStyle(e,c[0],c[1],c[2],l)},Xd.getTextAngle=function(e,t){var n,r=e._private.rscratch,a=t?t+"-":"",i=e.pstyle(a+"text-rotation");if("autorotate"===i.strValue){var o=vt(r,"labelAngle",t);n=e.isEdge()?o:0}else n="none"===i.strValue?0:i.pfValue;return n},Xd.drawText=function(e,t,n){var r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],i=t._private.rscratch,o=a?t.effectiveOpacity():1;if(!a||0!==o&&0!==t.pstyle("text-opacity").value){"main"===n&&(n=null);var s,l,u=vt(i,"labelX",n),c=vt(i,"labelY",n),d=this.getLabelText(t,n);if(null!=d&&""!==d&&!isNaN(u)&&!isNaN(c)){this.setupTextStyle(e,t,a);var h,f=n?n+"-":"",p=vt(i,"labelWidth",n),v=vt(i,"labelHeight",n),g=t.pstyle(f+"text-margin-x").pfValue,y=t.pstyle(f+"text-margin-y").pfValue,m=t.isEdge(),b=t.pstyle("text-halign").value,x=t.pstyle("text-valign").value;switch(m&&(b="center",x="center"),u+=g,c+=y,0!==(h=r?this.getTextAngle(t,n):0)&&(s=u,l=c,e.translate(s,l),e.rotate(h),u=0,c=0),x){case"top":break;case"center":c+=v/2;break;case"bottom":c+=v}var w=t.pstyle("text-background-opacity").value,E=t.pstyle("text-border-opacity").value,k=t.pstyle("text-border-width").pfValue,T=t.pstyle("text-background-padding").pfValue,C=t.pstyle("text-background-shape").strValue,P="round-rectangle"===C||"roundrectangle"===C,S="circle"===C;if(w>0||k>0&&E>0){var B=e.fillStyle,D=e.strokeStyle,_=e.lineWidth,A=t.pstyle("text-background-color").value,M=t.pstyle("text-border-color").value,R=t.pstyle("text-border-style").value,I=w>0,N=k>0&&E>0,L=u-T;switch(b){case"left":L-=p;break;case"center":L-=p/2}var z=c-v-T,O=p+2*T,V=v+2*T;if(I&&(e.fillStyle="rgba(".concat(A[0],",").concat(A[1],",").concat(A[2],",").concat(w*o,")")),N&&(e.strokeStyle="rgba(".concat(M[0],",").concat(M[1],",").concat(M[2],",").concat(E*o,")"),e.lineWidth=k,e.setLineDash))switch(R){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"double":e.lineWidth=k/4,e.setLineDash([]);break;default:e.setLineDash([])}if(P?(e.beginPath(),jd(e,L,z,O,V,2)):S?(e.beginPath(),function(e,t,n,r,a){var i=Math.min(r,a)/2,o=t+r/2,s=n+a/2;e.beginPath(),e.arc(o,s,i,0,2*Math.PI),e.closePath()}(e,L,z,O,V)):(e.beginPath(),e.rect(L,z,O,V)),I&&e.fill(),N&&e.stroke(),N&&"double"===R){var F=k/2;e.beginPath(),P?jd(e,L+F,z+F,O-2*F,V-2*F,2):e.rect(L+F,z+F,O-2*F,V-2*F),e.stroke()}e.fillStyle=B,e.strokeStyle=D,e.lineWidth=_,e.setLineDash&&e.setLineDash([])}var X=2*t.pstyle("text-outline-width").pfValue;if(X>0&&(e.lineWidth=X),"wrap"===t.pstyle("text-wrap").value){var j=vt(i,"labelWrapCachedLines",n),Y=vt(i,"labelLineHeight",n),q=p/2,W=this.getLabelJustification(t);switch("auto"===W||("left"===b?"left"===W?u+=-p:"center"===W&&(u+=-q):"center"===b?"left"===W?u+=-q:"right"===W&&(u+=q):"right"===b&&("center"===W?u+=q:"right"===W&&(u+=p))),x){case"top":case"center":case"bottom":c-=(j.length-1)*Y}for(var U=0;U0&&e.strokeText(j[U],u,c),e.fillText(j[U],u,c),c+=Y}else X>0&&e.strokeText(d,u,c),e.fillText(d,u,c);0!==h&&(e.rotate(-h),e.translate(-s,-l))}}};var Yd={drawNode:function(e,t,n){var r,a,i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],s=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],l=this,u=t._private,c=u.rscratch,d=t.position();if(Q(d.x)&&Q(d.y)&&(!s||t.visible())){var h,f,p=s?t.effectiveOpacity():1,v=l.usePaths(),g=!1,y=t.padding();r=t.width()+2*y,a=t.height()+2*y,n&&(f=n,e.translate(-f.x1,-f.y1));for(var m=t.pstyle("background-image").value,b=new Array(m.length),x=new Array(m.length),w=0,E=0;E0&&void 0!==arguments[0]?arguments[0]:S;l.eleFillStyle(e,t,n)},Y=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:N;l.colorStrokeStyle(e,B[0],B[1],B[2],t)},q=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V;l.colorStrokeStyle(e,z[0],z[1],z[2],t)},W=function(e,t,n,r){var a,i=l.nodePathCache=l.nodePathCache||[],o=Ke("polygon"===n?n+","+r.join(","):n,""+t,""+e,""+X),s=i[o],u=!1;return null!=s?(a=s,u=!0,c.pathCache=a):(a=new Path2D,i[o]=c.pathCache=a),{path:a,cacheHit:u}},U=t.pstyle("shape").strValue,H=t.pstyle("shape-polygon-points").pfValue;if(v){e.translate(d.x,d.y);var K=W(r,a,U,H);h=K.path,g=K.cacheHit}var G=function(){if(!g){var n=d;v&&(n={x:0,y:0}),l.nodeShapes[l.getNodeShape(t)].draw(h||e,n.x,n.y,r,a,X,c)}v?e.fill(h):e.fill()},Z=function(){for(var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:p,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=u.backgrounding,i=0,o=0;o0&&void 0!==arguments[0]&&arguments[0],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p;l.hasPie(t)&&(l.drawPie(e,t,i),n&&(v||l.nodeShapes[l.getNodeShape(t)].draw(e,d.x,d.y,r,a,X,c)))},J=function(){var n=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p;l.hasStripe(t)&&(e.save(),v?e.clip(c.pathCache):(l.nodeShapes[l.getNodeShape(t)].draw(e,d.x,d.y,r,a,X,c),e.clip()),l.drawStripe(e,t,i),e.restore(),n&&(v||l.nodeShapes[l.getNodeShape(t)].draw(e,d.x,d.y,r,a,X,c)))},ee=function(){var t=(C>0?C:-C)*(arguments.length>0&&void 0!==arguments[0]?arguments[0]:p),n=C>0?0:255;0!==C&&(l.colorFillStyle(e,n,n,n,t),v?e.fill(h):e.fill())},te=function(){if(P>0){if(e.lineWidth=P,e.lineCap=A,e.lineJoin=_,e.setLineDash)switch(D){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash(R),e.lineDashOffset=I;break;case"solid":case"double":e.setLineDash([])}if("center"!==M){if(e.save(),e.lineWidth*=2,"inside"===M)v?e.clip(h):e.clip();else{var t=new Path2D;t.rect(-r/2-P,-a/2-P,r+2*P,a+2*P),t.addPath(h),e.clip(t,"evenodd")}v?e.stroke(h):e.stroke(),e.restore()}else v?e.stroke(h):e.stroke();if("double"===D){e.lineWidth=P/3;var n=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",v?e.stroke(h):e.stroke(),e.globalCompositeOperation=n}e.setLineDash&&e.setLineDash([])}},ne=function(){if(L>0){if(e.lineWidth=L,e.lineCap="butt",e.setLineDash)switch(O){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"solid":case"double":e.setLineDash([])}var n=d;v&&(n={x:0,y:0});var i=l.getNodeShape(t),o=P;"inside"===M&&(o=0),"outside"===M&&(o*=2);var s,u=(r+o+(L+F))/r,c=(a+o+(L+F))/a,h=r*u,f=a*c,p=l.nodeShapes[i].points;if(v)s=W(h,f,i,p).path;if("ellipse"===i)l.drawEllipsePath(s||e,n.x,n.y,h,f);else if(["round-diamond","round-heptagon","round-hexagon","round-octagon","round-pentagon","round-polygon","round-triangle","round-tag"].includes(i)){var g=0,y=0,m=0;"round-diamond"===i?g=1.4*(o+F+L):"round-heptagon"===i?(g=1.075*(o+F+L),m=-(o/2+F+L)/35):"round-hexagon"===i?g=1.12*(o+F+L):"round-pentagon"===i?(g=1.13*(o+F+L),m=-(o/2+F+L)/15):"round-tag"===i?(g=1.12*(o+F+L),y=.07*(o/2+L+F)):"round-triangle"===i&&(g=(o+F+L)*(Math.PI/2),m=-(o+F/2+L)/Math.PI),0!==g&&(h=r*(u=(r+g)/r),["round-hexagon","round-tag"].includes(i)||(f=a*(c=(a+g)/a)));for(var b=h/2,x=f/2,w=(X="auto"===X?Nn(h,f):X)+(o+L+F)/2,E=new Array(p.length/2),k=new Array(p.length/2),T=0;T0){if(r=r||n.position(),null==a||null==i){var d=n.padding();a=n.width()+2*d,i=n.height()+2*d}this.colorFillStyle(t,l[0],l[1],l[2],s),this.nodeShapes[u].draw(t,r.x,r.y,a+2*o,i+2*o,c),t.fill()}}}};Yd.drawNodeOverlay=qd("overlay"),Yd.drawNodeUnderlay=qd("underlay"),Yd.hasPie=function(e){return(e=e[0])._private.hasPie},Yd.hasStripe=function(e){return(e=e[0])._private.hasStripe},Yd.drawPie=function(e,t,n,r){t=t[0],r=r||t.position();var a,i=t.cy().style(),o=t.pstyle("pie-size"),s=t.pstyle("pie-hole"),l=t.pstyle("pie-start-angle").pfValue,u=r.x,c=r.y,d=t.width(),h=t.height(),f=Math.min(d,h)/2,p=0;if(this.usePaths()&&(u=0,c=0),"%"===o.units?f*=o.pfValue:void 0!==o.pfValue&&(f=o.pfValue/2),"%"===s.units?a=f*s.pfValue:void 0!==s.pfValue&&(a=s.pfValue/2),!(a>=f))for(var v=1;v<=i.pieBackgroundN;v++){var g=t.pstyle("pie-"+v+"-background-size").value,y=t.pstyle("pie-"+v+"-background-color").value,m=t.pstyle("pie-"+v+"-background-opacity").value*n,b=g/100;b+p>1&&(b=1-p);var x=1.5*Math.PI+2*Math.PI*p,w=(x+=l)+2*Math.PI*b;0===g||p>=1||p+b>1||(0===a?(e.beginPath(),e.moveTo(u,c),e.arc(u,c,f,x,w),e.closePath()):(e.beginPath(),e.arc(u,c,f,x,w),e.arc(u,c,a,w,x,!0),e.closePath()),this.colorFillStyle(e,y[0],y[1],y[2],m),e.fill(),p+=b)}},Yd.drawStripe=function(e,t,n,r){t=t[0],r=r||t.position();var a=t.cy().style(),i=r.x,o=r.y,s=t.width(),l=t.height(),u=0,c=this.usePaths();e.save();var d=t.pstyle("stripe-direction").value,h=t.pstyle("stripe-size");switch(d){case"vertical":break;case"righward":e.rotate(-Math.PI/2)}var f=s,p=l;"%"===h.units?(f*=h.pfValue,p*=h.pfValue):void 0!==h.pfValue&&(f=h.pfValue,p=h.pfValue),c&&(i=0,o=0),o-=f/2,i-=p/2;for(var v=1;v<=a.stripeBackgroundN;v++){var g=t.pstyle("stripe-"+v+"-background-size").value,y=t.pstyle("stripe-"+v+"-background-color").value,m=t.pstyle("stripe-"+v+"-background-opacity").value*n,b=g/100;b+u>1&&(b=1-u),0===g||u>=1||u+b>1||(e.beginPath(),e.rect(i,o+p*u,f,p*b),e.closePath(),this.colorFillStyle(e,y[0],y[1],y[2],m),e.fill(),u+=b)}e.restore()};var Wd,Ud={};function Hd(e,t,n){var r=e.createShader(t);if(e.shaderSource(r,n),e.compileShader(r),!e.getShaderParameter(r,e.COMPILE_STATUS))throw new Error(e.getShaderInfoLog(r));return r}function Kd(e,t,n){void 0===n&&(n=t);var r=e.makeOffscreenCanvas(t,n),a=r.context=r.getContext("2d");return r.clear=function(){return a.clearRect(0,0,r.width,r.height)},r.clear(),r}function Gd(e){var t=e.pixelRatio,n=e.cy.zoom(),r=e.cy.pan();return{zoom:n*t,pan:{x:r.x*t,y:r.y*t}}}function Zd(e,t){return!!t.picking||"solid"===e.pstyle("background-fill").value&&("none"===e.pstyle("background-image").strValue&&(0===e.pstyle("border-width").value||(0===e.pstyle("border-opacity").value||"solid"===e.pstyle("border-style").value)))}function $d(e,t){if(e.length!==t.length)return!1;for(var n=0;n>8&255)/255,n[2]=(e>>16&255)/255,n[3]=(e>>24&255)/255,n}function eh(e){return e[0]+(e[1]<<8)+(e[2]<<16)+(e[3]<<24)}function th(e,t){switch(t){case"float":return[1,e.FLOAT,4];case"vec2":return[2,e.FLOAT,4];case"vec3":return[3,e.FLOAT,4];case"vec4":return[4,e.FLOAT,4];case"int":return[1,e.INT,4];case"ivec2":return[2,e.INT,4]}}function nh(e,t,n){switch(t){case e.FLOAT:return new Float32Array(n);case e.INT:return new Int32Array(n)}}function rh(e,t,n,r,a,i){switch(t){case e.FLOAT:return new Float32Array(n.buffer,i*r,a);case e.INT:return new Int32Array(n.buffer,i*r,a)}}function ah(e,t,n,r){var a=l(th(e,n),3),i=a[0],o=a[1],s=a[2],u=nh(e,o,t*i),c=i*s,d=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,d),e.bufferData(e.ARRAY_BUFFER,t*c,e.DYNAMIC_DRAW),e.enableVertexAttribArray(r),o===e.FLOAT?e.vertexAttribPointer(r,i,o,!1,c,0):o===e.INT&&e.vertexAttribIPointer(r,i,o,c,0),e.vertexAttribDivisor(r,1),e.bindBuffer(e.ARRAY_BUFFER,null);for(var h=new Array(t),f=0;ft.minMbLowQualFrames&&(t.motionBlurPxRatio=t.mbPxRBlurry)),t.clearingMotionBlur&&(t.motionBlurPxRatio=1),t.textureDrawLastFrame&&!d&&(c[t.NODE]=!0,c[t.SELECT_BOX]=!0);var m=n.style(),b=n.zoom(),x=void 0!==o?o:b,w=n.pan(),E={x:w.x,y:w.y},k={zoom:b,pan:{x:w.x,y:w.y}},T=t.prevViewport;void 0===T||k.zoom!==T.zoom||k.pan.x!==T.pan.x||k.pan.y!==T.pan.y||v&&!p||(t.motionBlurPxRatio=1),s&&(E=s),x*=l,E.x*=l,E.y*=l;var C=t.getCachedZSortedEles();function P(e,n,r,a,i){var o=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",t.colorFillStyle(e,255,255,255,t.motionBlurTransparency),e.fillRect(n,r,a,i),e.globalCompositeOperation=o}function S(e,n){var i,l,c,d;t.clearingMotionBlur||e!==u.bufferContexts[t.MOTIONBLUR_BUFFER_NODE]&&e!==u.bufferContexts[t.MOTIONBLUR_BUFFER_DRAG]?(i=E,l=x,c=t.canvasWidth,d=t.canvasHeight):(i={x:w.x*f,y:w.y*f},l=b*f,c=t.canvasWidth*f,d=t.canvasHeight*f),e.setTransform(1,0,0,1,0,0),"motionBlur"===n?P(e,0,0,c,d):r||void 0!==n&&!n||e.clearRect(0,0,c,d),a||(e.translate(i.x,i.y),e.scale(l,l)),s&&e.translate(s.x,s.y),o&&e.scale(o,o)}if(d||(t.textureDrawLastFrame=!1),d){if(t.textureDrawLastFrame=!0,!t.textureCache){t.textureCache={},t.textureCache.bb=n.mutableElements().boundingBox(),t.textureCache.texture=t.data.bufferCanvases[t.TEXTURE_BUFFER];var B=t.data.bufferContexts[t.TEXTURE_BUFFER];B.setTransform(1,0,0,1,0,0),B.clearRect(0,0,t.canvasWidth*t.textureMult,t.canvasHeight*t.textureMult),t.render({forcedContext:B,drawOnlyNodeLayer:!0,forcedPxRatio:l*t.textureMult}),(k=t.textureCache.viewport={zoom:n.zoom(),pan:n.pan(),width:t.canvasWidth,height:t.canvasHeight}).mpan={x:(0-k.pan.x)/k.zoom,y:(0-k.pan.y)/k.zoom}}c[t.DRAG]=!1,c[t.NODE]=!1;var D=u.contexts[t.NODE],_=t.textureCache.texture;k=t.textureCache.viewport;D.setTransform(1,0,0,1,0,0),h?P(D,0,0,k.width,k.height):D.clearRect(0,0,k.width,k.height);var A=m.core("outside-texture-bg-color").value,M=m.core("outside-texture-bg-opacity").value;t.colorFillStyle(D,A[0],A[1],A[2],M),D.fillRect(0,0,k.width,k.height);b=n.zoom();S(D,!1),D.clearRect(k.mpan.x,k.mpan.y,k.width/k.zoom/l,k.height/k.zoom/l),D.drawImage(_,k.mpan.x,k.mpan.y,k.width/k.zoom/l,k.height/k.zoom/l)}else t.textureOnViewport&&!r&&(t.textureCache=null);var R=n.extent(),I=t.pinching||t.hoverData.dragging||t.swipePanning||t.data.wheelZooming||t.hoverData.draggingEles||t.cy.animated(),N=t.hideEdgesOnViewport&&I,L=[];if(L[t.NODE]=!c[t.NODE]&&h&&!t.clearedForMotionBlur[t.NODE]||t.clearingMotionBlur,L[t.NODE]&&(t.clearedForMotionBlur[t.NODE]=!0),L[t.DRAG]=!c[t.DRAG]&&h&&!t.clearedForMotionBlur[t.DRAG]||t.clearingMotionBlur,L[t.DRAG]&&(t.clearedForMotionBlur[t.DRAG]=!0),c[t.NODE]||a||i||L[t.NODE]){var z=h&&!L[t.NODE]&&1!==f;S(D=r||(z?t.data.bufferContexts[t.MOTIONBLUR_BUFFER_NODE]:u.contexts[t.NODE]),h&&!z?"motionBlur":void 0),N?t.drawCachedNodes(D,C.nondrag,l,R):t.drawLayeredElements(D,C.nondrag,l,R),t.debug&&t.drawDebugPoints(D,C.nondrag),a||h||(c[t.NODE]=!1)}if(!i&&(c[t.DRAG]||a||L[t.DRAG])){z=h&&!L[t.DRAG]&&1!==f;S(D=r||(z?t.data.bufferContexts[t.MOTIONBLUR_BUFFER_DRAG]:u.contexts[t.DRAG]),h&&!z?"motionBlur":void 0),N?t.drawCachedNodes(D,C.drag,l,R):t.drawCachedElements(D,C.drag,l,R),t.debug&&t.drawDebugPoints(D,C.drag),a||h||(c[t.DRAG]=!1)}if(this.drawSelectionRectangle(e,S),h&&1!==f){var O=u.contexts[t.NODE],V=t.data.bufferCanvases[t.MOTIONBLUR_BUFFER_NODE],F=u.contexts[t.DRAG],X=t.data.bufferCanvases[t.MOTIONBLUR_BUFFER_DRAG],j=function(e,n,r){e.setTransform(1,0,0,1,0,0),r||!y?e.clearRect(0,0,t.canvasWidth,t.canvasHeight):P(e,0,0,t.canvasWidth,t.canvasHeight);var a=f;e.drawImage(n,0,0,t.canvasWidth*a,t.canvasHeight*a,0,0,t.canvasWidth,t.canvasHeight)};(c[t.NODE]||L[t.NODE])&&(j(O,V,L[t.NODE]),c[t.NODE]=!1),(c[t.DRAG]||L[t.DRAG])&&(j(F,X,L[t.DRAG]),c[t.DRAG]=!1)}t.prevViewport=k,t.clearingMotionBlur&&(t.clearingMotionBlur=!1,t.motionBlurCleared=!0,t.motionBlur=!0),h&&(t.motionBlurTimeout=setTimeout(function(){t.motionBlurTimeout=null,t.clearedForMotionBlur[t.NODE]=!1,t.clearedForMotionBlur[t.DRAG]=!1,t.motionBlur=!1,t.clearingMotionBlur=!d,t.mbFrames=0,c[t.NODE]=!0,c[t.DRAG]=!0,t.redraw()},100)),r||n.emit("render")},Ud.drawSelectionRectangle=function(e,t){var n=this,r=n.cy,a=n.data,i=r.style(),o=e.drawOnlyNodeLayer,s=e.drawAllLayers,l=a.canvasNeedsRedraw,u=e.forcedContext;if(n.showFps||!o&&l[n.SELECT_BOX]&&!s){var c=u||a.contexts[n.SELECT_BOX];if(t(c),1==n.selection[4]&&(n.hoverData.selecting||n.touchData.selecting)){var d=n.cy.zoom(),h=i.core("selection-box-border-width").value/d;c.lineWidth=h,c.fillStyle="rgba("+i.core("selection-box-color").value[0]+","+i.core("selection-box-color").value[1]+","+i.core("selection-box-color").value[2]+","+i.core("selection-box-opacity").value+")",c.fillRect(n.selection[0],n.selection[1],n.selection[2]-n.selection[0],n.selection[3]-n.selection[1]),h>0&&(c.strokeStyle="rgba("+i.core("selection-box-border-color").value[0]+","+i.core("selection-box-border-color").value[1]+","+i.core("selection-box-border-color").value[2]+","+i.core("selection-box-opacity").value+")",c.strokeRect(n.selection[0],n.selection[1],n.selection[2]-n.selection[0],n.selection[3]-n.selection[1]))}if(a.bgActivePosistion&&!n.hoverData.selecting){d=n.cy.zoom();var f=a.bgActivePosistion;c.fillStyle="rgba("+i.core("active-bg-color").value[0]+","+i.core("active-bg-color").value[1]+","+i.core("active-bg-color").value[2]+","+i.core("active-bg-opacity").value+")",c.beginPath(),c.arc(f.x,f.y,i.core("active-bg-size").pfValue/d,0,2*Math.PI),c.fill()}var p=n.lastRedrawTime;if(n.showFps&&p){p=Math.round(p);var v=Math.round(1e3/p),g="1 frame = "+p+" ms = "+v+" fps";if(c.setTransform(1,0,0,1,0,0),c.fillStyle="rgba(255, 0, 0, 0.75)",c.strokeStyle="rgba(255, 0, 0, 0.75)",c.font="30px Arial",!Wd){var y=c.measureText(g);Wd=y.actualBoundingBoxAscent}c.fillText(g,0,Wd);c.strokeRect(0,Wd+10,250,20),c.fillRect(0,Wd+10,250*Math.min(v/60,1),20)}s||(l[n.SELECT_BOX]=!1)}};var ih="undefined"!=typeof Float32Array?Float32Array:Array;function oh(){var e=new ih(9);return ih!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}function sh(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e}function lh(e,t,n){var r=t[0],a=t[1],i=t[2],o=t[3],s=t[4],l=t[5],u=t[6],c=t[7],d=t[8],h=n[0],f=n[1];return e[0]=r,e[1]=a,e[2]=i,e[3]=o,e[4]=s,e[5]=l,e[6]=h*r+f*o+u,e[7]=h*a+f*s+c,e[8]=h*i+f*l+d,e}function uh(e,t,n){var r=t[0],a=t[1],i=t[2],o=t[3],s=t[4],l=t[5],u=t[6],c=t[7],d=t[8],h=Math.sin(n),f=Math.cos(n);return e[0]=f*r+h*o,e[1]=f*a+h*s,e[2]=f*i+h*l,e[3]=f*o-h*r,e[4]=f*s-h*a,e[5]=f*l-h*i,e[6]=u,e[7]=c,e[8]=d,e}function ch(e,t,n){var r=n[0],a=n[1];return e[0]=r*t[0],e[1]=r*t[1],e[2]=r*t[2],e[3]=a*t[3],e[4]=a*t[4],e[5]=a*t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var dh=function(){return i(function e(t,n,r,i){a(this,e),this.debugID=Math.floor(1e4*Math.random()),this.r=t,this.texSize=n,this.texRows=r,this.texHeight=Math.floor(n/r),this.enableWrapping=!0,this.locked=!1,this.texture=null,this.needsBuffer=!0,this.freePointer={x:0,row:0},this.keyToLocation=new Map,this.canvas=i(t,n,n),this.scratch=i(t,n,this.texHeight,"scratch")},[{key:"lock",value:function(){this.locked=!0}},{key:"getKeys",value:function(){return new Set(this.keyToLocation.keys())}},{key:"getScale",value:function(e){var t=e.w,n=e.h,r=this.texHeight,a=this.texSize,i=r/n,o=t*i,s=n*i;return o>a&&(o=t*(i=a/t),s=n*i),{scale:i,texW:o,texH:s}}},{key:"draw",value:function(e,t,n){var r=this;if(this.locked)throw new Error("can't draw, atlas is locked");var a=this.texSize,i=this.texRows,o=this.texHeight,s=this.getScale(t),l=s.scale,u=s.texW,c=s.texH,d=function(e,r){if(n&&r){var a=r.context,i=e.x,s=e.row,u=i,c=o*s;a.save(),a.translate(u,c),a.scale(l,l),n(a,t),a.restore()}},h=[null,null],f=function(){d(r.freePointer,r.canvas),h[0]={x:r.freePointer.x,y:r.freePointer.row*o,w:u,h:c},h[1]={x:r.freePointer.x+u,y:r.freePointer.row*o,w:0,h:c},r.freePointer.x+=u,r.freePointer.x==a&&(r.freePointer.x=0,r.freePointer.row++)},p=function(){r.freePointer.x=0,r.freePointer.row++};if(this.freePointer.x+u<=a)f();else{if(this.freePointer.row>=i-1)return!1;this.freePointer.x===a?(p(),f()):this.enableWrapping?function(){var e=r.scratch,t=r.canvas;e.clear(),d({x:0,row:0},e);var n=a-r.freePointer.x,i=u-n,s=o,l=r.freePointer.x,f=r.freePointer.row*o,p=n;t.context.drawImage(e,0,0,p,s,l,f,p,s),h[0]={x:l,y:f,w:p,h:c};var v=n,g=(r.freePointer.row+1)*o,y=i;t&&t.context.drawImage(e,v,0,y,s,0,g,y,s),h[1]={x:0,y:g,w:y,h:c},r.freePointer.x=i,r.freePointer.row++}():(p(),f())}return this.keyToLocation.set(e,h),this.needsBuffer=!0,h}},{key:"getOffsets",value:function(e){return this.keyToLocation.get(e)}},{key:"isEmpty",value:function(){return 0===this.freePointer.x&&0===this.freePointer.row}},{key:"canFit",value:function(e){if(this.locked)return!1;var t=this.texSize,n=this.texRows,r=this.getScale(e).texW;return!(this.freePointer.x+r>t)||this.freePointer.row1&&void 0!==arguments[1]?arguments[1]:{},a=r.forceRedraw,i=void 0!==a&&a,s=r.filterEle,l=void 0===s?function(){return!0}:s,u=r.filterType,c=void 0===u?function(){return!0}:u,d=!1,h=!1,f=o(e);try{for(f.s();!(t=f.n()).done;){var p=t.value;if(l(p)){var v,g=o(this.renderTypes.values());try{var y=function(){var e=v.value,t=e.type;if(c(t)){var r=n.collections.get(e.collection),a=e.getKey(p),o=Array.isArray(a)?a:[a];if(i)o.forEach(function(e){return r.markKeyForGC(e)}),h=!0;else{var s=e.getID?e.getID(p):p.id(),l=n._key(t,s),u=n.typeAndIdToKey.get(l);void 0===u||$d(o,u)||(d=!0,n.typeAndIdToKey.delete(l),u.forEach(function(e){return r.markKeyForGC(e)}))}}};for(g.s();!(v=g.n()).done;)y()}catch(m){g.e(m)}finally{g.f()}}}}catch(m){f.e(m)}finally{f.f()}return h&&(this.gc(),d=!1),d}},{key:"gc",value:function(){var e,t=o(this.collections.values());try{for(t.s();!(e=t.n()).done;){e.value.gc()}}catch(n){t.e(n)}finally{t.f()}}},{key:"getOrCreateAtlas",value:function(e,t,n,r){var a=this.renderTypes.get(t),i=this.collections.get(a.collection),o=!1,s=i.draw(r,n,function(t){a.drawClipped?(t.save(),t.beginPath(),t.rect(0,0,n.w,n.h),t.clip(),a.drawElement(t,e,n,!0,!0),t.restore()):a.drawElement(t,e,n,!0,!0),o=!0});if(o){var l=a.getID?a.getID(e):e.id(),u=this._key(t,l);this.typeAndIdToKey.has(u)?this.typeAndIdToKey.get(u).push(r):this.typeAndIdToKey.set(u,[r])}return s}},{key:"getAtlasInfo",value:function(e,t){var n=this,r=this.renderTypes.get(t),a=r.getKey(e);return(Array.isArray(a)?a:[a]).map(function(a){var i=r.getBoundingBox(e,a),o=n.getOrCreateAtlas(e,t,i,a),s=l(o.getOffsets(a),2),u=s[0];return{atlas:o,tex:u,tex1:u,tex2:s[1],bb:i}})}},{key:"getDebugInfo",value:function(){var e,t=[],n=o(this.collections);try{for(n.s();!(e=n.n()).done;){var r=l(e.value,2),a=r[0],i=r[1].getCounts(),s=i.keyCount,u=i.atlasCount;t.push({type:a,keyCount:s,atlasCount:u})}}catch(c){n.e(c)}finally{n.f()}return t}}])}(),ph=function(){return i(function e(t){a(this,e),this.globalOptions=t,this.atlasSize=t.webglTexSize,this.maxAtlasesPerBatch=t.webglTexPerBatch,this.batchAtlases=[]},[{key:"getMaxAtlasesPerBatch",value:function(){return this.maxAtlasesPerBatch}},{key:"getAtlasSize",value:function(){return this.atlasSize}},{key:"getIndexArray",value:function(){return Array.from({length:this.maxAtlasesPerBatch},function(e,t){return t})}},{key:"startBatch",value:function(){this.batchAtlases=[]}},{key:"getAtlasCount",value:function(){return this.batchAtlases.length}},{key:"getAtlases",value:function(){return this.batchAtlases}},{key:"canAddToCurrentBatch",value:function(e){return this.batchAtlases.length!==this.maxAtlasesPerBatch||this.batchAtlases.includes(e)}},{key:"getAtlasIndexForBatch",value:function(e){var t=this.batchAtlases.indexOf(e);if(t<0){if(this.batchAtlases.length===this.maxAtlasesPerBatch)throw new Error("cannot add more atlases to batch");this.batchAtlases.push(e),t=this.batchAtlases.length-1}return t}}])}(),vh={SCREEN:{name:"screen",screen:!0},PICKING:{name:"picking",picking:!0}},gh=1,yh=2,mh=function(){return i(function e(t,n,r){a(this,e),this.r=t,this.gl=n,this.maxInstances=r.webglBatchSize,this.atlasSize=r.webglTexSize,this.bgColor=r.bgColor,this.debug=r.webglDebug,this.batchDebugInfo=[],r.enableWrapping=!0,r.createTextureCanvas=Kd,this.atlasManager=new fh(t,r),this.batchManager=new ph(r),this.simpleShapeOptions=new Map,this.program=this._createShaderProgram(vh.SCREEN),this.pickingProgram=this._createShaderProgram(vh.PICKING),this.vao=this._createVAO()},[{key:"addAtlasCollection",value:function(e,t){this.atlasManager.addAtlasCollection(e,t)}},{key:"addTextureAtlasRenderType",value:function(e,t){this.atlasManager.addRenderType(e,t)}},{key:"addSimpleShapeRenderType",value:function(e,t){this.simpleShapeOptions.set(e,t)}},{key:"invalidate",value:function(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).type,n=this.atlasManager;return t?n.invalidate(e,{filterType:function(e){return e===t},forceRedraw:!0}):n.invalidate(e)}},{key:"gc",value:function(){this.atlasManager.gc()}},{key:"_createShaderProgram",value:function(e){var t=this.gl,n="#version 300 es\n precision highp float;\n\n uniform mat3 uPanZoomMatrix;\n uniform int uAtlasSize;\n \n // instanced\n in vec2 aPosition; // a vertex from the unit square\n \n in mat3 aTransform; // used to transform verticies, eg into a bounding box\n in int aVertType; // the type of thing we are rendering\n\n // the z-index that is output when using picking mode\n in vec4 aIndex;\n \n // For textures\n in int aAtlasId; // which shader unit/atlas to use\n in vec4 aTex; // x/y/w/h of texture in atlas\n\n // for edges\n in vec4 aPointAPointB;\n in vec4 aPointCPointD;\n in vec2 aLineWidth; // also used for node border width\n\n // simple shapes\n in vec4 aCornerRadius; // for round-rectangle [top-right, bottom-right, top-left, bottom-left]\n in vec4 aColor; // also used for edges\n in vec4 aBorderColor; // aLineWidth is used for border width\n\n // output values passed to the fragment shader\n out vec2 vTexCoord;\n out vec4 vColor;\n out vec2 vPosition;\n // flat values are not interpolated\n flat out int vAtlasId; \n flat out int vVertType;\n flat out vec2 vTopRight;\n flat out vec2 vBotLeft;\n flat out vec4 vCornerRadius;\n flat out vec4 vBorderColor;\n flat out vec2 vBorderWidth;\n flat out vec4 vIndex;\n \n void main(void) {\n int vid = gl_VertexID;\n vec2 position = aPosition; // TODO make this a vec3, simplifies some code below\n\n if(aVertType == ".concat(0,") {\n float texX = aTex.x; // texture coordinates\n float texY = aTex.y;\n float texW = aTex.z;\n float texH = aTex.w;\n\n if(vid == 1 || vid == 2 || vid == 4) {\n texX += texW;\n }\n if(vid == 2 || vid == 4 || vid == 5) {\n texY += texH;\n }\n\n float d = float(uAtlasSize);\n vTexCoord = vec2(texX / d, texY / d); // tex coords must be between 0 and 1\n\n gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);\n }\n else if(aVertType == ").concat(4," || aVertType == ").concat(7," \n || aVertType == ").concat(5," || aVertType == ").concat(6,") { // simple shapes\n\n // the bounding box is needed by the fragment shader\n vBotLeft = (aTransform * vec3(0, 0, 1)).xy; // flat\n vTopRight = (aTransform * vec3(1, 1, 1)).xy; // flat\n vPosition = (aTransform * vec3(position, 1)).xy; // will be interpolated\n\n // calculations are done in the fragment shader, just pass these along\n vColor = aColor;\n vCornerRadius = aCornerRadius;\n vBorderColor = aBorderColor;\n vBorderWidth = aLineWidth;\n\n gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);\n }\n else if(aVertType == ").concat(1,") {\n vec2 source = aPointAPointB.xy;\n vec2 target = aPointAPointB.zw;\n\n // adjust the geometry so that the line is centered on the edge\n position.y = position.y - 0.5;\n\n // stretch the unit square into a long skinny rectangle\n vec2 xBasis = target - source;\n vec2 yBasis = normalize(vec2(-xBasis.y, xBasis.x));\n vec2 point = source + xBasis * position.x + yBasis * aLineWidth[0] * position.y;\n\n gl_Position = vec4(uPanZoomMatrix * vec3(point, 1.0), 1.0);\n vColor = aColor;\n } \n else if(aVertType == ").concat(2,") {\n vec2 pointA = aPointAPointB.xy;\n vec2 pointB = aPointAPointB.zw;\n vec2 pointC = aPointCPointD.xy;\n vec2 pointD = aPointCPointD.zw;\n\n // adjust the geometry so that the line is centered on the edge\n position.y = position.y - 0.5;\n\n vec2 p0, p1, p2, pos;\n if(position.x == 0.0) { // The left side of the unit square\n p0 = pointA;\n p1 = pointB;\n p2 = pointC;\n pos = position;\n } else { // The right side of the unit square, use same approach but flip the geometry upside down\n p0 = pointD;\n p1 = pointC;\n p2 = pointB;\n pos = vec2(0.0, -position.y);\n }\n\n vec2 p01 = p1 - p0;\n vec2 p12 = p2 - p1;\n vec2 p21 = p1 - p2;\n\n // Find the normal vector.\n vec2 tangent = normalize(normalize(p12) + normalize(p01));\n vec2 normal = vec2(-tangent.y, tangent.x);\n\n // Find the vector perpendicular to p0 -> p1.\n vec2 p01Norm = normalize(vec2(-p01.y, p01.x));\n\n // Determine the bend direction.\n float sigma = sign(dot(p01 + p21, normal));\n float width = aLineWidth[0];\n\n if(sign(pos.y) == -sigma) {\n // This is an intersecting vertex. Adjust the position so that there's no overlap.\n vec2 point = 0.5 * width * normal * -sigma / dot(normal, p01Norm);\n gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0);\n } else {\n // This is a non-intersecting vertex. Treat it like a mitre join.\n vec2 point = 0.5 * width * normal * sigma * dot(normal, p01Norm);\n gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0);\n }\n\n vColor = aColor;\n } \n else if(aVertType == ").concat(3," && vid < 3) {\n // massage the first triangle into an edge arrow\n if(vid == 0)\n position = vec2(-0.15, -0.3);\n if(vid == 1)\n position = vec2( 0.0, 0.0);\n if(vid == 2)\n position = vec2( 0.15, -0.3);\n\n gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);\n vColor = aColor;\n }\n else {\n gl_Position = vec4(2.0, 0.0, 0.0, 1.0); // discard vertex by putting it outside webgl clip space\n }\n\n vAtlasId = aAtlasId;\n vVertType = aVertType;\n vIndex = aIndex;\n }\n "),r=this.batchManager.getIndexArray(),a="#version 300 es\n precision highp float;\n\n // declare texture unit for each texture atlas in the batch\n ".concat(r.map(function(e){return"uniform sampler2D uTexture".concat(e,";")}).join("\n\t"),"\n\n uniform vec4 uBGColor;\n uniform float uZoom;\n\n in vec2 vTexCoord;\n in vec4 vColor;\n in vec2 vPosition; // model coordinates\n\n flat in int vAtlasId;\n flat in vec4 vIndex;\n flat in int vVertType;\n flat in vec2 vTopRight;\n flat in vec2 vBotLeft;\n flat in vec4 vCornerRadius;\n flat in vec4 vBorderColor;\n flat in vec2 vBorderWidth;\n\n out vec4 outColor;\n\n ").concat("\n float circleSD(vec2 p, float r) {\n return distance(vec2(0), p) - r; // signed distance\n }\n","\n ").concat("\n float rectangleSD(vec2 p, vec2 b) {\n vec2 d = abs(p)-b;\n return distance(vec2(0),max(d,0.0)) + min(max(d.x,d.y),0.0);\n }\n","\n ").concat("\n float roundRectangleSD(vec2 p, vec2 b, vec4 cr) {\n cr.xy = (p.x > 0.0) ? cr.xy : cr.zw;\n cr.x = (p.y > 0.0) ? cr.x : cr.y;\n vec2 q = abs(p) - b + cr.x;\n return min(max(q.x, q.y), 0.0) + distance(vec2(0), max(q, 0.0)) - cr.x;\n }\n","\n ").concat("\n float ellipseSD(vec2 p, vec2 ab) {\n p = abs( p ); // symmetry\n\n // find root with Newton solver\n vec2 q = ab*(p-ab);\n float w = (q.x1.0) ? d : -d;\n }\n","\n\n vec4 blend(vec4 top, vec4 bot) { // blend colors with premultiplied alpha\n return vec4( \n top.rgb + (bot.rgb * (1.0 - top.a)),\n top.a + (bot.a * (1.0 - top.a)) \n );\n }\n\n vec4 distInterp(vec4 cA, vec4 cB, float d) { // interpolate color using Signed Distance\n // scale to the zoom level so that borders don't look blurry when zoomed in\n // note 1.5 is an aribitrary value chosen because it looks good\n return mix(cA, cB, 1.0 - smoothstep(0.0, 1.5 / uZoom, abs(d))); \n }\n\n void main(void) {\n if(vVertType == ").concat(0,") {\n // look up the texel from the texture unit\n ").concat(r.map(function(e){return"if(vAtlasId == ".concat(e,") outColor = texture(uTexture").concat(e,", vTexCoord);")}).join("\n\telse "),"\n } \n else if(vVertType == ").concat(3,") {\n // mimics how canvas renderer uses context.globalCompositeOperation = 'destination-out';\n outColor = blend(vColor, uBGColor);\n outColor.a = 1.0; // make opaque, masks out line under arrow\n }\n else if(vVertType == ").concat(4," && vBorderWidth == vec2(0.0)) { // simple rectangle with no border\n outColor = vColor; // unit square is already transformed to the rectangle, nothing else needs to be done\n }\n else if(vVertType == ").concat(4," || vVertType == ").concat(7," \n || vVertType == ").concat(5," || vVertType == ").concat(6,") { // use SDF\n\n float outerBorder = vBorderWidth[0];\n float innerBorder = vBorderWidth[1];\n float borderPadding = outerBorder * 2.0;\n float w = vTopRight.x - vBotLeft.x - borderPadding;\n float h = vTopRight.y - vBotLeft.y - borderPadding;\n vec2 b = vec2(w/2.0, h/2.0); // half width, half height\n vec2 p = vPosition - vec2(vTopRight.x - b[0] - outerBorder, vTopRight.y - b[1] - outerBorder); // translate to center\n\n float d; // signed distance\n if(vVertType == ").concat(4,") {\n d = rectangleSD(p, b);\n } else if(vVertType == ").concat(7," && w == h) {\n d = circleSD(p, b.x); // faster than ellipse\n } else if(vVertType == ").concat(7,") {\n d = ellipseSD(p, b);\n } else {\n d = roundRectangleSD(p, b, vCornerRadius.wzyx);\n }\n\n // use the distance to interpolate a color to smooth the edges of the shape, doesn't need multisampling\n // we must smooth colors inwards, because we can't change pixels outside the shape's bounding box\n if(d > 0.0) {\n if(d > outerBorder) {\n discard;\n } else {\n outColor = distInterp(vBorderColor, vec4(0), d - outerBorder);\n }\n } else {\n if(d > innerBorder) {\n vec4 outerColor = outerBorder == 0.0 ? vec4(0) : vBorderColor;\n vec4 innerBorderColor = blend(vBorderColor, vColor);\n outColor = distInterp(innerBorderColor, outerColor, d);\n } \n else {\n vec4 outerColor;\n if(innerBorder == 0.0 && outerBorder == 0.0) {\n outerColor = vec4(0);\n } else if(innerBorder == 0.0) {\n outerColor = vBorderColor;\n } else {\n outerColor = blend(vBorderColor, vColor);\n }\n outColor = distInterp(vColor, outerColor, d - innerBorder);\n }\n }\n }\n else {\n outColor = vColor;\n }\n\n ").concat(e.picking?"if(outColor.a == 0.0) discard;\n else outColor = vIndex;":"","\n }\n "),i=function(e,t,n){var r=Hd(e,e.VERTEX_SHADER,t),a=Hd(e,e.FRAGMENT_SHADER,n),i=e.createProgram();if(e.attachShader(i,r),e.attachShader(i,a),e.linkProgram(i),!e.getProgramParameter(i,e.LINK_STATUS))throw new Error("Could not initialize shaders");return i}(t,n,a);i.aPosition=t.getAttribLocation(i,"aPosition"),i.aIndex=t.getAttribLocation(i,"aIndex"),i.aVertType=t.getAttribLocation(i,"aVertType"),i.aTransform=t.getAttribLocation(i,"aTransform"),i.aAtlasId=t.getAttribLocation(i,"aAtlasId"),i.aTex=t.getAttribLocation(i,"aTex"),i.aPointAPointB=t.getAttribLocation(i,"aPointAPointB"),i.aPointCPointD=t.getAttribLocation(i,"aPointCPointD"),i.aLineWidth=t.getAttribLocation(i,"aLineWidth"),i.aColor=t.getAttribLocation(i,"aColor"),i.aCornerRadius=t.getAttribLocation(i,"aCornerRadius"),i.aBorderColor=t.getAttribLocation(i,"aBorderColor"),i.uPanZoomMatrix=t.getUniformLocation(i,"uPanZoomMatrix"),i.uAtlasSize=t.getUniformLocation(i,"uAtlasSize"),i.uBGColor=t.getUniformLocation(i,"uBGColor"),i.uZoom=t.getUniformLocation(i,"uZoom"),i.uTextures=[];for(var o=0;o1&&void 0!==arguments[1]?arguments[1]:vh.SCREEN;this.panZoomMatrix=e,this.renderTarget=t,this.batchDebugInfo=[],this.wrappedCount=0,this.simpleCount=0,this.startBatch()}},{key:"startBatch",value:function(){this.instanceCount=0,this.batchManager.startBatch()}},{key:"endFrame",value:function(){this.endBatch()}},{key:"_isVisible",value:function(e,t){return!!e.visible()&&(!t||!t.isVisible||t.isVisible(e))}},{key:"drawTexture",value:function(e,t,n){var r=this.atlasManager,a=this.batchManager,i=r.getRenderTypeOpts(n);if(this._isVisible(e,i)&&(!e.isEdge()||this._isValidEdge(e))){if(this.renderTarget.picking&&i.getTexPickingMode){var s=i.getTexPickingMode(e);if(s===gh)return;if(s==yh)return void this.drawPickingRectangle(e,t,n)}var u,c=o(r.getAtlasInfo(e,n));try{for(c.s();!(u=c.n()).done;){var d=u.value,h=d.atlas,f=d.tex1,p=d.tex2;a.canAddToCurrentBatch(h)||this.endBatch();for(var v=a.getAtlasIndexForBatch(h),g=0,y=[[f,!0],[p,!1]];g=this.maxInstances&&this.endBatch()}}}}catch(T){c.e(T)}finally{c.f()}}}},{key:"setTransformMatrix",value:function(e,t,n,r){var a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],i=0;if(n.shapeProps&&n.shapeProps.padding&&(i=e.pstyle(n.shapeProps.padding).pfValue),r){var o=r.bb,s=r.tex1,l=r.tex2,u=s.w/(s.w+l.w);a||(u=1-u);var c=this._getAdjustedBB(o,i,a,u);this._applyTransformMatrix(t,c,n,e)}else{var d=n.getBoundingBox(e),h=this._getAdjustedBB(d,i,!0,1);this._applyTransformMatrix(t,h,n,e)}}},{key:"_applyTransformMatrix",value:function(e,t,n,r){var a,i;sh(e);var o=n.getRotation?n.getRotation(r):0;if(0!==o){var s=n.getRotationPoint(r);lh(e,e,[s.x,s.y]),uh(e,e,o);var l=n.getRotationOffset(r);a=l.x+(t.xOffset||0),i=l.y+(t.yOffset||0)}else a=t.x1,i=t.y1;lh(e,e,[a,i]),ch(e,e,[t.w,t.h])}},{key:"_getAdjustedBB",value:function(e,t,n,r){var a=e.x1,i=e.y1,o=e.w,s=e.h;t&&(a-=t,i-=t,o+=2*t,s+=2*t);var l=0,u=o*r;return n&&r<1?o=u:!n&&r<1&&(a+=l=o-u,o=u),{x1:a,y1:i,w:o,h:s,xOffset:l,yOffset:e.yOffset}}},{key:"drawPickingRectangle",value:function(e,t,n){var r=this.atlasManager.getRenderTypeOpts(n),a=this.instanceCount;this.vertTypeBuffer.getView(a)[0]=4,Jd(t,this.indexBuffer.getView(a)),Qd([0,0,0],1,this.colorBuffer.getView(a));var i=this.transformBuffer.getMatrixView(a);this.setTransformMatrix(e,i,r),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}},{key:"drawNode",value:function(e,t,n){var r=this.simpleShapeOptions.get(n);if(this._isVisible(e,r)){var a=r.shapeProps,i=this._getVertTypeForShape(e,a.shape);if(void 0===i||r.isSimple&&!r.isSimple(e,this.renderTarget))this.drawTexture(e,t,n);else{var o=this.instanceCount;if(this.vertTypeBuffer.getView(o)[0]=i,5===i||6===i){var s=r.getBoundingBox(e),l=this._getCornerRadius(e,a.radius,s),u=this.cornerRadiusBuffer.getView(o);u[0]=l,u[1]=l,u[2]=l,u[3]=l,6===i&&(u[0]=0,u[2]=0)}Jd(t,this.indexBuffer.getView(o));var c=this.renderTarget.picking?1:"node-body"===n?e.effectiveOpacity():1,d=this.renderTarget.picking?1:e.pstyle(a.opacity).value*c;Qd(e.pstyle(a.color).value,d,this.colorBuffer.getView(o));var h=this.lineWidthBuffer.getView(o);if(h[0]=0,h[1]=0,a.border){var f=e.pstyle("border-width").value;if(f>0){Qd(e.pstyle("border-color").value,c*e.pstyle("border-opacity").value,this.borderColorBuffer.getView(o));var p=e.pstyle("border-position").value;if("inside"===p)h[0]=0,h[1]=-f;else if("outside"===p)h[0]=f,h[1]=0;else{var v=f/2;h[0]=v,h[1]=-v}}}var g=this.transformBuffer.getMatrixView(o);this.setTransformMatrix(e,g,r),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}},{key:"_getVertTypeForShape",value:function(e,t){switch(e.pstyle(t).value){case"rectangle":return 4;case"ellipse":return 7;case"roundrectangle":case"round-rectangle":return 5;case"bottom-round-rectangle":return 6;default:return}}},{key:"_getCornerRadius",value:function(e,t,n){var r=n.w,a=n.h;if("auto"===e.pstyle(t).value)return In(r,a);var i=e.pstyle(t).pfValue,o=r/2,s=a/2;return Math.min(i,s,o)}},{key:"drawEdgeArrow",value:function(e,t,n){if(e.visible()){var r,a,i,o=e._private.rscratch;if("source"===n?(r=o.arrowStartX,a=o.arrowStartY,i=o.srcArrowAngle):(r=o.arrowEndX,a=o.arrowEndY,i=o.tgtArrowAngle),!(isNaN(r)||null==r||isNaN(a)||null==a||isNaN(i)||null==i))if("none"!==e.pstyle(n+"-arrow-shape").value){var s=e.pstyle(n+"-arrow-color").value,l=e.pstyle("opacity").value*e.pstyle("line-opacity").value,u=e.pstyle("width").pfValue,c=e.pstyle("arrow-scale").value,d=this.r.getArrowWidth(u,c),h=this.instanceCount,f=this.transformBuffer.getMatrixView(h);sh(f),lh(f,f,[r,a]),ch(f,f,[d,d]),uh(f,f,i),this.vertTypeBuffer.getView(h)[0]=3,Jd(t,this.indexBuffer.getView(h)),Qd(s,l,this.colorBuffer.getView(h)),this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}},{key:"drawEdgeLine",value:function(e,t){if(e.visible()){var n=this._getEdgePoints(e);if(n){var r=e.pstyle("opacity").value,a=e.pstyle("line-opacity").value,i=e.pstyle("width").pfValue,o=e.pstyle("line-color").value,s=r*a;if(n.length/2+this.instanceCount>this.maxInstances&&this.endBatch(),4==n.length){var l=this.instanceCount;this.vertTypeBuffer.getView(l)[0]=1,Jd(t,this.indexBuffer.getView(l)),Qd(o,s,this.colorBuffer.getView(l)),this.lineWidthBuffer.getView(l)[0]=i;var u=this.pointAPointBBuffer.getView(l);u[0]=n[0],u[1]=n[1],u[2]=n[2],u[3]=n[3],this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}else for(var c=0;c=this.maxInstances&&this.endBatch()}}}}},{key:"_isValidEdge",value:function(e){var t=e._private.rscratch;return!t.badLine&&null!=t.allpts&&!isNaN(t.allpts[0])}},{key:"_getEdgePoints",value:function(e){var t=e._private.rscratch;if(this._isValidEdge(e)){var n=t.allpts;if(4==n.length)return n;var r=this._getNumSegments(e);return this._getCurveSegmentPoints(n,r)}}},{key:"_getNumSegments",value:function(e){return Math.min(Math.max(15,5),this.maxInstances)}},{key:"_getCurveSegmentPoints",value:function(e,t){if(4==e.length)return e;for(var n=Array(2*(t+1)),r=0;r<=t;r++)if(0==r)n[0]=e[0],n[1]=e[1];else if(r==t)n[2*r]=e[e.length-2],n[2*r+1]=e[e.length-1];else{var a=r/t;this._setCurvePoint(e,a,n,2*r)}return n}},{key:"_setCurvePoint",value:function(e,t,n,r){if(!(e.length<=2)){for(var a=Array(e.length-2),i=0;i0}},u=function(e){return"yes"===e.pstyle("text-events").strValue?yh:gh},c=function(e){var t=e.position(),n=t.x,r=t.y,a=e.outerWidth(),i=e.outerHeight();return{w:a,h:i,x1:n-a/2,y1:r-i/2}};n.drawing.addAtlasCollection("node",{texRows:e.webglTexRowsNodes}),n.drawing.addAtlasCollection("label",{texRows:e.webglTexRows}),n.drawing.addTextureAtlasRenderType("node-body",{collection:"node",getKey:t.getStyleKey,getBoundingBox:t.getElementBox,drawElement:t.drawElement}),n.drawing.addSimpleShapeRenderType("node-body",{getBoundingBox:c,isSimple:Zd,shapeProps:{shape:"shape",color:"background-color",opacity:"background-opacity",radius:"corner-radius",border:!0}}),n.drawing.addSimpleShapeRenderType("node-overlay",{getBoundingBox:c,isVisible:s("overlay"),shapeProps:{shape:"overlay-shape",color:"overlay-color",opacity:"overlay-opacity",padding:"overlay-padding",radius:"overlay-corner-radius"}}),n.drawing.addSimpleShapeRenderType("node-underlay",{getBoundingBox:c,isVisible:s("underlay"),shapeProps:{shape:"underlay-shape",color:"underlay-color",opacity:"underlay-opacity",padding:"underlay-padding",radius:"underlay-corner-radius"}}),n.drawing.addTextureAtlasRenderType("label",{collection:"label",getTexPickingMode:u,getKey:wh(t.getLabelKey,null),getBoundingBox:Eh(t.getLabelBox,null),drawClipped:!0,drawElement:t.drawLabel,getRotation:a(null),getRotationPoint:t.getLabelRotationPoint,getRotationOffset:t.getLabelRotationOffset,isVisible:i("label")}),n.drawing.addTextureAtlasRenderType("edge-source-label",{collection:"label",getTexPickingMode:u,getKey:wh(t.getSourceLabelKey,"source"),getBoundingBox:Eh(t.getSourceLabelBox,"source"),drawClipped:!0,drawElement:t.drawSourceLabel,getRotation:a("source"),getRotationPoint:t.getSourceLabelRotationPoint,getRotationOffset:t.getSourceLabelRotationOffset,isVisible:i("source-label")}),n.drawing.addTextureAtlasRenderType("edge-target-label",{collection:"label",getTexPickingMode:u,getKey:wh(t.getTargetLabelKey,"target"),getBoundingBox:Eh(t.getTargetLabelBox,"target"),drawClipped:!0,drawElement:t.drawTargetLabel,getRotation:a("target"),getRotationPoint:t.getTargetLabelRotationPoint,getRotationOffset:t.getTargetLabelRotationOffset,isVisible:i("target-label")});var d=Re(function(){console.log("garbage collect flag set"),n.data.gc=!0},1e4);n.onUpdateEleCalcs(function(e,t){var r=!1;t&&t.length>0&&(r|=n.drawing.invalidate(t)),r&&d()}),function(e){var t=e.render;e.render=function(n){n=n||{};var r=e.cy;e.webgl&&(r.zoom()>vd?(!function(e){var t=e.data.contexts[e.WEBGL];t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT)}(e),t.call(e,n)):(!function(e){var t=function(t){t.save(),t.setTransform(1,0,0,1,0,0),t.clearRect(0,0,e.canvasWidth,e.canvasHeight),t.restore()};t(e.data.contexts[e.NODE]),t(e.data.contexts[e.DRAG])}(e),Ch(e,n,vh.SCREEN)))};var n=e.matchCanvasSize;e.matchCanvasSize=function(t){n.call(e,t),e.pickingFrameBuffer.setFramebufferAttachmentSizes(e.canvasWidth,e.canvasHeight),e.pickingFrameBuffer.needsDraw=!0},e.findNearestElements=function(t,n,r,a){return function(e,t,n){var r,a,i,s=function(e,t,n){var r,a,i,o,s=Gd(e),u=s.pan,c=s.zoom,d=function(e,t,n,r,a){var i=r*n+t.x,o=a*n+t.y;return[i,o=Math.round(e.canvasHeight-o)]}(e,u,c,t,n),h=l(d,2),f=h[0],p=h[1],v=6;if(r=f-v/2,a=p-v/2,o=v,0===(i=v)||0===o)return[];var g=e.data.contexts[e.WEBGL];g.bindFramebuffer(g.FRAMEBUFFER,e.pickingFrameBuffer),e.pickingFrameBuffer.needsDraw&&(g.viewport(0,0,g.canvas.width,g.canvas.height),Ch(e,null,vh.PICKING),e.pickingFrameBuffer.needsDraw=!1);var y=i*o,m=new Uint8Array(4*y);g.readPixels(r,a,i,o,g.RGBA,g.UNSIGNED_BYTE,m),g.bindFramebuffer(g.FRAMEBUFFER,null);for(var b=new Set,x=0;x=0&&b.add(w)}return b}(e,t,n),u=e.getCachedZSortedEles(),c=o(s);try{for(c.s();!(i=c.n()).done;){var d=u[i.value];if(!r&&d.isNode()&&(r=d),!a&&d.isEdge()&&(a=d),r&&a)break}}catch(h){c.e(h)}finally{c.f()}return[r,a].filter(Boolean)}(e,t,n)};var r=e.invalidateCachedZSortedEles;e.invalidateCachedZSortedEles=function(){r.call(e),e.pickingFrameBuffer.needsDraw=!0};var a=e.notify;e.notify=function(t,n){a.call(e,t,n),"viewport"===t||"bounds"===t?e.pickingFrameBuffer.needsDraw=!0:"background"===t&&e.drawing.invalidate(n,{type:"node-body"})}}(n)};var wh=function(e,t){return function(n){var r=e(n),a=xh(n,t);return a.length>1?a.map(function(e,t){return"".concat(r,"_").concat(t)}):r}},Eh=function(e,t){return function(n,r){var a=e(n);if("string"==typeof r){var i=r.indexOf("_");if(i>0){var o=Number(r.substring(i+1)),s=xh(n,t),l=a.h/s.length,u=l*o,c=a.y1+u;return{x1:a.x1,w:a.w,y1:c,h:l,yOffset:u}}}return a}};function kh(e,t){var n=e.canvasWidth,r=e.canvasHeight,a=Gd(e),i=a.pan,o=a.zoom;t.setTransform(1,0,0,1,0,0),t.clearRect(0,0,n,r),t.translate(i.x,i.y),t.scale(o,o)}function Th(e,t,n){var r=e.drawing;t+=1,n.isNode()?(r.drawNode(n,t,"node-underlay"),r.drawNode(n,t,"node-body"),r.drawTexture(n,t,"label"),r.drawNode(n,t,"node-overlay")):(r.drawEdgeLine(n,t),r.drawEdgeArrow(n,t,"source"),r.drawEdgeArrow(n,t,"target"),r.drawTexture(n,t,"label"),r.drawTexture(n,t,"edge-source-label"),r.drawTexture(n,t,"edge-target-label"))}function Ch(e,t,n){var r;e.webglDebug&&(r=performance.now());var a=e.drawing,i=0;if(n.screen&&e.data.canvasNeedsRedraw[e.SELECT_BOX]&&function(e,t){e.drawSelectionRectangle(t,function(t){return kh(e,t)})}(e,t),e.data.canvasNeedsRedraw[e.NODE]||n.picking){var s=e.data.contexts[e.WEBGL];n.screen?(s.clearColor(0,0,0,0),s.enable(s.BLEND),s.blendFunc(s.ONE,s.ONE_MINUS_SRC_ALPHA)):s.disable(s.BLEND),s.clear(s.COLOR_BUFFER_BIT|s.DEPTH_BUFFER_BIT),s.viewport(0,0,s.canvas.width,s.canvas.height);var l=function(e){var t=e.canvasWidth,n=e.canvasHeight,r=Gd(e),a=r.pan,i=r.zoom,o=oh();lh(o,o,[a.x,a.y]),ch(o,o,[i,i]);var s=oh();!function(e,t,n){e[0]=2/t,e[1]=0,e[2]=0,e[3]=0,e[4]=-2/n,e[5]=0,e[6]=-1,e[7]=1,e[8]=1}(s,t,n);var l,u,c,d,h,f,p,v,g,y,m,b,x,w,E,k,T,C,P,S,B,D=oh();return l=D,c=o,d=(u=s)[0],h=u[1],f=u[2],p=u[3],v=u[4],g=u[5],y=u[6],m=u[7],b=u[8],x=c[0],w=c[1],E=c[2],k=c[3],T=c[4],C=c[5],P=c[6],S=c[7],B=c[8],l[0]=x*d+w*p+E*y,l[1]=x*h+w*v+E*m,l[2]=x*f+w*g+E*b,l[3]=k*d+T*p+C*y,l[4]=k*h+T*v+C*m,l[5]=k*f+T*g+C*b,l[6]=P*d+S*p+B*y,l[7]=P*h+S*v+B*m,l[8]=P*f+S*g+B*b,D}(e),u=e.getCachedZSortedEles();if(i=u.length,a.startFrame(l,n),n.screen){for(var c=0;c0&&i>0){h.clearRect(0,0,a,i),h.globalCompositeOperation="source-over";var f=this.getCachedZSortedEles();if(e.full)h.translate(-n.x1*l,-n.y1*l),h.scale(l,l),this.drawElements(h,f),h.scale(1/l,1/l),h.translate(n.x1*l,n.y1*l);else{var p=t.pan(),v={x:p.x*l,y:p.y*l};l*=t.zoom(),h.translate(v.x,v.y),h.scale(l,l),this.drawElements(h,f),h.scale(1/l,1/l),h.translate(-v.x,-v.y)}e.bg&&(h.globalCompositeOperation="destination-over",h.fillStyle=e.bg,h.rect(0,0,a,i),h.fill())}return d},Rh.png=function(e){return Nh(e,this.bufferCanvasImage(e),"image/png")},Rh.jpg=function(e){return Nh(e,this.bufferCanvasImage(e),"image/jpeg")};var Lh={nodeShapeImpl:function(e,t,n,r,a,i,o,s){switch(e){case"ellipse":return this.drawEllipsePath(t,n,r,a,i);case"polygon":return this.drawPolygonPath(t,n,r,a,i,o);case"round-polygon":return this.drawRoundPolygonPath(t,n,r,a,i,o,s);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(t,n,r,a,i,s);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(t,n,r,a,i,o,s);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(t,n,r,a,i,s);case"barrel":return this.drawBarrelPath(t,n,r,a,i)}}},zh=Vh,Oh=Vh.prototype;function Vh(e){var t=this,n=t.cy.window().document;e.webgl&&(Oh.CANVAS_LAYERS=t.CANVAS_LAYERS=4,console.log("webgl rendering enabled")),t.data={canvases:new Array(Oh.CANVAS_LAYERS),contexts:new Array(Oh.CANVAS_LAYERS),canvasNeedsRedraw:new Array(Oh.CANVAS_LAYERS),bufferCanvases:new Array(Oh.BUFFER_COUNT),bufferContexts:new Array(Oh.CANVAS_LAYERS)};var r="-webkit-tap-highlight-color",a="rgba(0,0,0,0)";t.data.canvasContainer=n.createElement("div");var i=t.data.canvasContainer.style;t.data.canvasContainer.style[r]=a,i.position="relative",i.zIndex="0",i.overflow="hidden";var o=e.cy.container();o.appendChild(t.data.canvasContainer),o.style[r]=a;var s={"-webkit-user-select":"none","-moz-user-select":"-moz-none","user-select":"none","-webkit-tap-highlight-color":"rgba(0,0,0,0)","outline-style":"none"};p&&p.userAgent.match(/msie|trident|edge/i)&&(s["-ms-touch-action"]="none",s["touch-action"]="none");for(var l=0;lv});n(6540);var s=n(8215),a=n(7559),i=n(4718),r=n(9169),o=n(8774),c=n(1312),l=n(6025),d=n(4848);function u(e){return(0,d.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,d.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"})})}const m="breadcrumbHomeIcon_YNFT";function h(){const e=(0,l.Ay)("/");return(0,d.jsx)("li",{className:"breadcrumbs__item",children:(0,d.jsx)(o.A,{"aria-label":(0,c.T)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e,children:(0,d.jsx)(u,{className:m})})})}var f=n(5260),p=n(4586);function x(e){const t=function({breadcrumbs:e}){const{siteConfig:t}=(0,p.A)();return{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:e.filter(e=>e.href).map((e,n)=>({"@type":"ListItem",position:n+1,name:e.label,item:`${t.url}${e.href}`}))}}({breadcrumbs:e.breadcrumbs});return(0,d.jsx)(f.A,{children:(0,d.jsx)("script",{type:"application/ld+json",children:JSON.stringify(t)})})}const g="breadcrumbsContainer_Z_bl";function b({children:e,href:t,isLast:n}){const s="breadcrumbs__link";return n?(0,d.jsx)("span",{className:s,children:e}):t?(0,d.jsx)(o.A,{className:s,href:t,children:(0,d.jsx)("span",{children:e})}):(0,d.jsx)("span",{className:s,children:e})}function j({children:e,active:t}){return(0,d.jsx)("li",{className:(0,s.A)("breadcrumbs__item",{"breadcrumbs__item--active":t}),children:e})}function v(){const e=(0,i.OF)(),t=(0,r.Dt)();return e?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(x,{breadcrumbs:e}),(0,d.jsx)("nav",{className:(0,s.A)(a.G.docs.docBreadcrumbs,g),"aria-label":(0,c.T)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"}),children:(0,d.jsxs)("ul",{className:"breadcrumbs",children:[t&&(0,d.jsx)(h,{}),e.map((t,n)=>{const s=n===e.length-1,a="category"===t.type&&t.linkUnlisted?void 0:t.href;return(0,d.jsx)(j,{active:s,children:(0,d.jsx)(b,{href:a,isLast:s,children:t.label})},n)})]})})]}):null}},1719(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>En});var s=n(6540),a=n(5500),i=n(9532),r=n(4848);const o=s.createContext(null);function c({children:e,content:t}){const n=function(e){return(0,s.useMemo)(()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc}),[e])}(t);return(0,r.jsx)(o.Provider,{value:n,children:e})}function l(){const e=(0,s.useContext)(o);if(null===e)throw new i.dV("DocProvider");return e}function d(){const{metadata:e,frontMatter:t,assets:n}=l();return(0,r.jsx)(a.be,{title:e.title,description:e.description,keywords:t.keywords,image:n.image??t.image})}var u=n(8215),m=n(4581),h=n(6929);function f(){const{metadata:e}=l();return(0,r.jsx)(h.A,{className:"docusaurus-mt-lg",previous:e.previous,next:e.next})}var p=n(1878),x=n(4267);function g(e){var t,n,s="";if("string"==typeof e||"number"==typeof e)s+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t(0,r.jsx)("li",{className:_,children:(0,r.jsx)(L,{...e})},e.permalink))})]})}const B="iconEdit_Z9Sw";function M({className:e,...t}){return(0,r.jsx)("svg",{fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,u.A)(B,e),"aria-hidden":"true",...t,children:(0,r.jsx)("g",{children:(0,r.jsx)("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})})})}function H({editUrl:e}){return(0,r.jsxs)(A.A,{to:e,className:j.G.common.editThisPage,children:[(0,r.jsx)(M,{}),(0,r.jsx)(N.A,{id:"theme.common.editThisPage",description:"The link label to edit the current page",children:"Edit this page"})]})}function E(e={}){const{i18n:{currentLocale:t}}=(0,v.A)(),n=function(){const{i18n:{currentLocale:e,localeConfigs:t}}=(0,v.A)();return t[e].calendar}();return new Intl.DateTimeFormat(t,{calendar:n,...e})}function S({lastUpdatedAt:e}){const t=new Date(e),n=E({day:"numeric",month:"short",year:"numeric",timeZone:"UTC"}).format(t);return(0,r.jsx)(N.A,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:(0,r.jsx)("b",{children:(0,r.jsx)("time",{dateTime:t.toISOString(),itemProp:"dateModified",children:n})})},children:" on {date}"})}function I({lastUpdatedBy:e}){return(0,r.jsx)(N.A,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:(0,r.jsx)("b",{children:e})},children:" by {user}"})}function V({lastUpdatedAt:e,lastUpdatedBy:t}){return(0,r.jsxs)("span",{className:j.G.common.lastUpdated,children:[(0,r.jsx)(N.A,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:e?(0,r.jsx)(S,{lastUpdatedAt:e}):"",byUser:t?(0,r.jsx)(I,{lastUpdatedBy:t}):""},children:"Last updated{atDate}{byUser}"}),!1]})}const U="lastUpdated_JAkA",O="noPrint_WFHX";function z({className:e,editUrl:t,lastUpdatedAt:n,lastUpdatedBy:s}){return(0,r.jsxs)("div",{className:(0,u.A)("row",e),children:[(0,r.jsx)("div",{className:(0,u.A)("col",O),children:t&&(0,r.jsx)(H,{editUrl:t})}),(0,r.jsx)("div",{className:(0,u.A)("col",U),children:(n||s)&&(0,r.jsx)(V,{lastUpdatedAt:n,lastUpdatedBy:s})})]})}var R=n(8007),P=n(8077);function $(){const{siteConfig:e}=(0,v.A)(),{metadata:t,frontMatter:n}=l(),{editUrl:s,lastUpdatedAt:a,lastUpdatedBy:i,tags:o}=t,c=!!n?.hide_app_cross_links,d=Array.isArray(n?.apps)?n.apps:null,u=e?.themeConfig?.conduction?.appId,m=(d&&d.length>0?d:u?[u]:[]).filter(e=>P.xS[e]),h=o.length>0,f=!!(s||a||i),p=!c&&m.length>0;return h||f||p?(0,r.jsxs)("footer",{className:b(j.G.docs.docFooter,"docusaurus-mt-lg"),children:[h&&(0,r.jsx)("div",{className:b("row margin-top--sm",j.G.docs.docFooterTagsRow),children:(0,r.jsx)("div",{className:"col",children:(0,r.jsx)(T,{tags:o})})}),f&&(0,r.jsx)(z,{className:b("margin-top--sm",j.G.docs.docFooterEditMetaRow),editUrl:s,lastUpdatedAt:a,lastUpdatedBy:i}),p&&(0,r.jsx)("div",{className:"margin-top--lg",children:(0,r.jsx)(R.bv,{variant:"inline",apps:m,surface:"docs",heading:1===m.length?"About this app":"About these apps"})})]}):null}var D=n(1422),F=n(6342);function G(e){const t=e.map(e=>({...e,parentIndex:-1,children:[]})),n=Array(7).fill(-1);t.forEach((e,t)=>{const s=n.slice(2,e.level);e.parentIndex=Math.max(...s),n[e.level]=t});const s=[];return t.forEach(e=>{const{parentIndex:n,...a}=e;n>=0?t[n].children.push(a):s.push(a)}),s}function W({toc:e,minHeadingLevel:t,maxHeadingLevel:n}){return e.flatMap(e=>{const s=W({toc:e.children,minHeadingLevel:t,maxHeadingLevel:n});return function(e){return e.level>=t&&e.level<=n}(e)?[{...e,children:s}]:s})}function q(e){const t=e.getBoundingClientRect();return t.top===t.bottom?q(e.parentNode):t}function J(e,{anchorTopOffset:t}){const n=e.find(e=>q(e).top>=t);if(n){return function(e){return e.top>0&&e.bottom{e.current=t?0:document.querySelector(".navbar").clientHeight},[t]),e}function X(e){const t=(0,s.useRef)(void 0),n=Z();(0,s.useEffect)(()=>{if(!e)return()=>{};const{linkClassName:s,linkActiveClassName:a,minHeadingLevel:i,maxHeadingLevel:r}=e;function o(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(s),o=function({minHeadingLevel:e,maxHeadingLevel:t}){const n=[];for(let s=e;s<=t;s+=1)n.push(`h${s}.anchor`);return Array.from(document.querySelectorAll(n.join()))}({minHeadingLevel:i,maxHeadingLevel:r}),c=J(o,{anchorTopOffset:n.current}),l=e.find(e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e));e.forEach(e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(a),e.classList.add(a),t.current=e):e.classList.remove(a)}(e,e===l)})}return document.addEventListener("scroll",o),document.addEventListener("resize",o),o(),()=>{document.removeEventListener("scroll",o),document.removeEventListener("resize",o)}},[e,n])}function Y({toc:e,className:t,linkClassName:n,isChild:s}){return e.length?(0,r.jsx)("ul",{className:s?void 0:t,children:e.map(e=>(0,r.jsxs)("li",{children:[(0,r.jsx)(A.A,{to:`#${e.id}`,className:n??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,r.jsx)(Y,{isChild:!0,toc:e.children,className:t,linkClassName:n})]},e.id))}):null}const Q=s.memo(Y);function K({toc:e,className:t="table-of-contents table-of-contents__left-border",linkClassName:n="table-of-contents__link",linkActiveClassName:a,minHeadingLevel:i,maxHeadingLevel:o,...c}){const l=(0,F.p)(),d=i??l.tableOfContents.minHeadingLevel,u=o??l.tableOfContents.maxHeadingLevel,m=function({toc:e,minHeadingLevel:t,maxHeadingLevel:n}){return(0,s.useMemo)(()=>W({toc:G(e),minHeadingLevel:t,maxHeadingLevel:n}),[e,t,n])}({toc:e,minHeadingLevel:d,maxHeadingLevel:u});return X((0,s.useMemo)(()=>{if(n&&a)return{linkClassName:n,linkActiveClassName:a,minHeadingLevel:d,maxHeadingLevel:u}},[n,a,d,u])),(0,r.jsx)(Q,{toc:m,className:t,linkClassName:n,...c})}const ee="tocCollapsibleButton_TO0P",te="tocCollapsibleButtonExpanded_MG3E";function ne({collapsed:e,...t}){return(0,r.jsx)("button",{type:"button",...t,className:(0,u.A)("clean-btn",ee,!e&&te,t.className),children:(0,r.jsx)(N.A,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component",children:"On this page"})})}const se="tocCollapsible_ETCw",ae="tocCollapsibleContent_vkbj",ie="tocCollapsibleExpanded_sAul";function re({toc:e,className:t,minHeadingLevel:n,maxHeadingLevel:s}){const{collapsed:a,toggleCollapsed:i}=(0,D.u)({initialState:!0});return(0,r.jsxs)("div",{className:(0,u.A)(se,!a&&ie,t),children:[(0,r.jsx)(ne,{collapsed:a,onClick:i}),(0,r.jsx)(D.N,{lazy:!0,className:ae,collapsed:a,children:(0,r.jsx)(K,{toc:e,minHeadingLevel:n,maxHeadingLevel:s})})]})}const oe="tocMobile_ITEo";function ce(){const{toc:e,frontMatter:t}=l();return(0,r.jsx)(re,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,u.A)(j.G.docs.docTocMobile,oe)})}const le="tableOfContents_bqdL";function de({className:e,...t}){return(0,r.jsx)("div",{className:(0,u.A)(le,"thin-scrollbar",e),children:(0,r.jsx)(K,{...t,linkClassName:"table-of-contents__link toc-highlight",linkActiveClassName:"table-of-contents__link--active"})})}function ue(){const{toc:e,frontMatter:t}=l();return(0,r.jsx)(de,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:j.G.docs.docTocDesktop})}var me=n(5260),he=n(1107),fe=n(8453),pe=n(2303),xe=n(5293);function ge(){const{prism:e}=(0,F.p)(),{colorMode:t}=(0,xe.G)(),n=e.theme,s=e.darkTheme||n;return"dark"===t?s:n}var be=n(5066),je=n(8426),ve=n.n(je);const Ne=/title=(?["'])(?.*?)\1/,Ae=/\{(?<range>[\d,-]+)\}/,ye={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}},ke={...ye,lua:{start:"--",end:""},wasm:{start:"\\;\\;",end:""},tex:{start:"%",end:""},vb:{start:"['\u2018\u2019]",end:""},vbnet:{start:"(?:_\\s*)?['\u2018\u2019]",end:""},rem:{start:"[Rr][Ee][Mm]\\b",end:""},f90:{start:"!",end:""},ml:{start:"\\(\\*",end:"\\*\\)"},cobol:{start:"\\*>",end:""}},Ce=Object.keys(ye);function Le(e,t){const n=e.map(e=>{const{start:n,end:s}=ke[e];return`(?:${n}\\s*(${t.flatMap(e=>[e.line,e.block?.start,e.block?.end].filter(Boolean)).join("|")})\\s*${s})`}).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function we({showLineNumbers:e,metastring:t}){return"boolean"==typeof e?e?1:void 0:"number"==typeof e?e:function(e){const t=e?.split(" ").find(e=>e.startsWith("showLineNumbers"));if(t){if(t.startsWith("showLineNumbers=")){const e=t.replace("showLineNumbers=","");return parseInt(e,10)}return 1}}(t)}function _e(e,t){const{language:n,magicComments:s}=t;if(void 0===n)return{lineClassNames:{},code:e};const a=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return Le(["js","jsBlock"],t);case"jsx":case"tsx":return Le(["js","jsBlock","jsx"],t);case"html":return Le(["js","jsBlock","html"],t);case"python":case"py":case"bash":return Le(["bash"],t);case"markdown":case"md":return Le(["html","jsx","bash"],t);case"tex":case"latex":case"matlab":return Le(["tex"],t);case"lua":case"haskell":return Le(["lua"],t);case"sql":return Le(["lua","jsBlock"],t);case"wasm":return Le(["wasm"],t);case"vb":case"vba":case"visual-basic":return Le(["vb","rem"],t);case"vbnet":return Le(["vbnet","rem"],t);case"batch":return Le(["rem"],t);case"basic":return Le(["rem","f90"],t);case"fsharp":return Le(["js","ml"],t);case"ocaml":case"sml":return Le(["ml"],t);case"fortran":return Le(["f90"],t);case"cobol":return Le(["cobol"],t);default:return Le(Ce,t)}}(n,s),i=e.split(/\r?\n/),r=Object.fromEntries(s.map(e=>[e.className,{start:0,range:""}])),o=Object.fromEntries(s.filter(e=>e.line).map(({className:e,line:t})=>[t,e])),c=Object.fromEntries(s.filter(e=>e.block).map(({className:e,block:t})=>[t.start,e])),l=Object.fromEntries(s.filter(e=>e.block).map(({className:e,block:t})=>[t.end,e]));for(let u=0;u<i.length;){const e=i[u].match(a);if(!e){u+=1;continue}const t=e.slice(1).find(e=>void 0!==e);o[t]?r[o[t]].range+=`${u},`:c[t]?r[c[t]].start=u:l[t]&&(r[l[t]].range+=`${r[l[t]].start}-${u-1},`),i.splice(u,1)}const d={};return Object.entries(r).forEach(([e,{range:t}])=>{ve()(t).forEach(t=>{d[t]??=[],d[t].push(e)})}),{code:i.join("\n"),lineClassNames:d}}function Te(e,t){const n=e.replace(/\r?\n$/,"");return function(e,{metastring:t,magicComments:n}){if(t&&Ae.test(t)){const s=t.match(Ae).groups.range;if(0===n.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${t}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const a=n[0].className,i=ve()(s).filter(e=>e>0).map(e=>[e-1,[a]]);return{lineClassNames:Object.fromEntries(i),code:e}}return null}(n,{...t})??_e(n,{...t})}function Be(e){const t=function(e){return t=e.language??function(e){if(!e)return;const t=e.split(" ").find(e=>e.startsWith("language-"));return t?.replace(/language-/,"")}(e.className)??e.defaultLanguage,t?.toLowerCase()??"text";var t}({language:e.language,defaultLanguage:e.defaultLanguage,className:e.className}),{lineClassNames:n,code:s}=Te(e.code,{metastring:e.metastring,magicComments:e.magicComments,language:t}),a=function({className:e,language:t}){return(0,be.A)(e,t&&!e?.includes(`language-${t}`)&&`language-${t}`)}({className:e.className,language:t}),i=(r=e.metastring,(r?.match(Ne)?.groups.title??"")||e.title);var r;const o=we({showLineNumbers:e.showLineNumbers,metastring:e.metastring});return{codeInput:e.code,code:s,className:a,language:t,title:i,lineNumbersStart:o,lineClassNames:n}}const Me=(0,s.createContext)(null);function He({metadata:e,wordWrap:t,children:n}){const a=(0,s.useMemo)(()=>({metadata:e,wordWrap:t}),[e,t]);return(0,r.jsx)(Me.Provider,{value:a,children:n})}function Ee(){const e=(0,s.useContext)(Me);if(null===e)throw new i.dV("CodeBlockContextProvider");return e}const Se="codeBlockContainer_Ckt0";function Ie({as:e,...t}){const n=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach(([e,s])=>{const a=t[e];a&&"string"==typeof s&&(n[a]=s)}),n}(ge());return(0,r.jsx)(e,{...t,style:n,className:(0,u.A)(t.className,Se,j.G.common.codeBlock)})}const Ve="codeBlock_bY9V",Ue="codeBlockStandalone_MEMb",Oe="codeBlockLines_e6Vv",ze="codeBlockLinesWithNumbering_o6Pm";function Re({children:e,className:t}){return(0,r.jsx)(Ie,{as:"pre",tabIndex:0,className:(0,u.A)(Ue,"thin-scrollbar",t),children:(0,r.jsx)("code",{className:Oe,children:e})})}const Pe={attributes:!0,characterData:!0,childList:!0,subtree:!0};function $e(e,t){const[n,a]=(0,s.useState)(),r=(0,s.useCallback)(()=>{a(e.current?.closest("[role=tabpanel][hidden]"))},[e,a]);(0,s.useEffect)(()=>{r()},[r]),function(e,t,n=Pe){const a=(0,i._q)(t),r=(0,i.Be)(n);(0,s.useEffect)(()=>{const t=new MutationObserver(a);return e&&t.observe(e,r),()=>t.disconnect()},[e,a,r])}(n,e=>{e.forEach(e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),r())})},{attributes:!0,characterData:!1,childList:!1,subtree:!1})}function De({children:e}){return e}var Fe=n(4876);function Ge({line:e,token:t,...n}){return(0,r.jsx)("span",{...n})}const We="codeLine_lJS_",qe="codeLineNumber_Tfdd",Je="codeLineContent_feaV";function Ze(){return(0,r.jsx)("br",{})}function Xe({line:e,classNames:t,showLineNumbers:n,getLineProps:s,getTokenProps:a}){const i=function(e){const t=1===e.length&&"\n"===e[0].content?e[0]:void 0;return t?[{...t,content:""}]:e}(e),o=s({line:i,className:(0,u.A)(t,n&&We)}),c=i.map((e,t)=>{const n=a({token:e});return(0,r.jsx)(Ge,{...n,line:i,token:e,children:n.children},t)});return(0,r.jsxs)("div",{...o,children:[n?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:qe}),(0,r.jsx)("span",{className:Je,children:c})]}):c,(0,r.jsx)(Ze,{})]})}const Ye=s.forwardRef((e,t)=>(0,r.jsx)("pre",{ref:t,tabIndex:0,...e,className:(0,u.A)(e.className,Ve,"thin-scrollbar")}));function Qe(e){const{metadata:t}=Ee();return(0,r.jsx)("code",{...e,className:(0,u.A)(e.className,Oe,void 0!==t.lineNumbersStart&&ze),style:{...e.style,counterReset:void 0===t.lineNumbersStart?void 0:"line-count "+(t.lineNumbersStart-1)}})}function Ke({className:e}){const{metadata:t,wordWrap:n}=Ee(),s=ge(),{code:a,language:i,lineNumbersStart:o,lineClassNames:c}=t;return(0,r.jsx)(Fe.f4,{theme:s,code:a,language:i,children:({className:t,style:s,tokens:a,getLineProps:i,getTokenProps:l})=>(0,r.jsx)(Ye,{ref:n.codeBlockRef,className:(0,u.A)(e,t),style:s,children:(0,r.jsx)(Qe,{children:a.map((e,t)=>(0,r.jsx)(Xe,{line:e,getLineProps:i,getTokenProps:l,classNames:c[t],showLineNumbers:void 0!==o},t))})})})}function et({children:e,fallback:t}){return(0,pe.A)()?(0,r.jsx)(r.Fragment,{children:e?.()}):t??null}function tt({className:e,...t}){return(0,r.jsx)("button",{type:"button",...t,className:(0,u.A)("clean-btn",e)})}function nt(e){return(0,r.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,r.jsx)("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"})})}function st(e){return(0,r.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,r.jsx)("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"})})}const at={copyButtonCopied:"copyButtonCopied_Vdqa",copyButtonIcons:"copyButtonIcons_IEyt",copyButtonIcon:"copyButtonIcon_TrPX",copyButtonSuccessIcon:"copyButtonSuccessIcon_cVMy"};function it(e){return e?(0,N.T)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,N.T)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"})}function rt(){const{metadata:{code:e}}=Ee(),[t,a]=(0,s.useState)(!1),i=(0,s.useRef)(void 0),r=(0,s.useCallback)(()=>{(async function(e){if(navigator.clipboard)return navigator.clipboard.writeText(e);const{default:t}=await n.e(3436).then(n.bind(n,3436));return t(e)})(e).then(()=>{a(!0),i.current=window.setTimeout(()=>{a(!1)},1e3)})},[e]);return(0,s.useEffect)(()=>()=>window.clearTimeout(i.current),[]),{copyCode:r,isCopied:t}}function ot({className:e}){const{copyCode:t,isCopied:n}=rt();return(0,r.jsx)(tt,{"aria-label":it(n),title:(0,N.T)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,u.A)(e,at.copyButton,n&&at.copyButtonCopied),onClick:t,children:(0,r.jsxs)("span",{className:at.copyButtonIcons,"aria-hidden":"true",children:[(0,r.jsx)(nt,{className:at.copyButtonIcon}),(0,r.jsx)(st,{className:at.copyButtonSuccessIcon})]})})}function ct(e){return(0,r.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,r.jsx)("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})})}const lt="wordWrapButtonIcon_b1P5",dt="wordWrapButtonEnabled_uzNF";function ut({className:e}){const{wordWrap:t}=Ee();if(!(t.isEnabled||t.isCodeScrollable))return!1;const n=(0,N.T)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return(0,r.jsx)(tt,{onClick:()=>t.toggle(),className:(0,u.A)(e,t.isEnabled&&dt),"aria-label":n,title:n,children:(0,r.jsx)(ct,{className:lt,"aria-hidden":"true"})})}const mt="buttonGroup_M5ko";function ht({className:e}){return(0,r.jsx)(et,{children:()=>(0,r.jsxs)("div",{className:(0,u.A)(e,mt),children:[(0,r.jsx)(ut,{}),(0,r.jsx)(ot,{})]})})}const ft="codeBlockContent_QJqH",pt="codeBlockTitle_OeMC";function xt({className:e}){const{metadata:t}=Ee();return(0,r.jsxs)(Ie,{as:"div",className:(0,u.A)(e,t.className),children:[t.title&&(0,r.jsx)("div",{className:pt,children:(0,r.jsx)(De,{children:t.title})}),(0,r.jsxs)("div",{className:ft,children:[(0,r.jsx)(Ke,{}),(0,r.jsx)(ht,{})]})]})}function gt(e){const t=function(e){const{prism:t}=(0,F.p)();return Be({code:e.children,className:e.className,metastring:e.metastring,magicComments:t.magicComments,defaultLanguage:t.defaultLanguage,language:e.language,title:e.title,showLineNumbers:e.showLineNumbers})}(e),n=function(){const[e,t]=(0,s.useState)(!1),[n,a]=(0,s.useState)(!1),i=(0,s.useRef)(null),r=(0,s.useCallback)(()=>{const n=i.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t(e=>!e)},[i,e]),o=(0,s.useCallback)(()=>{const{scrollWidth:e,clientWidth:t}=i.current,n=e>t||i.current.querySelector("code").hasAttribute("style");a(n)},[i]);return $e(i,o),(0,s.useEffect)(()=>{o()},[e,o]),(0,s.useEffect)(()=>(window.addEventListener("resize",o,{passive:!0}),()=>{window.removeEventListener("resize",o)}),[o]),{codeBlockRef:i,isEnabled:e,isCodeScrollable:n,toggle:r}}();return(0,r.jsx)(He,{metadata:t,wordWrap:n,children:(0,r.jsx)(xt,{})})}function bt({children:e,...t}){const n=(0,pe.A)(),a=function(e){return s.Children.toArray(e).some(e=>(0,s.isValidElement)(e))?e:Array.isArray(e)?e.join(""):e}(e),i="string"==typeof a?gt:Re;return(0,r.jsx)(i,{...t,children:a},String(n))}function jt(e){return(0,r.jsx)("code",{...e})}var vt=n(3535);var Nt=n(3427);const At="details_lb9f",yt="isBrowser_bmU9",kt="collapsibleContent_i85q";function Ct(e){return!!e&&("SUMMARY"===e.tagName||Ct(e.parentElement))}function Lt(e,t){return!!e&&(e===t||Lt(e.parentElement,t))}function wt({summary:e,children:t,...n}){(0,Nt.A)().collectAnchor(n.id);const a=(0,pe.A)(),i=(0,s.useRef)(null),{collapsed:o,setCollapsed:c}=(0,D.u)({initialState:!n.open}),[l,d]=(0,s.useState)(n.open),u=s.isValidElement(e)?e:(0,r.jsx)("summary",{children:e??"Details"});return(0,r.jsxs)("details",{...n,ref:i,open:l,"data-collapsed":o,className:(0,be.A)(At,a&&yt,n.className),onMouseDown:e=>{Ct(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;Ct(t)&&Lt(t,i.current)&&(e.preventDefault(),o?(c(!1),d(!0)):c(!0))},children:[u,(0,r.jsx)(D.N,{lazy:!1,collapsed:o,onCollapseTransitionEnd:e=>{c(e),d(!e)},children:(0,r.jsx)("div",{className:kt,children:t})})]})}const _t="details_b_Ee";function Tt({...e}){return(0,r.jsx)(wt,{...e,className:(0,u.A)("alert alert--info",_t,e.className)})}function Bt(e){const t=s.Children.toArray(e.children),n=t.find(e=>s.isValidElement(e)&&"summary"===e.type),a=(0,r.jsx)(r.Fragment,{children:t.filter(e=>e!==n)});return(0,r.jsx)(Tt,{...e,summary:n,children:a})}function Mt(e){return(0,r.jsx)(he.A,{...e})}const Ht="containsTaskList_mC6p";function Et(e){if(void 0!==e)return(0,u.A)(e,e?.includes("contains-task-list")&&Ht)}const St="img_ev3q";function It(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=s.Children.toArray(e),n=t.find(e=>s.isValidElement(e)&&"mdxAdmonitionTitle"===e.type),a=t.filter(e=>e!==n),i=n?.props.children;return{mdxAdmonitionTitle:i,rest:a.length>0?(0,r.jsx)(r.Fragment,{children:a}):null}}(e.children),a=e.title??t;return{...e,...a&&{title:a},children:n}}const Vt="admonition_xJq3",Ut="admonitionHeading_Gvgb",Ot="admonitionIcon_Rf37",zt="admonitionContent_BuS1";function Rt({type:e,className:t,children:n,id:s}){return(0,r.jsx)("div",{className:(0,u.A)(j.G.common.admonition,j.G.common.admonitionType(e),Vt,t),id:s,children:n})}function Pt({icon:e,title:t}){return(0,r.jsxs)("div",{className:Ut,children:[(0,r.jsx)("span",{className:Ot,children:e}),t]})}function $t({children:e}){return e?(0,r.jsx)("div",{className:zt,children:e}):null}function Dt(e){const{type:t,icon:n,title:s,children:a,className:i,id:o}=e;return(0,r.jsxs)(Rt,{type:t,className:i,id:o,children:[s||n?(0,r.jsx)(Pt,{title:s,icon:n}):null,(0,r.jsx)($t,{children:a})]})}function Ft(e){return(0,r.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,r.jsx)("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"})})}const Gt={icon:(0,r.jsx)(Ft,{}),title:(0,r.jsx)(N.A,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)",children:"note"})};function Wt(e){return(0,r.jsx)(Dt,{...Gt,...e,className:(0,u.A)("alert alert--secondary",e.className),children:e.children})}function qt(e){return(0,r.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,r.jsx)("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"})})}const Jt={icon:(0,r.jsx)(qt,{}),title:(0,r.jsx)(N.A,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)",children:"tip"})};function Zt(e){return(0,r.jsx)(Dt,{...Jt,...e,className:(0,u.A)("alert alert--success",e.className),children:e.children})}function Xt(e){return(0,r.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,r.jsx)("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"})})}const Yt={icon:(0,r.jsx)(Xt,{}),title:(0,r.jsx)(N.A,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)",children:"info"})};function Qt(e){return(0,r.jsx)(Dt,{...Yt,...e,className:(0,u.A)("alert alert--info",e.className),children:e.children})}function Kt(e){return(0,r.jsx)("svg",{viewBox:"0 0 16 16",...e,children:(0,r.jsx)("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"})})}const en={icon:(0,r.jsx)(Kt,{}),title:(0,r.jsx)(N.A,{id:"theme.admonition.warning",description:"The default label used for the Warning admonition (:::warning)",children:"warning"})};function tn(e){return(0,r.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,r.jsx)("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"})})}const nn={icon:(0,r.jsx)(tn,{}),title:(0,r.jsx)(N.A,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)",children:"danger"})};const sn={icon:(0,r.jsx)(Kt,{}),title:(0,r.jsx)(N.A,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)",children:"caution"})};const an={...{note:Wt,tip:Zt,info:Qt,warning:function(e){return(0,r.jsx)(Dt,{...en,...e,className:(0,u.A)("alert alert--warning",e.className),children:e.children})},danger:function(e){return(0,r.jsx)(Dt,{...nn,...e,className:(0,u.A)("alert alert--danger",e.className),children:e.children})}},...{secondary:e=>(0,r.jsx)(Wt,{title:"secondary",...e}),important:e=>(0,r.jsx)(Qt,{title:"important",...e}),success:e=>(0,r.jsx)(Zt,{title:"success",...e}),caution:function(e){return(0,r.jsx)(Dt,{...sn,...e,className:(0,u.A)("alert alert--warning",e.className),children:e.children})}}};function rn(e){const t=It(e),n=(s=t.type,an[s]||(console.warn(`No admonition component found for admonition type "${s}". Using Info as fallback.`),an.info));var s;return(0,r.jsx)(n,{...t})}var on=n(7489),cn=n(2181);let ln=null;async function dn(){return ln||(ln=async function(){return(await n.e(3923).then(n.bind(n,3923))).default}()),ln}function un(){const{colorMode:e}=(0,xe.G)(),t=(0,F.p)().mermaid,n=t.theme[e],{options:a}=t;return(0,s.useMemo)(()=>({startOnLoad:!1,...a,theme:n}),[n,a])}function mn({text:e,config:t}){const[n,a]=(0,s.useState)(null),i=(0,s.useState)(`mermaid-svg-${Math.round(1e7*Math.random())}`)[0],r=un(),o=t??r;return(0,s.useEffect)(()=>{(async function({id:e,text:t,config:n}){const s=await dn();s.initialize(n);try{return await s.render(e,t)}catch(a){throw document.querySelector(`#d${e}`)?.remove(),a}})({id:i,text:e,config:o}).then(a).catch(e=>{a(()=>{throw e})})},[i,e,o]),n}const hn="container_lyt7";function fn({renderResult:e}){const t=(0,s.useRef)(null);return(0,s.useEffect)(()=>{const n=t.current;e.bindFunctions?.(n)},[e]),(0,r.jsx)("div",{ref:t,className:`docusaurus-mermaid-container ${hn}`,dangerouslySetInnerHTML:{__html:e.svg}})}function pn({value:e}){const t=mn({text:e});return null===t?null:(0,r.jsx)(fn,{renderResult:t})}const xn={Head:me.A,details:Bt,Details:Bt,code:function(e){return function(e){return void 0!==e.children&&s.Children.toArray(e.children).every(e=>"string"==typeof e&&!e.includes("\n"))}(e)?(0,r.jsx)(jt,{...e}):(0,r.jsx)(bt,{...e})},a:function(e){const t=(0,vt.v)(e.id);return(0,r.jsx)(A.A,{...e,className:(0,u.A)(t,e.className)})},pre:function(e){return(0,r.jsx)(r.Fragment,{children:e.children})},ul:function(e){return(0,r.jsx)("ul",{...e,className:Et(e.className)})},li:function(e){(0,Nt.A)().collectAnchor(e.id);const t=(0,vt.v)(e.id);return(0,r.jsx)("li",{className:(0,u.A)(t,e.className),...e})},img:function(e){return(0,r.jsx)("img",{decoding:"async",loading:"lazy",...e,className:(t=e.className,(0,u.A)(t,St))});var t},h1:e=>(0,r.jsx)(Mt,{as:"h1",...e}),h2:e=>(0,r.jsx)(Mt,{as:"h2",...e}),h3:e=>(0,r.jsx)(Mt,{as:"h3",...e}),h4:e=>(0,r.jsx)(Mt,{as:"h4",...e}),h5:e=>(0,r.jsx)(Mt,{as:"h5",...e}),h6:e=>(0,r.jsx)(Mt,{as:"h6",...e}),admonition:rn,mermaid:function(e){return(0,r.jsx)(on.A,{fallback:e=>(0,r.jsx)(cn.MN,{...e}),children:(0,r.jsx)(pn,{...e})})}};function gn({children:e}){return(0,r.jsx)(fe.x,{components:xn,children:e})}function bn({children:e}){const t=function(){const{metadata:e,frontMatter:t,contentTitle:n}=l();return t.hide_title||void 0!==n?null:e.title}();return(0,r.jsxs)("div",{className:(0,u.A)(j.G.docs.docMarkdown,"markdown"),children:[t&&(0,r.jsx)("header",{children:(0,r.jsx)(he.A,{as:"h1",children:t})}),(0,r.jsx)(gn,{children:e})]})}function jn(e){const{siteConfig:t}=(0,v.A)(),{metadata:n,frontMatter:s}=l(),a=!1!==s.techArticle?function(e,t,n){const s=e?`${e.replace(/\/$/,"")}${t.permalink}`:t.permalink,a={"@context":"https://schema.org","@type":"TechArticle","@id":`${s}#article`,mainEntityOfPage:s,headline:n.title||t.title,inLanguage:"en",publisher:{"@id":"https://www.conduction.nl/#org"}};(n.description||t.description)&&(a.description=n.description||t.description);const i=n.date||t.lastUpdatedAt;i&&(a.datePublished="number"==typeof i?new Date(1e3*i).toISOString():new Date(i).toISOString()),t.lastUpdatedAt&&(a.dateModified=new Date(1e3*t.lastUpdatedAt).toISOString());const r=n.author||n.authors;return r?"string"==typeof r?a.author={"@type":"Person",name:r}:Array.isArray(r)?a.author=r.map(e=>"string"==typeof e?{"@type":"Person",name:e}:{"@type":"Person",name:e.name,url:e.url}):"object"==typeof r&&(a.author={"@type":"Person",name:r.name,url:r.url}):a.author={"@type":"Organization",name:"Conduction","@id":"https://www.conduction.nl/#org"},a}(t.url,n,s):null;return(0,r.jsxs)(r.Fragment,{children:[a&&(0,r.jsx)(me.A,{children:(0,r.jsx)("script",{type:"application/ld+json",children:JSON.stringify(a)})}),(0,r.jsx)(bn,{...e})]})}var vn=n(594);function Nn(){return(0,r.jsx)(N.A,{id:"theme.contentVisibility.unlistedBanner.title",description:"The unlisted content banner title",children:"Unlisted page"})}function An(){return(0,r.jsx)(N.A,{id:"theme.contentVisibility.unlistedBanner.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function yn(){return(0,r.jsx)(me.A,{children:(0,r.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}function kn(){return(0,r.jsx)(N.A,{id:"theme.contentVisibility.draftBanner.title",description:"The draft content banner title",children:"Draft page"})}function Cn(){return(0,r.jsx)(N.A,{id:"theme.contentVisibility.draftBanner.message",description:"The draft content banner message",children:"This page is a draft. It will only be visible in dev and be excluded from the production build."})}function Ln({className:e}){return(0,r.jsx)(rn,{type:"caution",title:(0,r.jsx)(kn,{}),className:(0,u.A)(e,j.G.common.draftBanner),children:(0,r.jsx)(Cn,{})})}function wn({className:e}){return(0,r.jsx)(rn,{type:"caution",title:(0,r.jsx)(Nn,{}),className:(0,u.A)(e,j.G.common.unlistedBanner),children:(0,r.jsx)(An,{})})}function _n(e){return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(yn,{}),(0,r.jsx)(wn,{...e})]})}function Tn({metadata:e}){const{unlisted:t,frontMatter:n}=e;return(0,r.jsxs)(r.Fragment,{children:[(t||n.unlisted)&&(0,r.jsx)(_n,{}),n.draft&&(0,r.jsx)(Ln,{})]})}const Bn="docItemContainer_Djhp",Mn="docItemCol_VOVn";function Hn({children:e}){const t=function(){const{frontMatter:e,toc:t}=l(),n=(0,m.l)(),s=e.hide_table_of_contents,a=!s&&t.length>0;return{hidden:s,mobile:a?(0,r.jsx)(ce,{}):void 0,desktop:!a||"desktop"!==n&&"ssr"!==n?void 0:(0,r.jsx)(ue,{})}}(),{metadata:n}=l();return(0,r.jsxs)("div",{className:"row",children:[(0,r.jsxs)("div",{className:(0,u.A)("col",!t.hidden&&Mn),children:[(0,r.jsx)(Tn,{metadata:n}),(0,r.jsx)(p.A,{}),(0,r.jsxs)("div",{className:Bn,children:[(0,r.jsxs)("article",{children:[(0,r.jsx)(vn.A,{}),(0,r.jsx)(x.A,{}),t.mobile,(0,r.jsx)(jn,{children:e}),(0,r.jsx)($,{})]}),(0,r.jsx)(f,{})]})]}),t.desktop&&(0,r.jsx)("div",{className:"col col--3",children:t.desktop})]})}function En(e){const t=`docs-doc-id-${e.content.metadata.id}`,n=e.content;return(0,r.jsx)(c,{content:e.content,children:(0,r.jsxs)(a.e3,{className:t,children:[(0,r.jsx)(d,{}),(0,r.jsx)(Hn,{children:(0,r.jsx)(n,{})})]})})}},6929(e,t,n){"use strict";n.d(t,{A:()=>c});n(6540);var s=n(8215),a=n(1312),i=n(8774),r=n(4848);function o(e){const{permalink:t,title:n,subLabel:a,isNext:o}=e;return(0,r.jsxs)(i.A,{className:(0,s.A)("pagination-nav__link",o?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[a&&(0,r.jsx)("div",{className:"pagination-nav__sublabel",children:a}),(0,r.jsx)("div",{className:"pagination-nav__label",children:n})]})}function c(e){const{className:t,previous:n,next:i}=e;return(0,r.jsxs)("nav",{className:(0,s.A)(t,"pagination-nav"),"aria-label":(0,a.T)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"}),children:[n&&(0,r.jsx)(o,{...n,subLabel:(0,r.jsx)(a.A,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc",children:"Previous"})}),i&&(0,r.jsx)(o,{...i,subLabel:(0,r.jsx)(a.A,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc",children:"Next"}),isNext:!0})]})}},4267(e,t,n){"use strict";n.d(t,{A:()=>c});n(6540);var s=n(8215),a=n(1312),i=n(7559),r=n(3025),o=n(4848);function c({className:e}){const t=(0,r.r)();return t.badge?(0,o.jsx)("span",{className:(0,s.A)(e,i.G.docs.docVersionBadge,"badge badge--secondary"),children:(0,o.jsx)(a.A,{id:"theme.docs.versionBadge.label",values:{versionLabel:t.label},children:"Version: {versionLabel}"})}):null}},1878(e,t,n){"use strict";n.d(t,{A:()=>x});n(6540);var s=n(8215),a=n(4586),i=n(8774),r=n(1312),o=n(8295),c=n(7559),l=n(3886),d=n(3025),u=n(4848);const m={unreleased:function({siteTitle:e,versionMetadata:t}){return(0,u.jsx)(r.A,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:e,versionLabel:(0,u.jsx)("b",{children:t.label})},children:"This is unreleased documentation for {siteTitle} {versionLabel} version."})},unmaintained:function({siteTitle:e,versionMetadata:t}){return(0,u.jsx)(r.A,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:e,versionLabel:(0,u.jsx)("b",{children:t.label})},children:"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained."})}};function h(e){const t=m[e.versionMetadata.banner];return(0,u.jsx)(t,{...e})}function f({versionLabel:e,to:t,onClick:n}){return(0,u.jsx)(r.A,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:e,latestVersionLink:(0,u.jsx)("b",{children:(0,u.jsx)(i.A,{to:t,onClick:n,children:(0,u.jsx)(r.A,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label",children:"latest version"})})})},children:"For up-to-date documentation, see the {latestVersionLink} ({versionLabel})."})}function p({className:e,versionMetadata:t}){const{siteConfig:{title:n}}=(0,a.A)(),{pluginId:i}=(0,o.vT)({failfast:!0}),{savePreferredVersionName:r}=(0,l.g1)(i),{latestDocSuggestion:d,latestVersionSuggestion:m}=(0,o.HW)(i),p=d??(x=m).docs.find(e=>e.id===x.mainDocId);var x;return(0,u.jsxs)("div",{className:(0,s.A)(e,c.G.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert",children:[(0,u.jsx)("div",{children:(0,u.jsx)(h,{siteTitle:n,versionMetadata:t})}),(0,u.jsx)("div",{className:"margin-top--md",children:(0,u.jsx)(f,{versionLabel:m.label,to:p.path,onClick:()=>r(m.name)})})]})}function x({className:e}){const t=(0,d.r)();return t.banner?(0,u.jsx)(p,{className:e,versionMetadata:t}):null}},1107(e,t,n){"use strict";n.d(t,{A:()=>l});n(6540);var s=n(8215),a=n(1312),i=n(3535),r=n(8774),o=n(3427),c=n(4848);function l({as:e,id:t,...n}){const l=(0,o.A)(),d=(0,i.v)(t);if("h1"===e||!t)return(0,c.jsx)(e,{...n,id:void 0});l.collectAnchor(t);const u=(0,a.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof n.children?n.children:t});return(0,c.jsxs)(e,{...n,className:(0,s.A)("anchor",d,n.className),id:t,children:[n.children,(0,c.jsx)(r.A,{className:"hash-link",to:`#${t}`,"aria-label":u,title:u,translate:"no",children:"\u200b"})]})}},3535(e,t,n){"use strict";n.d(t,{v:()=>r});var s=n(6342);const a="anchorTargetStickyNavbar_Vzrq",i="anchorTargetHideOnScrollNavbar_vjPI";function r(e){const{navbar:{hideOnScroll:t}}=(0,s.p)();if(void 0!==e)return t?i:a}},8426(e,t){function n(e){let t,n=[];for(let s of e.split(",").map(e=>e.trim()))if(/^-?\d+$/.test(s))n.push(parseInt(s,10));else if(t=s.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,s,a,i]=t;if(s&&i){s=parseInt(s),i=parseInt(i);const e=s<i?1:-1;"-"!==a&&".."!==a&&"\u2025"!==a||(i+=e);for(let t=s;t!==i;t+=e)n.push(t)}}return n}t.default=n,e.exports=n}}]); \ No newline at end of file diff --git a/docs/build/assets/js/1795.d6fd3594.js b/docs/build/assets/js/1795.d6fd3594.js deleted file mode 100644 index 625aa79cd..000000000 --- a/docs/build/assets/js/1795.d6fd3594.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[1795],{2938(t,r,e){e.d(r,{m:()=>n});var o=e(797),n=class{constructor(t){this.init=t,this.records=this.init()}static{(0,o.K2)(this,"ImperativeState")}reset(){this.records=this.init()}}},1795(t,r,e){e.d(r,{diagram:()=>Rt});var o=e(5871),n=e(2938),a=e(8515),i=e(3706),s=e(797),c=e(8731),d=e(451),h={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},$=i.UI.gitGraph,m=(0,s.K2)(()=>(0,a.$t)({...$,...(0,i.zj)().gitGraph}),"getConfig"),l=new n.m(()=>{const t=m(),r=t.mainBranchName,e=t.mainBranchOrder;return{mainBranchName:r,commits:new Map,head:null,branchConfig:new Map([[r,{name:r,order:e}]]),branches:new Map([[r,null]]),currBranch:r,direction:"LR",seq:0,options:{}}});function g(){return(0,a.yT)({length:7})}function y(t,r){const e=Object.create(null);return t.reduce((t,o)=>{const n=r(o);return e[n]||(e[n]=!0,t.push(o)),t},[])}(0,s.K2)(g,"getID"),(0,s.K2)(y,"uniqBy");var p=(0,s.K2)(function(t){l.records.direction=t},"setDirection"),f=(0,s.K2)(function(t){s.Rm.debug("options str",t),t=t?.trim(),t=t||"{}";try{l.records.options=JSON.parse(t)}catch(r){s.Rm.error("error while parsing gitGraph options",r.message)}},"setOptions"),x=(0,s.K2)(function(){return l.records.options},"getOptions"),u=(0,s.K2)(function(t){let r=t.msg,e=t.id;const o=t.type;let n=t.tags;s.Rm.info("commit",r,e,o,n),s.Rm.debug("Entering commit:",r,e,o,n);const a=m();e=i.Y2.sanitizeText(e,a),r=i.Y2.sanitizeText(r,a),n=n?.map(t=>i.Y2.sanitizeText(t,a));const c={id:e||l.records.seq+"-"+g(),message:r,seq:l.records.seq++,type:o??h.NORMAL,tags:n??[],parents:null==l.records.head?[]:[l.records.head.id],branch:l.records.currBranch};l.records.head=c,s.Rm.info("main branch",a.mainBranchName),l.records.commits.has(c.id)&&s.Rm.warn(`Commit ID ${c.id} already exists`),l.records.commits.set(c.id,c),l.records.branches.set(l.records.currBranch,c.id),s.Rm.debug("in pushCommit "+c.id)},"commit"),b=(0,s.K2)(function(t){let r=t.name;const e=t.order;if(r=i.Y2.sanitizeText(r,m()),l.records.branches.has(r))throw new Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${r}")`);l.records.branches.set(r,null!=l.records.head?l.records.head.id:null),l.records.branchConfig.set(r,{name:r,order:e}),B(r),s.Rm.debug("in createBranch")},"branch"),w=(0,s.K2)(t=>{let r=t.branch,e=t.id;const o=t.type,n=t.tags,a=m();r=i.Y2.sanitizeText(r,a),e&&(e=i.Y2.sanitizeText(e,a));const c=l.records.branches.get(l.records.currBranch),d=l.records.branches.get(r),$=c?l.records.commits.get(c):void 0,y=d?l.records.commits.get(d):void 0;if($&&y&&$.branch===r)throw new Error(`Cannot merge branch '${r}' into itself.`);if(l.records.currBranch===r){const t=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw t.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["branch abc"]},t}if(void 0===$||!$){const t=new Error(`Incorrect usage of "merge". Current branch (${l.records.currBranch})has no commits`);throw t.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["commit"]},t}if(!l.records.branches.has(r)){const t=new Error('Incorrect usage of "merge". Branch to be merged ('+r+") does not exist");throw t.hash={text:`merge ${r}`,token:`merge ${r}`,expected:[`branch ${r}`]},t}if(void 0===y||!y){const t=new Error('Incorrect usage of "merge". Branch to be merged ('+r+") has no commits");throw t.hash={text:`merge ${r}`,token:`merge ${r}`,expected:['"commit"']},t}if($===y){const t=new Error('Incorrect usage of "merge". Both branches have same head');throw t.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["branch abc"]},t}if(e&&l.records.commits.has(e)){const t=new Error('Incorrect usage of "merge". Commit with id:'+e+" already exists, use different custom id");throw t.hash={text:`merge ${r} ${e} ${o} ${n?.join(" ")}`,token:`merge ${r} ${e} ${o} ${n?.join(" ")}`,expected:[`merge ${r} ${e}_UNIQUE ${o} ${n?.join(" ")}`]},t}const p=d||"",f={id:e||`${l.records.seq}-${g()}`,message:`merged branch ${r} into ${l.records.currBranch}`,seq:l.records.seq++,parents:null==l.records.head?[]:[l.records.head.id,p],branch:l.records.currBranch,type:h.MERGE,customType:o,customId:!!e,tags:n??[]};l.records.head=f,l.records.commits.set(f.id,f),l.records.branches.set(l.records.currBranch,f.id),s.Rm.debug(l.records.branches),s.Rm.debug("in mergeBranch")},"merge"),k=(0,s.K2)(function(t){let r=t.id,e=t.targetId,o=t.tags,n=t.parent;s.Rm.debug("Entering cherryPick:",r,e,o);const a=m();if(r=i.Y2.sanitizeText(r,a),e=i.Y2.sanitizeText(e,a),o=o?.map(t=>i.Y2.sanitizeText(t,a)),n=i.Y2.sanitizeText(n,a),!r||!l.records.commits.has(r)){const t=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw t.hash={text:`cherryPick ${r} ${e}`,token:`cherryPick ${r} ${e}`,expected:["cherry-pick abc"]},t}const c=l.records.commits.get(r);if(void 0===c||!c)throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');if(n&&(!Array.isArray(c.parents)||!c.parents.includes(n))){throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.")}const d=c.branch;if(c.type===h.MERGE&&!n){throw new Error("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.")}if(!e||!l.records.commits.has(e)){if(d===l.records.currBranch){const t=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw t.hash={text:`cherryPick ${r} ${e}`,token:`cherryPick ${r} ${e}`,expected:["cherry-pick abc"]},t}const t=l.records.branches.get(l.records.currBranch);if(void 0===t||!t){const t=new Error(`Incorrect usage of "cherry-pick". Current branch (${l.records.currBranch})has no commits`);throw t.hash={text:`cherryPick ${r} ${e}`,token:`cherryPick ${r} ${e}`,expected:["cherry-pick abc"]},t}const a=l.records.commits.get(t);if(void 0===a||!a){const t=new Error(`Incorrect usage of "cherry-pick". Current branch (${l.records.currBranch})has no commits`);throw t.hash={text:`cherryPick ${r} ${e}`,token:`cherryPick ${r} ${e}`,expected:["cherry-pick abc"]},t}const i={id:l.records.seq+"-"+g(),message:`cherry-picked ${c?.message} into ${l.records.currBranch}`,seq:l.records.seq++,parents:null==l.records.head?[]:[l.records.head.id,c.id],branch:l.records.currBranch,type:h.CHERRY_PICK,tags:o?o.filter(Boolean):[`cherry-pick:${c.id}${c.type===h.MERGE?`|parent:${n}`:""}`]};l.records.head=i,l.records.commits.set(i.id,i),l.records.branches.set(l.records.currBranch,i.id),s.Rm.debug(l.records.branches),s.Rm.debug("in cherryPick")}},"cherryPick"),B=(0,s.K2)(function(t){if(t=i.Y2.sanitizeText(t,m()),!l.records.branches.has(t)){const r=new Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${t}")`);throw r.hash={text:`checkout ${t}`,token:`checkout ${t}`,expected:[`branch ${t}`]},r}{l.records.currBranch=t;const r=l.records.branches.get(l.records.currBranch);l.records.head=void 0!==r&&r?l.records.commits.get(r)??null:null}},"checkout");function E(t,r,e){const o=t.indexOf(r);-1===o?t.push(e):t.splice(o,1,e)}function C(t){const r=t.reduce((t,r)=>t.seq>r.seq?t:r,t[0]);let e="";t.forEach(function(t){e+=t===r?"\t*":"\t|"});const o=[e,r.id,r.seq];for(const n in l.records.branches)l.records.branches.get(n)===r.id&&o.push(n);if(s.Rm.debug(o.join(" ")),r.parents&&2==r.parents.length&&r.parents[0]&&r.parents[1]){const e=l.records.commits.get(r.parents[0]);E(t,r,e),r.parents[1]&&t.push(l.records.commits.get(r.parents[1]))}else{if(0==r.parents.length)return;if(r.parents[0]){const e=l.records.commits.get(r.parents[0]);E(t,r,e)}}C(t=y(t,t=>t.id))}(0,s.K2)(E,"upsert"),(0,s.K2)(C,"prettyPrintCommitHistory");var L=(0,s.K2)(function(){s.Rm.debug(l.records.commits);C([v()[0]])},"prettyPrint"),T=(0,s.K2)(function(){l.reset(),(0,i.IU)()},"clear"),K=(0,s.K2)(function(){return[...l.records.branchConfig.values()].map((t,r)=>null!==t.order&&void 0!==t.order?t:{...t,order:parseFloat(`0.${r}`)}).sort((t,r)=>(t.order??0)-(r.order??0)).map(({name:t})=>({name:t}))},"getBranchesAsObjArray"),M=(0,s.K2)(function(){return l.records.branches},"getBranches"),R=(0,s.K2)(function(){return l.records.commits},"getCommits"),v=(0,s.K2)(function(){const t=[...l.records.commits.values()];return t.forEach(function(t){s.Rm.debug(t.id)}),t.sort((t,r)=>t.seq-r.seq),t},"getCommitsArray"),I={commitType:h,getConfig:m,setDirection:p,setOptions:f,getOptions:x,commit:u,branch:b,merge:w,cherryPick:k,checkout:B,prettyPrint:L,clear:T,getBranchesAsObjArray:K,getBranches:M,getCommits:R,getCommitsArray:v,getCurrentBranch:(0,s.K2)(function(){return l.records.currBranch},"getCurrentBranch"),getDirection:(0,s.K2)(function(){return l.records.direction},"getDirection"),getHead:(0,s.K2)(function(){return l.records.head},"getHead"),setAccTitle:i.SV,getAccTitle:i.iN,getAccDescription:i.m7,setAccDescription:i.EI,setDiagramTitle:i.ke,getDiagramTitle:i.ab},P=(0,s.K2)((t,r)=>{(0,o.S)(t,r),t.dir&&r.setDirection(t.dir);for(const e of t.statements)O(e,r)},"populate"),O=(0,s.K2)((t,r)=>{const e={Commit:(0,s.K2)(t=>r.commit(A(t)),"Commit"),Branch:(0,s.K2)(t=>r.branch(G(t)),"Branch"),Merge:(0,s.K2)(t=>r.merge(S(t)),"Merge"),Checkout:(0,s.K2)(t=>r.checkout(H(t)),"Checkout"),CherryPicking:(0,s.K2)(t=>r.cherryPick(W(t)),"CherryPicking")}[t.$type];e?e(t):s.Rm.error(`Unknown statement type: ${t.$type}`)},"parseStatement"),A=(0,s.K2)(t=>({id:t.id,msg:t.message??"",type:void 0!==t.type?h[t.type]:h.NORMAL,tags:t.tags??void 0}),"parseCommit"),G=(0,s.K2)(t=>({name:t.name,order:t.order??0}),"parseBranch"),S=(0,s.K2)(t=>({branch:t.branch,id:t.id??"",type:void 0!==t.type?h[t.type]:void 0,tags:t.tags??void 0}),"parseMerge"),H=(0,s.K2)(t=>t.branch,"parseCheckout"),W=(0,s.K2)(t=>({id:t.id,targetId:"",tags:0===t.tags?.length?void 0:t.tags,parent:t.parent}),"parseCherryPicking"),q={parse:(0,s.K2)(async t=>{const r=await(0,c.qg)("gitGraph",t);s.Rm.debug(r),P(r,I)},"parse")};var z=10,_=40,D=new Set(["redux","redux-dark","redux-color","redux-dark-color"]),Y=new Set(["redux-color","redux-dark-color"]),j=new Set(["dark","redux-dark","redux-dark-color","neo-dark"]),N=(0,s.K2)((t,r,e=!1)=>e&&t>0?(t-1)%(r-1)+1:t%r,"calcColorIndex"),F=new Map,V=new Map,U=new Map,J=[],Q=0,X="LR",Z=(0,s.K2)(()=>{F.clear(),V.clear(),U.clear(),Q=0,J=[],X="LR"},"clear"),tt=(0,s.K2)(t=>{const r=document.createElementNS("http://www.w3.org/2000/svg","text");return("string"==typeof t?t.split(/\\n|\n|<br\s*\/?>/gi):t).forEach(t=>{const e=document.createElementNS("http://www.w3.org/2000/svg","tspan");e.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),e.setAttribute("dy","1em"),e.setAttribute("x","0"),e.setAttribute("class","row"),e.textContent=t.trim(),r.appendChild(e)}),r},"drawText"),rt=(0,s.K2)(t=>{let r,e,o;return"BT"===X?(e=(0,s.K2)((t,r)=>t<=r,"comparisonFunc"),o=1/0):(e=(0,s.K2)((t,r)=>t>=r,"comparisonFunc"),o=0),t.forEach(t=>{const n="TB"===X||"BT"==X?V.get(t)?.y:V.get(t)?.x;void 0!==n&&e(n,o)&&(r=t,o=n)}),r},"findClosestParent"),et=(0,s.K2)(t=>{let r="",e=1/0;return t.forEach(t=>{const o=V.get(t).y;o<=e&&(r=t,e=o)}),r||void 0},"findClosestParentBT"),ot=(0,s.K2)((t,r,e)=>{let o=e,n=e;const a=[];t.forEach(t=>{const e=r.get(t);if(!e)throw new Error(`Commit not found for key ${t}`);e.parents.length?(o=at(e),n=Math.max(o,n)):a.push(e),it(e,o)}),o=n,a.forEach(t=>{st(t,o,e)}),t.forEach(t=>{const e=r.get(t);if(e?.parents.length){const t=et(e.parents);o=V.get(t).y-_,o<=n&&(n=o);const r=F.get(e.branch).pos,a=o-z;V.set(e.id,{x:r,y:a})}})},"setParallelBTPos"),nt=(0,s.K2)(t=>{const r=rt(t.parents.filter(t=>null!==t));if(!r)throw new Error(`Closest parent not found for commit ${t.id}`);const e=V.get(r)?.y;if(void 0===e)throw new Error(`Closest parent position not found for commit ${t.id}`);return e},"findClosestParentPos"),at=(0,s.K2)(t=>nt(t)+_,"calculateCommitPosition"),it=(0,s.K2)((t,r)=>{const e=F.get(t.branch);if(!e)throw new Error(`Branch not found for commit ${t.id}`);const o=e.pos,n=r+z;return V.set(t.id,{x:o,y:n}),{x:o,y:n}},"setCommitPosition"),st=(0,s.K2)((t,r,e)=>{const o=F.get(t.branch);if(!o)throw new Error(`Branch not found for commit ${t.id}`);const n=r+e,a=o.pos;V.set(t.id,{x:a,y:n})},"setRootPosition"),ct=(0,s.K2)((t,r,e,o,n,a)=>{const{theme:s}=(0,i.D7)(),c=D.has(s??""),d=Y.has(s??""),$=j.has(s??"");if(a===h.HIGHLIGHT)t.append("rect").attr("x",e.x-10+(c?3:0)).attr("y",e.y-10+(c?3:0)).attr("width",c?14:20).attr("height",c?14:20).attr("class",`commit ${r.id} commit-highlight${N(n,8,d)} ${o}-outer`),t.append("rect").attr("x",e.x-6+(c?2:0)).attr("y",e.y-6+(c?2:0)).attr("width",c?8:12).attr("height",c?8:12).attr("class",`commit ${r.id} commit${N(n,8,d)} ${o}-inner`);else if(a===h.CHERRY_PICK)t.append("circle").attr("cx",e.x).attr("cy",e.y).attr("r",c?7:10).attr("class",`commit ${r.id} ${o}`),t.append("circle").attr("cx",e.x-3).attr("cy",e.y+2).attr("r",c?2.5:2.75).attr("fill",$?"#000000":"#fff").attr("class",`commit ${r.id} ${o}`),t.append("circle").attr("cx",e.x+3).attr("cy",e.y+2).attr("r",c?2.5:2.75).attr("fill",$?"#000000":"#fff").attr("class",`commit ${r.id} ${o}`),t.append("line").attr("x1",e.x+3).attr("y1",e.y+1).attr("x2",e.x).attr("y2",e.y-5).attr("stroke",$?"#000000":"#fff").attr("class",`commit ${r.id} ${o}`),t.append("line").attr("x1",e.x-3).attr("y1",e.y+1).attr("x2",e.x).attr("y2",e.y-5).attr("stroke",$?"#000000":"#fff").attr("class",`commit ${r.id} ${o}`);else{const i=t.append("circle");if(i.attr("cx",e.x),i.attr("cy",e.y),i.attr("r",c?7:10),i.attr("class",`commit ${r.id} commit${N(n,8,d)}`),a===h.MERGE){const a=t.append("circle");a.attr("cx",e.x),a.attr("cy",e.y),a.attr("r",c?5:6),a.attr("class",`commit ${o} ${r.id} commit${N(n,8,d)}`)}if(a===h.REVERSE){const a=c?4:5;t.append("path").attr("d",`M ${e.x-a},${e.y-a}L${e.x+a},${e.y+a}M${e.x-a},${e.y+a}L${e.x+a},${e.y-a}`).attr("class",`commit ${o} ${r.id} commit${N(n,8,d)}`)}}},"drawCommitBullet"),dt=(0,s.K2)((t,r,e,o,n)=>{if(r.type!==h.CHERRY_PICK&&(r.customId&&r.type===h.MERGE||r.type!==h.MERGE)&&n.showCommitLabel){const a=t.append("g"),i=a.insert("rect").attr("class","commit-label-bkg"),s=a.append("text").attr("x",o).attr("y",e.y+25).attr("class","commit-label").text(r.id),c=s.node()?.getBBox();if(c&&(i.attr("x",e.posWithOffset-c.width/2-2).attr("y",e.y+13.5).attr("width",c.width+4).attr("height",c.height+4),"TB"===X||"BT"===X?(i.attr("x",e.x-(c.width+16+5)).attr("y",e.y-12),s.attr("x",e.x-(c.width+16)).attr("y",e.y+c.height-12)):s.attr("x",e.posWithOffset-c.width/2),n.rotateCommitLabel))if("TB"===X||"BT"===X)s.attr("transform","rotate(-45, "+e.x+", "+e.y+")"),i.attr("transform","rotate(-45, "+e.x+", "+e.y+")");else{const t=-7.5-(c.width+10)/25*9.5,r=10+c.width/25*8.5;a.attr("transform","translate("+t+", "+r+") rotate(-45, "+o+", "+e.y+")")}}},"drawCommitLabel"),ht=(0,s.K2)((t,r,e,o)=>{if(r.tags.length>0){let n=0,a=0,i=0;const s=[];for(const o of r.tags.reverse()){const r=t.insert("polygon"),c=t.append("circle"),d=t.append("text").attr("y",e.y-16-n).attr("class","tag-label").text(o),h=d.node()?.getBBox();if(!h)throw new Error("Tag bbox not found");a=Math.max(a,h.width),i=Math.max(i,h.height),d.attr("x",e.posWithOffset-h.width/2),s.push({tag:d,hole:c,rect:r,yOffset:n}),n+=20}for(const{tag:t,hole:r,rect:c,yOffset:d}of s){const n=i/2,s=e.y-19.2-d;if(c.attr("class","tag-label-bkg").attr("points",`\n ${o-a/2-2},${s+2} \n ${o-a/2-2},${s-2}\n ${e.posWithOffset-a/2-4},${s-n-2}\n ${e.posWithOffset+a/2+4},${s-n-2}\n ${e.posWithOffset+a/2+4},${s+n+2}\n ${e.posWithOffset-a/2-4},${s+n+2}`),r.attr("cy",s).attr("cx",o-a/2+2).attr("r",1.5).attr("class","tag-hole"),"TB"===X||"BT"===X){const i=o+d;c.attr("class","tag-label-bkg").attr("points",`\n ${e.x},${i+2}\n ${e.x},${i-2}\n ${e.x+z},${i-n-2}\n ${e.x+z+a+4},${i-n-2}\n ${e.x+z+a+4},${i+n+2}\n ${e.x+z},${i+n+2}`).attr("transform","translate(12,12) rotate(45, "+e.x+","+o+")"),r.attr("cx",e.x+2).attr("cy",i).attr("transform","translate(12,12) rotate(45, "+e.x+","+o+")"),t.attr("x",e.x+5).attr("y",i+3).attr("transform","translate(14,14) rotate(45, "+e.x+","+o+")")}}}},"drawCommitTags"),$t=(0,s.K2)(t=>{switch(t.customType??t.type){case h.NORMAL:return"commit-normal";case h.REVERSE:return"commit-reverse";case h.HIGHLIGHT:return"commit-highlight";case h.MERGE:return"commit-merge";case h.CHERRY_PICK:return"commit-cherry-pick";default:return"commit-normal"}},"getCommitClassType"),mt=(0,s.K2)((t,r,e,o)=>{const n={x:0,y:0};if(!(t.parents.length>0)){if("TB"===r)return 30;if("BT"===r){return(o.get(t.id)??n).y-_}return 0}{const e=rt(t.parents);if(e){const a=o.get(e)??n;if("TB"===r)return a.y+_;if("BT"===r){return(o.get(t.id)??n).y-_}return a.x+_}}return 0},"calculatePosition"),lt=(0,s.K2)((t,r,e)=>{const o="BT"===X&&e?r:r+z,n=F.get(t.branch)?.pos,a="TB"===X||"BT"===X?F.get(t.branch)?.pos:o;if(void 0===a||void 0===n)throw new Error(`Position were undefined for commit ${t.id}`);const s=D.has((0,i.D7)().theme??"");return{x:a,y:"TB"===X||"BT"===X?o:n+(s?7:-2),posWithOffset:o}},"getCommitPosition"),gt=(0,s.K2)((t,r,e,o)=>{const n=t.append("g").attr("class","commit-bullets"),a=t.append("g").attr("class","commit-labels");let i="TB"===X||"BT"===X?30:0;const c=[...r.keys()],d=o.parallelCommits??!1,h=(0,s.K2)((t,e)=>{const o=r.get(t)?.seq,n=r.get(e)?.seq;return void 0!==o&&void 0!==n?o-n:0},"sortKeys");let $=c.sort(h);"BT"===X&&(d&&ot($,r,i),$=$.reverse()),$.forEach(t=>{const s=r.get(t);if(!s)throw new Error(`Commit not found for key ${t}`);d&&(i=mt(s,X,i,V));const c=lt(s,i,d);if(e){const t=$t(s),r=s.customType??s.type,e=F.get(s.branch)?.index??0;ct(n,s,c,t,e,r),dt(a,s,c,i,o),ht(a,s,c,i)}"TB"===X||"BT"===X?V.set(s.id,{x:c.x,y:c.posWithOffset}):V.set(s.id,{x:c.posWithOffset,y:c.y}),i="BT"===X&&d?i+_:i+_+z,i>Q&&(Q=i)})},"drawCommits"),yt=(0,s.K2)((t,r,e,o,n)=>{const a=("TB"===X||"BT"===X?e.x<o.x:e.y<o.y)?r.branch:t.branch,i=(0,s.K2)(t=>t.branch===a,"isOnBranchToGetCurve"),c=(0,s.K2)(e=>e.seq>t.seq&&e.seq<r.seq,"isBetweenCommits");return[...n.values()].some(t=>c(t)&&i(t))},"shouldRerouteArrow"),pt=(0,s.K2)((t,r,e=0)=>{const o=t+Math.abs(t-r)/2;if(e>5)return o;if(J.every(t=>Math.abs(t-o)>=10))return J.push(o),o;const n=Math.abs(t-r);return pt(t,r-n/5,e+1)},"findLane"),ft=(0,s.K2)((t,r,e,o)=>{const{theme:n}=(0,i.D7)(),a=Y.has(n??""),s=V.get(r.id),c=V.get(e.id);if(void 0===s||void 0===c)throw new Error(`Commit positions not found for commits ${r.id} and ${e.id}`);const d=yt(r,e,s,c,o);let $,m="",l="",g=0,y=0,p=F.get(e.branch)?.index;if(e.type===h.MERGE&&r.id!==e.parents[0]&&(p=F.get(r.branch)?.index),d){m="A 10 10, 0, 0, 0,",l="A 10 10, 0, 0, 1,",g=10,y=10;const t=s.y<c.y?pt(s.y,c.y):pt(c.y,s.y),e=s.x<c.x?pt(s.x,c.x):pt(c.x,s.x);"TB"===X?s.x<c.x?$=`M ${s.x} ${s.y} L ${e-g} ${s.y} ${l} ${e} ${s.y+y} L ${e} ${c.y-g} ${m} ${e+y} ${c.y} L ${c.x} ${c.y}`:(p=F.get(r.branch)?.index,$=`M ${s.x} ${s.y} L ${e+g} ${s.y} ${m} ${e} ${s.y+y} L ${e} ${c.y-g} ${l} ${e-y} ${c.y} L ${c.x} ${c.y}`):"BT"===X?s.x<c.x?$=`M ${s.x} ${s.y} L ${e-g} ${s.y} ${m} ${e} ${s.y-y} L ${e} ${c.y+g} ${l} ${e+y} ${c.y} L ${c.x} ${c.y}`:(p=F.get(r.branch)?.index,$=`M ${s.x} ${s.y} L ${e+g} ${s.y} ${l} ${e} ${s.y-y} L ${e} ${c.y+g} ${m} ${e-y} ${c.y} L ${c.x} ${c.y}`):s.y<c.y?$=`M ${s.x} ${s.y} L ${s.x} ${t-g} ${m} ${s.x+y} ${t} L ${c.x-g} ${t} ${l} ${c.x} ${t+y} L ${c.x} ${c.y}`:(p=F.get(r.branch)?.index,$=`M ${s.x} ${s.y} L ${s.x} ${t+g} ${l} ${s.x+y} ${t} L ${c.x-g} ${t} ${m} ${c.x} ${t-y} L ${c.x} ${c.y}`)}else m="A 20 20, 0, 0, 0,",l="A 20 20, 0, 0, 1,",g=20,y=20,"TB"===X?(s.x<c.x&&($=e.type===h.MERGE&&r.id!==e.parents[0]?`M ${s.x} ${s.y} L ${s.x} ${c.y-g} ${m} ${s.x+y} ${c.y} L ${c.x} ${c.y}`:`M ${s.x} ${s.y} L ${c.x-g} ${s.y} ${l} ${c.x} ${s.y+y} L ${c.x} ${c.y}`),s.x>c.x&&(m="A 20 20, 0, 0, 0,",l="A 20 20, 0, 0, 1,",g=20,y=20,$=e.type===h.MERGE&&r.id!==e.parents[0]?`M ${s.x} ${s.y} L ${s.x} ${c.y-g} ${l} ${s.x-y} ${c.y} L ${c.x} ${c.y}`:`M ${s.x} ${s.y} L ${c.x+g} ${s.y} ${m} ${c.x} ${s.y+y} L ${c.x} ${c.y}`),s.x===c.x&&($=`M ${s.x} ${s.y} L ${c.x} ${c.y}`)):"BT"===X?(s.x<c.x&&($=e.type===h.MERGE&&r.id!==e.parents[0]?`M ${s.x} ${s.y} L ${s.x} ${c.y+g} ${l} ${s.x+y} ${c.y} L ${c.x} ${c.y}`:`M ${s.x} ${s.y} L ${c.x-g} ${s.y} ${m} ${c.x} ${s.y-y} L ${c.x} ${c.y}`),s.x>c.x&&(m="A 20 20, 0, 0, 0,",l="A 20 20, 0, 0, 1,",g=20,y=20,$=e.type===h.MERGE&&r.id!==e.parents[0]?`M ${s.x} ${s.y} L ${s.x} ${c.y+g} ${m} ${s.x-y} ${c.y} L ${c.x} ${c.y}`:`M ${s.x} ${s.y} L ${c.x+g} ${s.y} ${l} ${c.x} ${s.y-y} L ${c.x} ${c.y}`),s.x===c.x&&($=`M ${s.x} ${s.y} L ${c.x} ${c.y}`)):(s.y<c.y&&($=e.type===h.MERGE&&r.id!==e.parents[0]?`M ${s.x} ${s.y} L ${c.x-g} ${s.y} ${l} ${c.x} ${s.y+y} L ${c.x} ${c.y}`:`M ${s.x} ${s.y} L ${s.x} ${c.y-g} ${m} ${s.x+y} ${c.y} L ${c.x} ${c.y}`),s.y>c.y&&($=e.type===h.MERGE&&r.id!==e.parents[0]?`M ${s.x} ${s.y} L ${c.x-g} ${s.y} ${m} ${c.x} ${s.y-y} L ${c.x} ${c.y}`:`M ${s.x} ${s.y} L ${s.x} ${c.y+g} ${l} ${s.x+y} ${c.y} L ${c.x} ${c.y}`),s.y===c.y&&($=`M ${s.x} ${s.y} L ${c.x} ${c.y}`));if(void 0===$)throw new Error("Line definition not found");t.append("path").attr("d",$).attr("class","arrow arrow"+N(p,8,a))},"drawArrow"),xt=(0,s.K2)((t,r)=>{const e=t.append("g").attr("class","commit-arrows");[...r.keys()].forEach(t=>{const o=r.get(t);o.parents&&o.parents.length>0&&o.parents.forEach(t=>{ft(e,r.get(t),o,r)})})},"drawArrows"),ut=(0,s.K2)((t,r,e,o)=>{const{look:n,theme:a,themeVariables:s}=(0,i.D7)(),{dropShadow:c,THEME_COLOR_LIMIT:d}=s,h=D.has(a??""),$=Y.has(a??""),m=t.append("g");r.forEach((t,r)=>{const a=N(r,h?d:8,$),i=F.get(t.name)?.pos;if(void 0===i)throw new Error(`Position not found for branch ${t.name}`);const s="TB"===X||"BT"===X?i:h?i+6+1:i-2,l=m.append("line");l.attr("x1",0),l.attr("y1",s),l.attr("x2",Q),l.attr("y2",s),l.attr("class","branch branch"+a),"TB"===X?(l.attr("y1",30),l.attr("x1",i),l.attr("y2",Q),l.attr("x2",i)):"BT"===X&&(l.attr("y1",Q),l.attr("x1",i),l.attr("y2",30),l.attr("x2",i)),J.push(s);const g=t.name,y=tt(g),p=m.insert("rect"),f=m.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+a);f.node().appendChild(y);const x=y.getBBox(),u=h?0:4,b=h?16:0,w=h?12:0;"neo"===n&&p.attr("data-look","neo"),p.attr("class","branchLabelBkg label"+a).attr("style","neo"===n?`filter:${h?`url(#${o}-drop-shadow)`:c}`:"").attr("rx",u).attr("ry",u).attr("x",-x.width-4-(!0===e.rotateCommitLabel?30:0)).attr("y",-x.height/2+10).attr("width",x.width+18+b).attr("height",x.height+4+w),f.attr("transform","translate("+(-x.width-14-(!0===e.rotateCommitLabel?30:0)+b/2)+", "+(s-x.height/2-2)+")"),"TB"===X?(p.attr("x",i-x.width/2-10).attr("y",0),f.attr("transform","translate("+(i-x.width/2-5)+", 0)"),h&&(p.attr("transform",`translate(${-b/2-3}, ${-w-10})`),f.attr("transform","translate("+(i-x.width/2-5)+", "+(2*-w+7)+")"))):"BT"===X?(p.attr("x",i-x.width/2-10).attr("y",Q),f.attr("transform","translate("+(i-x.width/2-5)+", "+Q+")"),h&&(p.attr("transform",`translate(${-b/2-3}, ${w+10})`),f.attr("transform","translate("+(i-x.width/2-5)+", "+(Q+2*w+4)+")"))):p.attr("transform","translate(-19, "+(s-12-w/2)+")")})},"drawBranches"),bt=(0,s.K2)(function(t,r,e,o,n){return F.set(t,{pos:r,index:e}),r+=50+(n?40:0)+("TB"===X||"BT"===X?o.width/2:0)},"setBranchPosition"),wt={draw:(0,s.K2)(function(t,r,e,o){Z(),s.Rm.debug("in gitgraph renderer",t+"\n","id:",r,e);const n=o.db;if(!n.getConfig)return void s.Rm.error("getConfig method is not available on db");const c=n.getConfig(),h=c.rotateCommitLabel??!1;U=n.getCommits();const $=n.getBranchesAsObjArray();X=n.getDirection();const m=(0,d.Ltv)(`[id="${r}"]`),{look:l,theme:g,themeVariables:y}=(0,i.D7)(),{useGradient:p,gradientStart:f,gradientStop:x,filterColor:u}=y;if(p){const t=m.append("defs").append("linearGradient").attr("id",r+"-gradient").attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");t.append("stop").attr("offset","0%").attr("stop-color",f).attr("stop-opacity",1),t.append("stop").attr("offset","100%").attr("stop-color",x).attr("stop-opacity",1)}"neo"===l&&D.has(g??"")&&m.append("defs").append("filter").attr("id",r+"-drop-shadow").attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",u);let b=0;$.forEach((t,r)=>{const e=tt(t.name),o=m.append("g"),n=o.insert("g").attr("class","branchLabel"),a=n.insert("g").attr("class","label branch-label");a.node()?.appendChild(e);const i=e.getBBox();b=bt(t.name,b,r,i,h),a.remove(),n.remove(),o.remove()}),gt(m,U,!1,c),c.showBranches&&ut(m,$,c,r),xt(m,U),gt(m,U,!0,c),a._K.insertTitle(m,"gitTitleText",c.titleTopMargin??0,n.getDiagramTitle()),(0,i.mj)(void 0,m,c.diagramPadding,c.useMaxWidth)},"draw")};var kt=new Set(["redux","redux-dark","redux-color","redux-dark-color"]),Bt=new Set(["redux-color","redux-dark-color"]),Et=new Set(["neo","neo-dark"]),Ct=new Set(["dark","redux-dark","redux-dark-color","neo-dark"]),Lt=new Set(["redux","redux-dark","redux-color","redux-dark-color","neo","neo-dark"]),Tt=(0,s.K2)(t=>{const{svgId:r}=t;let e="";if(t.useGradient&&r)for(let o=0;o<t.THEME_COLOR_LIMIT;o++)e+=`\n .label${o} { fill: ${t.mainBkg}; stroke: url(${r}-gradient); stroke-width: ${t.strokeWidth};}\n `;return e},"genGitGraphGradient"),Kt=(0,s.K2)(t=>{const r=(0,i.zj)(),{theme:e,themeVariables:o}=r,{borderColorArray:n}=o,a=kt.has(e);if(Et.has(e)){let r="";for(let e=0;e<t.THEME_COLOR_LIMIT;e++)if(0===e)r+=`\n .branch-label${e} { fill: ${t.nodeBorder};}\n .commit${e} { stroke: ${t.nodeBorder}; }\n .commit-highlight${e} { stroke: ${t.nodeBorder}; fill: ${t.nodeBorder}; }\n .arrow${e} { stroke: ${t.nodeBorder}; }\n .commit-bullets { fill: ${t.nodeBorder}; }\n .commit-cherry-pick${e} { stroke: ${t.nodeBorder}; }\n ${Tt(t)}`;else{const o=e%8;r+=`\n .branch-label${e} { fill: ${t["gitBranchLabel"+o]}; }\n .commit${e} { stroke: ${t["git"+o]}; fill: ${t["git"+o]}; }\n .commit-highlight${e} { stroke: ${t["gitInv"+o]}; fill: ${t["gitInv"+o]}; }\n .arrow${e} { stroke: ${t["git"+o]}; }\n `}return r}if(Bt.has(e)){let r="";for(let o=0;o<t.THEME_COLOR_LIMIT;o++)if(0===o)r+=`\n .branch-label${o} { fill: ${t.nodeBorder}; ${a?`font-weight:${t.noteFontWeight}`:""} }\n .commit${o} { stroke: ${t.nodeBorder}; }\n .commit-highlight${o} { stroke: ${t.nodeBorder}; fill: ${t.mainBkg}; }\n .label${o} { fill: ${t.mainBkg}; stroke: ${t.nodeBorder}; stroke-width: ${t.strokeWidth}; ${a?`font-weight:${t.noteFontWeight}`:""} }\n .arrow${o} { stroke: ${t.nodeBorder}; }\n .commit-bullets { fill: ${t.nodeBorder}; }\n `;else{const i=o%n.length;r+=`\n .branch-label${o} { fill: ${t.nodeBorder}; ${a?`font-weight:${t.noteFontWeight}`:""} }\n .commit${o} { stroke: ${n[i]}; fill: ${n[i]}; }\n .commit-highlight${o} { stroke: ${n[i]}; fill: ${n[i]}; }\n .label${o} { fill: ${Ct.has(e)?t.mainBkg:n[i]}; stroke: ${n[i]}; stroke-width: ${t.strokeWidth}; }\n .arrow${o} { stroke: ${n[i]}; }\n `}return r}{let r="";for(let e=0;e<t.THEME_COLOR_LIMIT;e++)r+=`\n .branch-label${e} { fill: ${t.nodeBorder}; ${a?`font-weight:${t.noteFontWeight}`:""} }\n .commit${e} { stroke: ${t.nodeBorder}; }\n .commit-highlight${e} { stroke: ${t.nodeBorder}; fill: ${t.nodeBorder}; }\n .label${e} { fill: ${t.mainBkg}; stroke: ${t.nodeBorder}; stroke-width: ${t.strokeWidth}; ${a?`font-weight:${t.noteFontWeight}`:""}}\n .arrow${e} { stroke: ${t.nodeBorder}; }\n .commit-bullets { fill: ${t.nodeBorder}; }\n .commit-cherry-pick${e} { stroke: ${t.nodeBorder}; }\n `;return r}},"genColor"),Mt=(0,s.K2)(t=>`${Array.from({length:t.THEME_COLOR_LIMIT},(t,r)=>r).map(r=>{const e=r%8;return`\n .branch-label${r} { fill: ${t["gitBranchLabel"+e]}; }\n .commit${r} { stroke: ${t["git"+e]}; fill: ${t["git"+e]}; }\n .commit-highlight${r} { stroke: ${t["gitInv"+e]}; fill: ${t["gitInv"+e]}; }\n .label${r} { fill: ${t["git"+e]}; }\n .arrow${r} { stroke: ${t["git"+e]}; }\n `}).join("\n")}`,"normalTheme"),Rt={parser:q,db:I,renderer:wt,styles:(0,s.K2)(t=>{const r=(0,i.zj)(),{theme:e}=r,o=Lt.has(e);return`\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n \n ${o?Kt(t):Mt(t)}\n\n .branch {\n stroke-width: ${t.strokeWidth};\n stroke: ${t.commitLineColor??t.lineColor};\n stroke-dasharray: ${o?"4 2":"2"};\n }\n .commit-label { font-size: ${t.commitLabelFontSize}; fill: ${o?t.nodeBorder:t.commitLabelColor}; ${o?`font-weight:${t.noteFontWeight};`:""}}\n .commit-label-bkg { font-size: ${t.commitLabelFontSize}; fill: ${o?"transparent":t.commitLabelBackground}; opacity: ${o?"":.5}; }\n .tag-label { font-size: ${t.tagLabelFontSize}; fill: ${t.tagLabelColor};}\n .tag-label-bkg { fill: ${o?t.mainBkg:t.tagLabelBackground}; stroke: ${o?t.nodeBorder:t.tagLabelBorder}; ${o?`filter:${t.dropShadow}`:""} }\n .tag-hole { fill: ${t.textColor}; }\n\n .commit-merge {\n stroke: ${o?t.mainBkg:t.primaryColor};\n fill: ${o?t.mainBkg:t.primaryColor};\n }\n .commit-reverse {\n stroke: ${o?t.mainBkg:t.primaryColor};\n fill: ${o?t.mainBkg:t.primaryColor};\n stroke-width: ${o?t.strokeWidth:3};\n }\n .commit-highlight-outer {\n }\n .commit-highlight-inner {\n stroke: ${o?t.mainBkg:t.primaryColor};\n fill: ${o?t.mainBkg:t.primaryColor};\n }\n\n .arrow {\n /* Intentional: neo themes keep the bold 8px arrow (like classic themes); only redux-geometry themes use the thinner options.strokeWidth. */\n stroke-width: ${kt.has(e)?t.strokeWidth:8};\n stroke-linecap: round;\n fill: none\n }\n .gitTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n }\n`},"getStyles")}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/1844.905a2cb5.js b/docs/build/assets/js/1844.905a2cb5.js deleted file mode 100644 index 647ccc931..000000000 --- a/docs/build/assets/js/1844.905a2cb5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[1844],{1844(e,t,n){n.d(t,{diagram:()=>ne});var i=n(5871),a=n(8515),r=n(3706),o=n(797),s=n(8731),l=n(451),d="position frame",m="frame positioned",c="position relation",x="relation positioned",u=(0,o.K2)(function(e){o.Rm.debug("options str",e)},"setOptions"),f=(0,o.K2)(function(){return{}},"getOptions"),g=(0,o.K2)(function(){h(),(0,r.IU)()},"clear");function h(){w={}}(0,o.K2)(h,"reset");var b=r.UI.eventmodeling,p=(0,o.K2)(()=>(0,a.$t)({...b,...(0,r.zj)().eventmodeling}),"getConfig"),w={};function v(){let e=M;const{ast:t}=w,n=k();if(!t)throw new Error("No data for EventModel");return t.frames.forEach((i,a)=>{const r=E(i,t.dataEntities,n);let s;e=L(e,{$kind:d,index:a,frame:i,textProps:r}),j(i)?(o.Rm.debug("source frame",i.sourceFrames),s=t.frames.filter(e=>i.sourceFrames.some(t=>t.$refText===e.name)),s.forEach(t=>{e=L(e,{$kind:c,index:a,frame:i,sourceFrame:t})})):e=L(e,{$kind:c,index:a,frame:i})}),e={...e,sortedSwimlanesArray:H(e.swimlanes)},e}function y(e){w.ast=e}(0,o.K2)(v,"getState"),(0,o.K2)(y,"setAst");var P={swimlaneMinHeight:70,swimlanePadding:15,swimlaneGap:10,boxPadding:10,boxOverlap:90,boxDefaultY:0,boxMinWidth:80,boxMaxWidth:450,boxMinHeight:80,boxMaxHeight:750,contentStartX:250,textMaxWidth:430,boxTextFontWeight:"bold",boxTextPadding:10,swimlaneTextFontWeight:"bold",labelUiAutomation:"UI/Automation",labelUiAutomationPrefix:"UI/A: ",labelCommandReadModel:"Command/Read Model",labelCommandReadModelPrefix:"C/RM: ",labelEvents:"Events",labelEventsPrefix:"Stream: "};function k(){return P}(0,o.K2)(k,"getDiagramProps");var M={boxes:[],swimlanes:{},relations:[],maxR:0,sortedSwimlanesArray:[]};function K(e){const t=e.split(".");if(2===t.length)return t[0]}function S(e){const t=e.split(".");return 2===t.length?t[1]:e}function B(e,t){if(t&&0!==t.length)return Object.values(e).find(e=>e.namespace===t)}function F(e,t,n){return Math.max(t,...Object.keys(e).filter(e=>{const i=Number.parseInt(e);return i>t&&i<n}).map(e=>Number.parseInt(e)))+1}function R(e,t){const n=K(e.entityIdentifier),i=B(t,n);switch(e.modelEntityType){case"ui":case"pcr":case"processor":return i?{index:i.index,label:i.namespace||P.labelUiAutomation}:n?{index:F(t,0,100),label:P.labelUiAutomationPrefix+n}:{index:0,label:P.labelUiAutomation};case"rmo":case"readmodel":case"cmd":case"command":return i?{index:i.index,label:i.namespace||P.labelCommandReadModel}:n?{index:F(t,100,200),label:P.labelCommandReadModelPrefix+n}:{index:100,label:P.labelCommandReadModel};default:return i?{index:i.index,label:i.namespace||P.labelEvents}:n?{index:F(t,200,300),label:P.labelEventsPrefix+n}:{index:200,label:P.labelEvents}}}function $(e){const{themeVariables:t}=(0,r.zj)();switch(e.modelEntityType){case"ui":return{fill:t.emUiFill??"white",stroke:t.emUiStroke??"#dbdada"};case"pcr":case"processor":return{fill:t.emProcessorFill??"#edb3f6",stroke:t.emProcessorStroke??"#b88cbf"};case"rmo":case"readmodel":return{fill:t.emReadModelFill??"#d3f1a2",stroke:t.emReadModelStroke??"#a3b732"};case"cmd":case"command":return{fill:t.emCommandFill??"#bcd6fe",stroke:t.emCommandStroke??"#679ac3"};case"evt":case"event":return{fill:t.emEventFill??"#ffb778",stroke:t.emEventStroke??"#c19a0f"};default:return{fill:"red",stroke:"black"}}}function E(e,t,n){const i=(0,r.zj)(),s=(0,r.jZ)(S(e.entityIdentifier)??"",i);let l;const d={fontSize:16,fontWeight:700,fontFamily:'"trebuchet ms", verdana, arial, sans-serif',joinWith:"<br/>"};let m=`<b>${(0,a.bH)(s,n.textMaxWidth,d)}</b>`;if(e.dataInlineValue&&(l=e.dataInlineValue,l=l.substring(l.indexOf("{")+1),l=l.substring(0,l.lastIndexOf("}")-1),l=(0,r.jZ)(l,i),l=(0,a.bH)(l,n.textMaxWidth,d),l=l.replaceAll(" "," ")),e.dataReference){const o=t.find(t=>t.name===e.dataReference?.$refText);o&&(l=o.dataBlockValue,l=l.substring(l.indexOf("{\n")+2),l=l.substring(0,l.lastIndexOf("}")-1),l=(0,r.jZ)(l,i),l=(0,a.bH)(l,n.textMaxWidth,d),l=l.replaceAll(" "," "),l+="<br/>")}const c=void 0!==l;c&&(m+=`<br/><br/><code style="text-align: left; display: block;max-width:${n.textMaxWidth}px">${l}</code>`);const x={fontSize:d.fontSize,fontWeight:d.fontWeight,fontFamily:d.fontFamily},u=(0,a.PX)(m,x),f={content:m,width:c?u.width/3:u.width,height:u.height};return o.Rm.debug(`[${e.name}] ${e.entityIdentifier} text`,f),f}function A(e,t){const n=t,i=$(n.frame),a={width:n.textProps.width+2*P.boxTextPadding,height:n.textProps.height+2*P.boxTextPadding};return[{$kind:m,frame:n.frame,index:n.index,visual:i,dimension:a,textProps:n.textProps}]}function T(e,t,n){return void 0===t?P.contentStartX:t.index===e.index&&e.r?e.r+P.boxPadding:void 0===n?P.contentStartX:n.r-P.boxOverlap+P.boxPadding}function W(e,t){const n=[...e.map(e=>e.r),t];return Math.max(...n)}function H(e){return Object.values(e).sort((e,t)=>e.index-t.index)}function I(e,t){const n=t,i=R(n.frame,e.swimlanes);let a;a=i.index in e.swimlanes?e.swimlanes[i.index]:{index:i.index,label:i.label,r:0,y:i.index*P.swimlaneMinHeight+P.swimlaneGap,height:P.swimlaneMinHeight,maxHeight:P.swimlaneMinHeight};const r=e.boxes.length>0?e.boxes[e.boxes.length-1]:void 0,o=void 0!==e.previousSwimlaneNumber?e.swimlanes[e.previousSwimlaneNumber]:void 0,s={width:Math.max(P.boxMinWidth,Math.min(P.boxMaxWidth,n.dimension.width))+2*P.boxPadding,height:Math.max(P.boxMinHeight,Math.min(P.boxMaxHeight,n.dimension.height))+2*P.boxPadding},l=T(a,o,r),d=l+s.width+P.boxPadding,m=W(Object.values(e.swimlanes),d);a.r=l+s.width,a.maxHeight=Math.max(a.maxHeight,s.height),a.height=Math.max(P.swimlaneMinHeight,a.maxHeight)+2*P.swimlanePadding;const c={x:l,y:P.swimlanePadding+a.y,r:d,dimension:s,leftSibling:!1,swimlane:a,visual:n.visual,text:n.textProps.content,frame:n.frame,index:n.index},x={...e,boxes:[...e.boxes,c],swimlanes:{...e.swimlanes,[`${a.index}`]:a},previousSwimlaneNumber:i.index,previousFrame:n.frame,maxR:m},u=H(x.swimlanes);u.length>0&&(u[0].y=0);for(let f=1;f<u.length;f++){const e=u[f],t=u[f-1];e.y=t.y+t.height+P.swimlaneGap}return x}function O(e,t){return 0===e&&0===t.sourceFrames.length}function j(e){return void 0!==e.sourceFrames&&null!==e.sourceFrames&&e.sourceFrames.length>0}function C(e,t){if(null!=t)return e.find(e=>e.frame.name===t.name)}function D(e,t,n){if(!(n<0))for(let i=n;i>=0;i--){const n=e[i];if(n.swimlane.index!==t)return n}}function U(e,t){const n=t;if((0,s.F5)(n.frame)||O(n.index,n.frame))return[];const i=C(e.boxes,n.frame);if(void 0===i)throw new Error(`Target box not found for frame ${n.frame.name}`);let a;if(a=n.sourceFrame?C(e.boxes,n.sourceFrame):D(e.boxes,i.swimlane.index,n.index-1),void 0===a)return[];return[{$kind:x,frame:n.frame,index:n.index,sourceBox:a,targetBox:i}]}function N(e,t){const n=t,i={visual:{fill:"none",stroke:"#000"},source:{x:n.sourceBox.x,y:n.sourceBox.y},target:{x:n.targetBox.x,y:n.targetBox.y},sourceBox:n.sourceBox,targetBox:n.targetBox};return{...e,relations:[...e.relations,i]}}(0,o.K2)(K,"extractNamespace"),(0,o.K2)(S,"extractName"),(0,o.K2)(B,"findSwimlaneByNamespace"),(0,o.K2)(F,"findNextAvailableIndex"),(0,o.K2)(R,"calculateSwimlaneProps"),(0,o.K2)($,"calculateEntityVisualProps"),(0,o.K2)(E,"calculateTextProps"),(0,o.K2)(A,"decidePositionFrame"),(0,o.K2)(T,"calculateX"),(0,o.K2)(W,"calculateMaxRight"),(0,o.K2)(H,"sortedSwimlanesArray"),(0,o.K2)(I,"evolveFramePositioned"),(0,o.K2)(O,"isFirstFrame"),(0,o.K2)(j,"hasSourceFrame"),(0,o.K2)(C,"findBoxByFrame"),(0,o.K2)(D,"findBoxByLineIndex"),(0,o.K2)(U,"decidePositionRelation"),(0,o.K2)(N,"evolveRelationPositioned");var V={[d]:A,[c]:U},z={[m]:I,[x]:N};function X(e,t){const n=V[t.$kind];if(null==n)return[];const i=n(e,t);return o.Rm.debug("decided events",i),i}function G(e,t){const n=t.reduce((e,t)=>{const n=z[t.$kind];return null==n?e:n(e,t)},e);return o.Rm.debug("evolve events",{state:e,newState:n,events:t}),n}function L(e,t){return G(e,X(e,t))}(0,o.K2)(X,"decide"),(0,o.K2)(G,"evolve"),(0,o.K2)(L,"dispatch");var Z={getConfig:p,setOptions:u,getOptions:f,clear:g,setAccTitle:r.SV,getAccTitle:r.iN,getAccDescription:r.m7,setAccDescription:r.EI,setDiagramTitle:r.ke,getDiagramTitle:r.ab,setAst:y,getDiagramProps:k,getState:v},Y={parse:(0,o.K2)(async e=>{const t=await(0,s.qg)("eventmodeling",e);o.Rm.debug(t),Z.setAst(t),(0,i.S)(t,Z)},"parse")};var _=(0,r.D7)(),q=_?.eventmodeling;function J(e,t){return n=>{const i=n.swimlane.y+t.swimlanePadding,a=e.append("g").attr("class","em-box");a.append("rect").attr("x",n.x).attr("y",i).attr("rx","3").attr("width",n.dimension.width).attr("height",n.dimension.height).attr("stroke",n.visual.stroke).attr("fill",n.visual.fill);a.append("foreignObject").attr("x",n.x+t.boxPadding).attr("y",i+10).attr("width",n.dimension.width-2*t.boxPadding).attr("height",n.dimension.height-2*t.boxPadding).append("xhtml:div").style("display","table").style("height","100%").style("width","100%").append("span").style("display","table-cell").style("text-align","center").style("vertical-align","middle").html(n.text)}}function Q(e,t){return e>t}function ee(e,t,n,i){return a=>{const r=a.sourceBox.swimlane.y+t.swimlanePadding,s=a.targetBox.swimlane.y+t.swimlanePadding,l=Q(r,s),d=a.sourceBox.x+2*a.sourceBox.dimension.width/3,m=a.targetBox.x+a.targetBox.dimension.width/3;let c,x;o.Rm.debug(`rendering relation up=${l} for `,{sourceBox:a.sourceBox,targetBox:a.targetBox}),l?(c=r,x=s+a.targetBox.dimension.height):(c=r+a.sourceBox.dimension.height,x=s);const u=i.emRelationStroke??a.visual.stroke;e.append("path").attr("class","em-relation").attr("fill",a.visual.fill).attr("stroke",u).attr("stroke-width","1").attr("marker-end",`url(#${n})`).attr("d",`M${d} ${c} L${m} ${x}`)}}function te(e,t,n,i){return a=>{const r=e.append("g").attr("class","em-swimlane"),o=i.emSwimlaneBackgroundOdd??"rgb(250,250,250)",s=i.emSwimlaneBackgroundStroke??"rgb(240,240,240)";r.append("rect").attr("x",0).attr("y",a.y).attr("rx","3").attr("width",t+n.swimlanePadding).attr("height",a.height).attr("fill",o).attr("stroke",s),r.append("text").attr("font-weight",n.swimlaneTextFontWeight).attr("x",30).attr("y",a.y+30).text(a.label)}}(0,o.K2)(J,"renderD3Box"),(0,o.K2)(Q,"dirUpwards"),(0,o.K2)(ee,"renderD3Relation"),(0,o.K2)(te,"renderD3Swimlane");var ne={parser:Y,db:Z,renderer:{draw:(0,o.K2)(function(e,t,n,i){if(o.Rm.debug("in eventmodeling renderer",e+"\n","id:",t,n),!q)throw new Error("EventModeling config not found");const a=i.db,{themeVariables:s,eventmodeling:d}=(0,r.D7)(),m=(0,l.Ltv)(`[id="${t}"]`),c=a.getDiagramProps(),x=a.getState(),u=`em-arrowhead-${t}`,f=s.emArrowhead??"#000000";x.sortedSwimlanesArray.forEach(te(m,x.maxR,c,s)),x.boxes.forEach(J(m,c)),x.relations.forEach(ee(m,c,u,s));m.append("defs").append("marker").attr("id",u).attr("markerWidth","10").attr("markerHeight","7").attr("refX","10").attr("refY","3.5").attr("orient","auto").append("polygon").attr("points","0 0, 10 3.5, 0 7").attr("fill",f),(0,r.mj)(void 0,m,d?.padding??30,d?.useMaxWidth)},"draw")},styles:(0,o.K2)(e=>"","getStyles")}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/1e9767c5.f53ee4bf.js b/docs/build/assets/js/1e9767c5.f53ee4bf.js deleted file mode 100644 index a2f04582c..000000000 --- a/docs/build/assets/js/1e9767c5.f53ee4bf.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[9348],{7596(e,r,s){s.r(r),s.d(r,{assets:()=>l,contentTitle:()=>c,default:()=>a,frontMatter:()=>t,metadata:()=>n,toc:()=>h});const n=JSON.parse('{"id":"ARCHITECTURE","title":"Doriath \u2014 Architecture & Data Model","description":"1. Overview","source":"@site/ARCHITECTURE.md","sourceDirName":".","slug":"/ARCHITECTURE","permalink":"/docs/ARCHITECTURE","draft":false,"unlisted":false,"editUrl":"https://github.com/ConductionNL/doriath/tree/development/docs/ARCHITECTURE.md","tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Manage Doriath settings","permalink":"/docs/tutorials/admin/admin-settings"},"next":{"title":"Doriath \u2014 Design References & Dashboard Wireframes","permalink":"/docs/DESIGN-REFERENCES"}}');var i=s(4848),d=s(8453);const t={},c="Doriath \u2014 Architecture & Data Model",l={},h=[{value:"1. Overview",id:"1-overview",level:2},{value:"Architecture Pattern",id:"architecture-pattern",level:3},{value:"2. Standards Research",id:"2-standards-research",level:2},{value:"2.1 Standards Evaluated",id:"21-standards-evaluated",level:3},{value:"2.2 Design Principle: Security First, Standards-Based",id:"22-design-principle-security-first-standards-based",level:3},{value:"2.3 Key Findings",id:"23-key-findings",level:3},{value:"3. Data Model Decisions",id:"3-data-model-decisions",level:2},{value:"3.1 Standards Hierarchy",id:"31-standards-hierarchy",level:3},{value:"3.2 Entity Definitions",id:"32-entity-definitions",level:3},{value:"EncryptionSuite",id:"encryptionsuite",level:4},{value:"Certificate Distinguished Name (DN)",id:"certificate-distinguished-name-dn",level:4},{value:"CACertificate",id:"cacertificate",level:4},{value:"Secret",id:"secret",level:4},{value:"SecretType",id:"secrettype",level:4},{value:"Folder",id:"folder",level:4},{value:"Application",id:"application",level:4},{value:"SecretShare (User-to-User)",id:"secretshare-user-to-user",level:4},{value:"GroupShare",id:"groupshare",level:4},{value:"SecretDelegation",id:"secretdelegation",level:4},{value:"LinkShare",id:"linkshare",level:4},{value:"SecretRequest",id:"secretrequest",level:4},{value:"SuiteMigration",id:"suitemigration",level:4},{value:"3.3 Encryption Flow Summary",id:"33-encryption-flow-summary",level:3},{value:"3.4 Nextcloud Integration Strategy",id:"34-nextcloud-integration-strategy",level:3},{value:"REUSE from Nextcloud",id:"reuse-from-nextcloud",level:4},{value:"BUILD in Doriath (Security-specific)",id:"build-in-doriath-security-specific",level:4},{value:"Key OCP Interface Examples",id:"key-ocp-interface-examples",level:4},{value:"3.5 @conduction/nextcloud-vue Library",id:"35-conductionnextcloud-vue-library",level:3},{value:"3.6 Vue Router (Navigation)",id:"36-vue-router-navigation",level:3},{value:"3.7 OpenConnector Integration",id:"37-openconnector-integration",level:3},{value:"4. Database Configuration",id:"4-database-configuration",level:2},{value:"Doctrine Entities",id:"doctrine-entities",level:3},{value:"5. Open Research Questions",id:"5-open-research-questions",level:2},{value:"6. References",id:"6-references",level:2},{value:"Cryptographic Standards",id:"cryptographic-standards",level:3},{value:"Key Management & Password Policy",id:"key-management--password-policy",level:3},{value:"Nextcloud OCP Interfaces",id:"nextcloud-ocp-interfaces",level:3},{value:"Architectural Decisions",id:"architectural-decisions",level:3}];function o(e){const r={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,d.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(r.header,{children:(0,i.jsx)(r.h1,{id:"doriath--architecture--data-model",children:"Doriath \u2014 Architecture & Data Model"})}),"\n",(0,i.jsx)(r.h2,{id:"1-overview",children:"1. Overview"}),"\n",(0,i.jsx)(r.p,{children:"Doriath is an encrypted secrets manager for Nextcloud \u2014 a password manager and key store for users and applications. It stores secrets (passwords, API keys, tokens, certificates) encrypted at rest using RSA-4096 public-key cryptography, with private keys protected by AES-256 encryption derived from a user's master password. A private Certificate Authority (root + intermediate) signs all user and application certificates."}),"\n",(0,i.jsx)(r.h3,{id:"architecture-pattern",children:"Architecture Pattern"}),"\n",(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{children:"\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Doriath Frontend (Vue 2 + Pinia) \u2502\n\u2502 - Lock screen (master password entry) \u2502\n\u2502 - Vault: secrets list with folder tree \u2502\n\u2502 - Secret detail views (by type) \u2502\n\u2502 - Sharing UI (user, link, request) \u2502\n\u2502 - Key generator \u2502\n\u2502 - Dashboard (KPI cards, vault health) \u2502\n\u2502 - Admin settings (CA health, app management) \u2502\n\u2502 - User settings (session timeout, notifications) \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n \u2502 REST API calls (Nextcloud session + X-Vault-Password)\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u25bc\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Doriath PHP Backend \u2502\n\u2502 - Controllers: Secrets, EncryptionSuites, Applications, \u2502\n\u2502 Sharing, KeyGenerator, Settings \u2502\n\u2502 - Services: EncryptionService, CertificateAuthorityService,\u2502\n\u2502 SecretService, SharingService, MigrationService \u2502\n\u2502 - Entities: Doctrine ORM with Nextcloud migrations \u2502\n\u2502 - Encryption: OpenSSL (RSA-4096 + AES-256) \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n \u2502 Doctrine ORM\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u25bc\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 PostgreSQL Database \u2502\n\u2502 - Own tables (ISchemaWrapper migrations) \u2502\n\u2502 - Encrypted fields: private keys (AES), secret values (RSA)\u2502\n\u2502 - Unencrypted fields: names, URLs, metadata \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n"})}),"\n",(0,i.jsxs)(r.p,{children:["Doriath owns ",(0,i.jsx)(r.strong,{children:"all its database tables"})," \u2014 it does NOT use OpenRegister. This is an explicit exception to the org-wide ADR-001, justified by the security requirements of field-level encryption control and the need to eliminate intermediary services from the data path. See ",(0,i.jsx)(r.a,{href:"../openspec/architecture/adr-001-own-database-tables.md",children:"ADR-001"}),"."]}),"\n",(0,i.jsx)(r.h2,{id:"2-standards-research",children:"2. Standards Research"}),"\n",(0,i.jsx)(r.p,{children:"Before defining our encryption architecture and data model, we evaluated multiple standards across cryptography, key management, and password security."}),"\n",(0,i.jsx)(r.h3,{id:"21-standards-evaluated",children:"2.1 Standards Evaluated"}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Standard"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Coverage"}),(0,i.jsx)(r.th,{children:"Maturity"}),(0,i.jsx)(r.th,{children:"Relevance"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"X.509 / RFC 5280"})}),(0,i.jsx)(r.td,{children:"International (IETF)"}),(0,i.jsx)(r.td,{children:"Certificate format, CA chains, certificate revocation, extensions"}),(0,i.jsx)(r.td,{children:"Very mature (since 1988)"}),(0,i.jsxs)(r.td,{children:[(0,i.jsx)(r.strong,{children:"HIGH"})," \u2014 defines certificate structure for our private CA"]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"PKCS#1 / RFC 8017"})}),(0,i.jsx)(r.td,{children:"International (IETF)"}),(0,i.jsx)(r.td,{children:"RSA encryption and signature schemes, OAEP padding"}),(0,i.jsx)(r.td,{children:"Very mature"}),(0,i.jsxs)(r.td,{children:[(0,i.jsx)(r.strong,{children:"HIGH"})," \u2014 RSA encryption of secrets"]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"PKCS#8 / RFC 5958"})}),(0,i.jsx)(r.td,{children:"International (IETF)"}),(0,i.jsx)(r.td,{children:"Private key storage format, encrypted private key wrapping"}),(0,i.jsx)(r.td,{children:"Very mature"}),(0,i.jsxs)(r.td,{children:[(0,i.jsx)(r.strong,{children:"HIGH"})," \u2014 AES-encrypted private key storage"]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"PKCS#10 / RFC 2986"})}),(0,i.jsx)(r.td,{children:"International (IETF)"}),(0,i.jsx)(r.td,{children:"Certificate Signing Request (CSR) format"}),(0,i.jsx)(r.td,{children:"Very mature"}),(0,i.jsxs)(r.td,{children:[(0,i.jsx)(r.strong,{children:"HIGH"})," \u2014 application registration via CSR"]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"NIST SP 800-57"})}),(0,i.jsx)(r.td,{children:"US Government"}),(0,i.jsx)(r.td,{children:"Key management lifecycle, key sizes, algorithm selection"}),(0,i.jsx)(r.td,{children:"Current (Rev. 5, 2020)"}),(0,i.jsxs)(r.td,{children:[(0,i.jsx)(r.strong,{children:"HIGH"})," \u2014 RSA-4096 and AES-256 recommendations"]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"NIST SP 800-63B"})}),(0,i.jsx)(r.td,{children:"US Government"}),(0,i.jsx)(r.td,{children:"Authenticator assurance levels, memorized secret requirements"}),(0,i.jsx)(r.td,{children:"Current (Rev. 4 draft)"}),(0,i.jsxs)(r.td,{children:[(0,i.jsx)(r.strong,{children:"HIGH"})," \u2014 master password strength policy"]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"OWASP Password Storage"})}),(0,i.jsx)(r.td,{children:"Industry (OWASP)"}),(0,i.jsx)(r.td,{children:"Password hashing, KDF selection (Argon2id, bcrypt, PBKDF2)"}),(0,i.jsx)(r.td,{children:"Active, regularly updated"}),(0,i.jsxs)(r.td,{children:[(0,i.jsx)(r.strong,{children:"HIGH"})," \u2014 Argon2id for link share KDF"]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"OWASP Cryptographic Storage"})}),(0,i.jsx)(r.td,{children:"Industry (OWASP)"}),(0,i.jsx)(r.td,{children:"Encryption at rest, key management, algorithm selection"}),(0,i.jsx)(r.td,{children:"Active"}),(0,i.jsxs)(r.td,{children:[(0,i.jsx)(r.strong,{children:"HIGH"})," \u2014 encryption architecture validation"]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"zxcvbn"})}),(0,i.jsx)(r.td,{children:"Industry (Dropbox)"}),(0,i.jsx)(r.td,{children:"Password strength estimation, entropy-based scoring (0\u20134)"}),(0,i.jsx)(r.td,{children:"Mature, widely adopted"}),(0,i.jsxs)(r.td,{children:[(0,i.jsx)(r.strong,{children:"HIGH"})," \u2014 master password strength meter"]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Argon2 / RFC 9106"})}),(0,i.jsx)(r.td,{children:"International (IETF)"}),(0,i.jsx)(r.td,{children:"Memory-hard KDF: Argon2d, Argon2i, Argon2id"}),(0,i.jsx)(r.td,{children:"Standardized 2021"}),(0,i.jsxs)(r.td,{children:[(0,i.jsx)(r.strong,{children:"HIGH"})," \u2014 link share snapshot encryption"]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"WebAuthn / FIDO2"})}),(0,i.jsx)(r.td,{children:"International (W3C)"}),(0,i.jsx)(r.td,{children:"Passwordless authentication, hardware key support"}),(0,i.jsx)(r.td,{children:"Mature, growing adoption"}),(0,i.jsxs)(r.td,{children:[(0,i.jsx)(r.strong,{children:"LOW"})," \u2014 future: passwordless vault unlock"]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Schema.org"})}),(0,i.jsx)(r.td,{children:"International (W3C)"}),(0,i.jsx)(r.td,{children:"Structured data vocabulary"}),(0,i.jsx)(r.td,{children:"Very mature"}),(0,i.jsxs)(r.td,{children:[(0,i.jsx)(r.strong,{children:"LOW"})," \u2014 no standard types for secrets/credentials"]})]})]})]}),"\n",(0,i.jsx)(r.h3,{id:"22-design-principle-security-first-standards-based",children:"2.2 Design Principle: Security First, Standards-Based"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"All cryptographic operations use established standards via OpenSSL. No custom cryptography. The master password never touches the database."})}),"\n"]}),"\n",(0,i.jsx)(r.p,{children:"This means:"}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsxs)(r.li,{children:["RSA encryption follows ",(0,i.jsx)(r.strong,{children:"PKCS#1 v1.5 / OAEP"})," padding via OpenSSL"]}),"\n",(0,i.jsxs)(r.li,{children:["Private keys are stored in ",(0,i.jsx)(r.strong,{children:"PKCS#8 PEM"})," format, AES-256 encrypted"]}),"\n",(0,i.jsxs)(r.li,{children:["Certificates follow ",(0,i.jsx)(r.strong,{children:"X.509 v3"})," format, signed by the private CA intermediate"]}),"\n",(0,i.jsxs)(r.li,{children:["CSR processing follows ",(0,i.jsx)(r.strong,{children:"PKCS#10"})," for application registration"]}),"\n",(0,i.jsxs)(r.li,{children:["Key derivation for link shares uses ",(0,i.jsx)(r.strong,{children:"Argon2id"})," (memory-hard, RFC 9106)"]}),"\n",(0,i.jsxs)(r.li,{children:["Master password strength is validated using ",(0,i.jsx)(r.strong,{children:"zxcvbn"})," entropy scoring aligned with NIST SP 800-63B"]}),"\n"]}),"\n",(0,i.jsx)(r.h3,{id:"23-key-findings",children:"2.3 Key Findings"}),"\n",(0,i.jsxs)(r.ol,{children:["\n",(0,i.jsxs)(r.li,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"X.509 / RFC 5280"})," defines the certificate format Doriath uses for its private CA. The root certificate (20-year lifetime) signs an intermediate certificate (3-year lifetime), which in turn signs user and application certificates. This two-tier CA structure follows PKI best practice \u2014 the root key is used rarely, limiting exposure."]}),"\n"]}),"\n",(0,i.jsxs)(r.li,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"NIST SP 800-57"})," recommends RSA-4096 for protection beyond 2031 (>128-bit security strength). AES-256 provides 256-bit security strength. Both exceed NIST's minimum recommendations for sensitive data protection. Key sizes in Doriath are only allowed to increase, never decrease."]}),"\n"]}),"\n",(0,i.jsxs)(r.li,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"NIST SP 800-63B"})," defines memorized secret (password) requirements: minimum 8 characters (we require 12), no composition rules (we use entropy-based scoring instead), and blocklist checking. Our zxcvbn-based approach aligns with NIST's shift from complexity rules to entropy measurement."]}),"\n"]}),"\n",(0,i.jsxs)(r.li,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"OWASP Password Storage Cheat Sheet"})," recommends Argon2id as the first choice for password hashing / key derivation. We use Argon2id for link share snapshot encryption (deriving an AES key from the link password). For master password \u2192 AES key derivation, we use a similar KDF approach."]}),"\n"]}),"\n",(0,i.jsxs)(r.li,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"PKCS#10 (CSR)"})," enables applications to register with Doriath by submitting a Certificate Signing Request containing their public key. Doriath signs the public key with the CA intermediate and never stores the application's private key \u2014 the application manages its own key externally. This is standard PKI practice for distributed systems."]}),"\n"]}),"\n",(0,i.jsxs)(r.li,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"RSA chunking constraint"})," (PKCS#1): RSA-4096 can encrypt at most ~500 bytes per operation (key size in bytes \u2212 padding overhead). Secrets larger than this limit must be chunked. This is a known limitation documented in ",(0,i.jsx)(r.a,{href:"../openspec/architecture/adr-003-rsa-aes-encryption-architecture.md",children:"ADR-003"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(r.li,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"zxcvbn"})," scores passwords on a 0\u20134 scale: 0 = too guessable, 1 = very guessable, 2 = somewhat guessable, 3 = safely unguessable (resists online attacks, ~10^8 guesses), 4 = very unguessable (resists offline attacks, ~10^10 guesses). Doriath requires score \u2265 3 by default, configurable up to 4 by admins."]}),"\n"]}),"\n",(0,i.jsxs)(r.li,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"No applicable Schema.org types"})," \u2014 Schema.org has no standard vocabulary for secrets, credentials, or vault entries. Doriath entities do not carry schema.org type annotations, unlike other Conduction apps that model semantic data."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(r.h2,{id:"3-data-model-decisions",children:"3. Data Model Decisions"}),"\n",(0,i.jsx)(r.h3,{id:"31-standards-hierarchy",children:"3.1 Standards Hierarchy"}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Layer"}),(0,i.jsx)(r.th,{children:"Standard"}),(0,i.jsx)(r.th,{children:"Purpose"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Cryptography"})}),(0,i.jsx)(r.td,{children:"RSA (PKCS#1), AES-256, OpenSSL"}),(0,i.jsx)(r.td,{children:"Encryption of secrets and private keys"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Certificate format"})}),(0,i.jsx)(r.td,{children:"X.509 v3 (RFC 5280), PKCS#8, PKCS#10"}),(0,i.jsx)(r.td,{children:"CA certificates, key storage, CSR processing"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Key derivation"})}),(0,i.jsx)(r.td,{children:"Argon2id (RFC 9106)"}),(0,i.jsx)(r.td,{children:"Link share password \u2192 AES key derivation"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Password policy"})}),(0,i.jsx)(r.td,{children:"NIST SP 800-63B + zxcvbn"}),(0,i.jsx)(r.td,{children:"Master password strength enforcement"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Key management"})}),(0,i.jsx)(r.td,{children:"NIST SP 800-57"}),(0,i.jsx)(r.td,{children:"Key size selection, lifecycle management"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Nextcloud native"})}),(0,i.jsx)(r.td,{children:"OCP interfaces"}),(0,i.jsx)(r.td,{children:"Users, sessions, notifications, search, files"})]})]})]}),"\n",(0,i.jsx)(r.h3,{id:"32-entity-definitions",children:"3.2 Entity Definitions"}),"\n",(0,i.jsx)(r.h4,{id:"encryptionsuite",children:"EncryptionSuite"}),"\n",(0,i.jsxs)(r.p,{children:["The cryptographic identity of a user or application. Holds a public certificate (for encrypting secrets) and an AES-encrypted private key (for decrypting them). See ",(0,i.jsx)(r.a,{href:"../openspec/specs/encryption-suites/spec.md",children:"encryption-suites spec"})," for full requirements."]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Aspect"}),(0,i.jsx)(r.th,{children:"Decision"}),(0,i.jsx)(r.th,{children:"Rationale"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Standard"})}),(0,i.jsx)(r.td,{children:"X.509 v3 certificate + PKCS#8 private key"}),(0,i.jsx)(r.td,{children:"Industry-standard PKI formats"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Ownership"})}),(0,i.jsxs)(r.td,{children:["Polymorphic: ",(0,i.jsx)(r.code,{children:"owner_type"})," (user | application) + ",(0,i.jsx)(r.code,{children:"owner_id"})]}),(0,i.jsxs)(r.td,{children:["Single table, single query path \u2014 see ",(0,i.jsx)(r.a,{href:"../openspec/architecture/adr-002-polymorphic-encryption-suite-ownership.md",children:"ADR-002"})]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Key size"})}),(0,i.jsx)(r.td,{children:"RSA-4096 minimum (only allowed to increase)"}),(0,i.jsx)(r.td,{children:"NIST SP 800-57 recommendation for long-term protection"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Private key protection"})}),(0,i.jsx)(r.td,{children:"AES-256 encrypted with master password derived key"}),(0,i.jsxs)(r.td,{children:["Master password never stored \u2014 see ",(0,i.jsx)(r.a,{href:"../openspec/architecture/adr-003-rsa-aes-encryption-architecture.md",children:"ADR-003"})]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Certificate DN"})}),(0,i.jsx)(r.td,{children:"Default DN fields + owner-specific CN"}),(0,i.jsx)(r.td,{children:"See certificate DN section below"})]})]})]}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Core properties:"})}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Property"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Encrypted"}),(0,i.jsx)(r.th,{children:"Standard"}),(0,i.jsx)(r.th,{children:"Notes"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"id"})}),(0,i.jsx)(r.td,{children:"UUID"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"\u2014"}),(0,i.jsx)(r.td,{children:"Primary key"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"owner_type"})}),(0,i.jsx)(r.td,{children:"enum: user, application"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"ADR-002"}),(0,i.jsx)(r.td,{children:"Polymorphic ownership"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"owner_id"})}),(0,i.jsx)(r.td,{children:"string"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"\u2014"}),(0,i.jsx)(r.td,{children:"Nextcloud user ID or Application ID"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"certificate"})}),(0,i.jsx)(r.td,{children:"text (PEM)"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"X.509 v3"}),(0,i.jsx)(r.td,{children:"Public certificate signed by CA intermediate"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"private_key"})}),(0,i.jsx)(r.td,{children:"text (PEM)"}),(0,i.jsx)(r.td,{children:"Yes (AES-256)"}),(0,i.jsx)(r.td,{children:"PKCS#8"}),(0,i.jsx)(r.td,{children:"Encrypted with master password derived key"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"status"})}),(0,i.jsx)(r.td,{children:"enum: active, revoked, compromised"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"X.509 CRL concept"}),(0,i.jsx)(r.td,{children:"Lifecycle state"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"revoked_at"})}),(0,i.jsx)(r.td,{children:"datetime"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"\u2014"}),(0,i.jsx)(r.td,{children:"Audit: when revoked"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"revoked_reason"})}),(0,i.jsx)(r.td,{children:"string"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"X.509 CRL reason"}),(0,i.jsx)(r.td,{children:"Audit: why revoked"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"revoked_by"})}),(0,i.jsx)(r.td,{children:"string"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"\u2014"}),(0,i.jsx)(r.td,{children:"Audit: who revoked"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"reinstated_at"})}),(0,i.jsx)(r.td,{children:"datetime"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"\u2014"}),(0,i.jsx)(r.td,{children:"Audit: when reinstated"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"reinstated_by"})}),(0,i.jsx)(r.td,{children:"string"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"\u2014"}),(0,i.jsx)(r.td,{children:"Audit: who reinstated"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"created_at"})}),(0,i.jsx)(r.td,{children:"datetime"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"\u2014"}),(0,i.jsx)(r.td,{children:"\u2014"})]})]})]}),"\n",(0,i.jsx)(r.h4,{id:"certificate-distinguished-name-dn",children:"Certificate Distinguished Name (DN)"}),"\n",(0,i.jsxs)(r.p,{children:["All certificates issued by the Doriath CA share a common set of DN fields, with the ",(0,i.jsx)(r.code,{children:"commonName"})," varying by certificate type:"]}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Default DN fields"})," (defined as ",(0,i.jsx)(r.code,{children:"DEFAULT_DN"})," in ",(0,i.jsx)(r.code,{children:"CertificateAuthorityService"}),"):"]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Field"}),(0,i.jsx)(r.th,{children:"Value"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"countryName"})}),(0,i.jsx)(r.td,{children:"NL"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"stateOrProvinceName"})}),(0,i.jsx)(r.td,{children:"Noord-Holland"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"localityName"})}),(0,i.jsx)(r.td,{children:"Amsterdam"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"organizationName"})}),(0,i.jsx)(r.td,{children:"Conduction"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"organizationalUnitName"})}),(0,i.jsx)(r.td,{children:"Doriath"})]})]})]}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Common Name by certificate type:"})}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Certificate"}),(0,i.jsx)(r.th,{children:"Common Name"}),(0,i.jsx)(r.th,{children:"Example"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"Root CA"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"Doriath Root CA"})}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"Doriath Root CA"})})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"Intermediate CA"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"Doriath Intermediate CA"})}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"Doriath Intermediate CA"})})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"User certificate"}),(0,i.jsx)(r.td,{children:"Federated cloud ID (user@instance), falls back to user ID"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"admin@nextcloud.local"})})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"Application certificate"}),(0,i.jsx)(r.td,{children:"Application ID"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"a1b2c3d4-..."})})]})]})]}),"\n",(0,i.jsxs)(r.p,{children:["The cloud ID is resolved via ",(0,i.jsx)(r.code,{children:"IUserManager::get($ownerId)->getCloudId()"})," in ",(0,i.jsx)(r.code,{children:"EncryptionSuiteService::resolveCommonName()"}),". This ensures user certificates contain the full federated identity. When a certificate is re-signed during CA renewal, the original CN is preserved by extracting it from the existing certificate via ",(0,i.jsx)(r.code,{children:"openssl_x509_parse()"}),"."]}),"\n",(0,i.jsx)(r.h4,{id:"cacertificate",children:"CACertificate"}),"\n",(0,i.jsx)(r.p,{children:"The private Certificate Authority that signs all user and application certificates."}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Aspect"}),(0,i.jsx)(r.th,{children:"Decision"}),(0,i.jsx)(r.th,{children:"Rationale"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Structure"})}),(0,i.jsx)(r.td,{children:"Two-tier: root (20yr) \u2192 intermediate (3yr)"}),(0,i.jsx)(r.td,{children:"PKI best practice \u2014 root key used rarely"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Standard"})}),(0,i.jsx)(r.td,{children:"X.509 v3 certificates"}),(0,i.jsx)(r.td,{children:"Industry standard"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Renewal"})}),(0,i.jsx)(r.td,{children:"Intermediate auto-renews; root requires manual admin action"}),(0,i.jsx)(r.td,{children:"Minimize disruption; root rotation is rare"})]})]})]}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Core properties:"})}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Property"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Encrypted"}),(0,i.jsx)(r.th,{children:"Standard"}),(0,i.jsx)(r.th,{children:"Notes"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"id"})}),(0,i.jsx)(r.td,{children:"UUID"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"\u2014"}),(0,i.jsx)(r.td,{children:"Primary key"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"type"})}),(0,i.jsx)(r.td,{children:"enum: root, intermediate"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"PKI convention"}),(0,i.jsx)(r.td,{children:"Certificate tier"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"certificate"})}),(0,i.jsx)(r.td,{children:"text (PEM)"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"X.509 v3"}),(0,i.jsx)(r.td,{children:"Public certificate"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"private_key"})}),(0,i.jsx)(r.td,{children:"text (PEM)"}),(0,i.jsx)(r.td,{children:"Yes (AES-256)"}),(0,i.jsx)(r.td,{children:"PKCS#8"}),(0,i.jsx)(r.td,{children:"Only present for intermediate"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"is_active"})}),(0,i.jsx)(r.td,{children:"bool"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"\u2014"}),(0,i.jsx)(r.td,{children:"Only one intermediate active for signing"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"expires_at"})}),(0,i.jsx)(r.td,{children:"datetime"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"X.509 validity"}),(0,i.jsx)(r.td,{children:"For efficient expiry queries"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"revoked_at"})}),(0,i.jsx)(r.td,{children:"datetime"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"X.509 CRL"}),(0,i.jsx)(r.td,{children:"Set on forced revocation"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"successor_id"})}),(0,i.jsx)(r.td,{children:"FK"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"\u2014"}),(0,i.jsx)(r.td,{children:"Points to replacement certificate"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"created_at"})}),(0,i.jsx)(r.td,{children:"datetime"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"\u2014"}),(0,i.jsx)(r.td,{children:"\u2014"})]})]})]}),"\n",(0,i.jsx)(r.h4,{id:"secret",children:"Secret"}),"\n",(0,i.jsx)(r.p,{children:"The core data entity \u2014 holds sensitive information encrypted with the owner's public certificate."}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Aspect"}),(0,i.jsx)(r.th,{children:"Decision"}),(0,i.jsx)(r.th,{children:"Rationale"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Encryption"})}),(0,i.jsx)(r.td,{children:"RSA-4096 (PKCS#1) per owner's public certificate"}),(0,i.jsx)(r.td,{children:"Asymmetric: enables write-without-read"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Searchable fields"})}),(0,i.jsxs)(r.td,{children:[(0,i.jsx)(r.code,{children:"name"})," and ",(0,i.jsx)(r.code,{children:"url"})," stored unencrypted"]}),(0,i.jsx)(r.td,{children:"Enables search and Nextcloud unified search without master password"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Folder organization"})}),(0,i.jsxs)(r.td,{children:["Tree via ",(0,i.jsx)(r.code,{children:"parent_id"})," on Folder entity"]}),(0,i.jsx)(r.td,{children:"User-managed hierarchy, no stored path strings"})]})]})]}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Core properties:"})}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Property"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Encrypted"}),(0,i.jsx)(r.th,{children:"Standard"}),(0,i.jsx)(r.th,{children:"Notes"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"id"})}),(0,i.jsx)(r.td,{children:"UUID"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"\u2014"}),(0,i.jsx)(r.td,{children:"Primary key"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"name"})}),(0,i.jsx)(r.td,{children:"string"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"\u2014"}),(0,i.jsx)(r.td,{children:"Human-readable label \u2014 safe for lists/search"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"url"})}),(0,i.jsx)(r.td,{children:"string"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"\u2014"}),(0,i.jsx)(r.td,{children:"Target URL \u2014 enables search without decryption"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"type_id"})}),(0,i.jsx)(r.td,{children:"FK"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"\u2014"}),(0,i.jsxs)(r.td,{children:["SecretType reference; defaults to ",(0,i.jsx)(r.code,{children:"login"})]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"folder_id"})}),(0,i.jsx)(r.td,{children:"FK"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"\u2014"}),(0,i.jsx)(r.td,{children:"Folder reference; null = root level"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"key"})}),(0,i.jsx)(r.td,{children:"text"}),(0,i.jsx)(r.td,{children:"Yes (RSA)"}),(0,i.jsx)(r.td,{children:"PKCS#1"}),(0,i.jsx)(r.td,{children:"The actual secret value"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"login"})}),(0,i.jsx)(r.td,{children:"string"}),(0,i.jsx)(r.td,{children:"Yes (RSA)"}),(0,i.jsx)(r.td,{children:"\u2014"}),(0,i.jsx)(r.td,{children:"Username, client ID, or equivalent"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"additional_fields"})}),(0,i.jsx)(r.td,{children:"text"}),(0,i.jsx)(r.td,{children:"Yes (RSA)"}),(0,i.jsx)(r.td,{children:"\u2014"}),(0,i.jsx)(r.td,{children:"JSON blob of extra key-value pairs"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"encryption_suite_id"})}),(0,i.jsx)(r.td,{children:"FK"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"\u2014"}),(0,i.jsx)(r.td,{children:"Which suite encrypted this secret"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"owner_type"})}),(0,i.jsx)(r.td,{children:"enum: user, application"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"ADR-002"}),(0,i.jsx)(r.td,{children:"Polymorphic ownership"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"owner_id"})}),(0,i.jsx)(r.td,{children:"string"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"\u2014"}),(0,i.jsx)(r.td,{children:"Nextcloud user ID or Application ID"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"possibly_compromised_at"})}),(0,i.jsx)(r.td,{children:"datetime"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"\u2014"}),(0,i.jsx)(r.td,{children:"Set during compromise recovery"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"migration_error"})}),(0,i.jsx)(r.td,{children:"text"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"\u2014"}),(0,i.jsx)(r.td,{children:"Set on re-encryption failure"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"created_at"})}),(0,i.jsx)(r.td,{children:"datetime"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"\u2014"}),(0,i.jsx)(r.td,{children:"\u2014"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"updated_at"})}),(0,i.jsx)(r.td,{children:"datetime"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"\u2014"}),(0,i.jsx)(r.td,{children:"\u2014"})]})]})]}),"\n",(0,i.jsx)(r.h4,{id:"secrettype",children:"SecretType"}),"\n",(0,i.jsx)(r.p,{children:"Defines the type of a secret \u2014 a UI hint that drives how the interface labels and presents fields."}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Property"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Notes"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"id"})}),(0,i.jsx)(r.td,{children:"UUID"}),(0,i.jsx)(r.td,{children:"Primary key"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"name"})}),(0,i.jsx)(r.td,{children:"string"}),(0,i.jsxs)(r.td,{children:["Slug identifier (e.g., ",(0,i.jsx)(r.code,{children:"api_key"}),") \u2014 unique"]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"label"})}),(0,i.jsx)(r.td,{children:"string"}),(0,i.jsx)(r.td,{children:'Human-readable (e.g., "API Key")'})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"scope"})}),(0,i.jsx)(r.td,{children:"enum: system, user, global"}),(0,i.jsxs)(r.td,{children:[(0,i.jsx)(r.code,{children:"system"})," = built-in; ",(0,i.jsx)(r.code,{children:"user"})," = per-user; ",(0,i.jsx)(r.code,{children:"global"})," = admin-created"]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"owner_id"})}),(0,i.jsx)(r.td,{children:"string"}),(0,i.jsxs)(r.td,{children:["Nextcloud user ID for ",(0,i.jsx)(r.code,{children:"user"})," scope; null for system/global"]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"created_at"})}),(0,i.jsx)(r.td,{children:"datetime"}),(0,i.jsx)(r.td,{children:"\u2014"})]})]})]}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"System types"})," (seeded on install, immutable): ",(0,i.jsx)(r.code,{children:"login"}),", ",(0,i.jsx)(r.code,{children:"api_key"}),", ",(0,i.jsx)(r.code,{children:"ssh_key"}),", ",(0,i.jsx)(r.code,{children:"certificate"}),", ",(0,i.jsx)(r.code,{children:"note"}),", ",(0,i.jsx)(r.code,{children:"database"})]}),"\n",(0,i.jsx)(r.h4,{id:"folder",children:"Folder"}),"\n",(0,i.jsx)(r.p,{children:"Organizes secrets into a per-user tree hierarchy."}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Property"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Notes"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"id"})}),(0,i.jsx)(r.td,{children:"UUID"}),(0,i.jsx)(r.td,{children:"Primary key"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"name"})}),(0,i.jsx)(r.td,{children:"string"}),(0,i.jsx)(r.td,{children:"Single path segment, no slashes"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"parent_id"})}),(0,i.jsx)(r.td,{children:"FK (Folder)"}),(0,i.jsx)(r.td,{children:"Null = root level"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"owner_type"})}),(0,i.jsx)(r.td,{children:"enum: user, application"}),(0,i.jsx)(r.td,{children:"Polymorphic ownership"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"owner_id"})}),(0,i.jsx)(r.td,{children:"string"}),(0,i.jsx)(r.td,{children:"Nextcloud user ID or Application ID"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"created_at"})}),(0,i.jsx)(r.td,{children:"datetime"}),(0,i.jsx)(r.td,{children:"\u2014"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"updated_at"})}),(0,i.jsx)(r.td,{children:"datetime"}),(0,i.jsx)(r.td,{children:"\u2014"})]})]})]}),"\n",(0,i.jsx)(r.h4,{id:"application",children:"Application"}),"\n",(0,i.jsx)(r.p,{children:"An external or internal application registered to use Doriath as a secret store."}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Property"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Notes"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"id"})}),(0,i.jsx)(r.td,{children:"UUID"}),(0,i.jsx)(r.td,{children:"Primary key"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"name"})}),(0,i.jsx)(r.td,{children:"string"}),(0,i.jsx)(r.td,{children:"Human-readable name"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"type"})}),(0,i.jsx)(r.td,{children:"enum: internal, external"}),(0,i.jsx)(r.td,{children:"Informational; no functional difference currently"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"status"})}),(0,i.jsx)(r.td,{children:"enum: pending, active"}),(0,i.jsxs)(r.td,{children:["Non-admin registrations start as ",(0,i.jsx)(r.code,{children:"pending"})]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"registered_by"})}),(0,i.jsx)(r.td,{children:"string"}),(0,i.jsx)(r.td,{children:"Nextcloud user ID or null (anonymous)"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"approved_by"})}),(0,i.jsx)(r.td,{children:"string"}),(0,i.jsx)(r.td,{children:"Admin user ID; null if pending"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"created_at"})}),(0,i.jsx)(r.td,{children:"datetime"}),(0,i.jsx)(r.td,{children:"\u2014"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"approved_at"})}),(0,i.jsx)(r.td,{children:"datetime"}),(0,i.jsx)(r.td,{children:"\u2014"})]})]})]}),"\n",(0,i.jsx)(r.h4,{id:"secretshare-user-to-user",children:"SecretShare (User-to-User)"}),"\n",(0,i.jsx)(r.p,{children:"Links an original secret to an encrypted copy in a recipient's vault."}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Property"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Notes"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"id"})}),(0,i.jsx)(r.td,{children:"UUID"}),(0,i.jsx)(r.td,{children:"Primary key"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"source_secret_id"})}),(0,i.jsx)(r.td,{children:"FK (Secret)"}),(0,i.jsx)(r.td,{children:"The original secret"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"target_user_id"})}),(0,i.jsx)(r.td,{children:"string"}),(0,i.jsx)(r.td,{children:"Recipient's Nextcloud user ID"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"secret_id"})}),(0,i.jsx)(r.td,{children:"FK (Secret)"}),(0,i.jsx)(r.td,{children:"The encrypted copy in recipient's vault"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"group_share_id"})}),(0,i.jsx)(r.td,{children:"FK (GroupShare)"}),(0,i.jsx)(r.td,{children:"Nullable \u2014 set if created from a group share"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"created_at"})}),(0,i.jsx)(r.td,{children:"datetime"}),(0,i.jsx)(r.td,{children:"\u2014"})]})]})]}),"\n",(0,i.jsx)(r.h4,{id:"groupshare",children:"GroupShare"}),"\n",(0,i.jsx)(r.p,{children:"Tracks that a secret has been shared with a Nextcloud user group."}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Property"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Notes"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"id"})}),(0,i.jsx)(r.td,{children:"UUID"}),(0,i.jsx)(r.td,{children:"Primary key"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"secret_id"})}),(0,i.jsx)(r.td,{children:"FK (Secret)"}),(0,i.jsx)(r.td,{children:"The secret shared with the group"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"group_id"})}),(0,i.jsx)(r.td,{children:"string"}),(0,i.jsx)(r.td,{children:"Nextcloud group ID"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"created_by"})}),(0,i.jsx)(r.td,{children:"string"}),(0,i.jsx)(r.td,{children:"Owner who created the share"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"created_at"})}),(0,i.jsx)(r.td,{children:"datetime"}),(0,i.jsx)(r.td,{children:"\u2014"})]})]})]}),"\n",(0,i.jsx)(r.h4,{id:"secretdelegation",children:"SecretDelegation"}),"\n",(0,i.jsx)(r.p,{children:"Tracks ownership delegation of a secret."}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Property"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Notes"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"id"})}),(0,i.jsx)(r.td,{children:"UUID"}),(0,i.jsx)(r.td,{children:"Primary key"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"secret_id"})}),(0,i.jsx)(r.td,{children:"FK (Secret)"}),(0,i.jsx)(r.td,{children:"The delegated secret"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"original_owner_id"})}),(0,i.jsx)(r.td,{children:"string"}),(0,i.jsx)(r.td,{children:"Original owner's user ID"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"delegated_to"})}),(0,i.jsx)(r.td,{children:"string"}),(0,i.jsx)(r.td,{children:"Delegate's user ID"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"delegated_at"})}),(0,i.jsx)(r.td,{children:"datetime"}),(0,i.jsx)(r.td,{children:"\u2014"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"initiated_by"})}),(0,i.jsx)(r.td,{children:"string"}),(0,i.jsx)(r.td,{children:"Who created the delegation"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"is_permanent"})}),(0,i.jsx)(r.td,{children:"bool"}),(0,i.jsx)(r.td,{children:"False = temporary; true = permanent (owner's suite revoked)"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"made_permanent_at"})}),(0,i.jsx)(r.td,{children:"datetime"}),(0,i.jsx)(r.td,{children:"Null while temporary"})]})]})]}),"\n",(0,i.jsx)(r.h4,{id:"linkshare",children:"LinkShare"}),"\n",(0,i.jsx)(r.p,{children:"A password-protected link for sharing a secret snapshot with external parties."}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Property"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Encrypted"}),(0,i.jsx)(r.th,{children:"Notes"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"id"})}),(0,i.jsx)(r.td,{children:"UUID"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"Primary key"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"secret_id"})}),(0,i.jsx)(r.td,{children:"FK"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"The secret being shared"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"token"})}),(0,i.jsx)(r.td,{children:"string"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"URL-safe random token (\u2265128 bits entropy)"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"encrypted_secret_snapshot"})}),(0,i.jsx)(r.td,{children:"text"}),(0,i.jsx)(r.td,{children:"Yes (AES-256 via Argon2id KDF)"}),(0,i.jsx)(r.td,{children:"Point-in-time snapshot"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"encryption_suite_id"})}),(0,i.jsx)(r.td,{children:"FK"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"Suite used to encrypt the snapshot"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"usage_limit"})}),(0,i.jsx)(r.td,{children:"int"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"Max accesses; null = unlimited"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"usage_count"})}),(0,i.jsx)(r.td,{children:"int"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"Current access count"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"created_at"})}),(0,i.jsx)(r.td,{children:"datetime"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"\u2014"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"expires_at"})}),(0,i.jsx)(r.td,{children:"datetime"}),(0,i.jsx)(r.td,{children:"No"}),(0,i.jsx)(r.td,{children:"Optional expiry"})]})]})]}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Security:"})," Link password is never stored. Snapshot is encrypted with AES-256 using a key derived from the link password via Argon2id (RFC 9106). After 5 consecutive failed attempts, the link share is permanently deleted."]}),"\n",(0,i.jsx)(r.h4,{id:"secretrequest",children:"SecretRequest"}),"\n",(0,i.jsx)(r.p,{children:"A fill-in link for write-without-read secret submission."}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Property"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Notes"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"id"})}),(0,i.jsx)(r.td,{children:"UUID"}),(0,i.jsx)(r.td,{children:"Primary key"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"secret_id"})}),(0,i.jsx)(r.td,{children:"FK (Secret)"}),(0,i.jsx)(r.td,{children:"The unfilled Secret this request writes to"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"encryption_suite_id"})}),(0,i.jsx)(r.td,{children:"FK"}),(0,i.jsx)(r.td,{children:"Public certificate used to encrypt submitted values"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"token"})}),(0,i.jsx)(r.td,{children:"string"}),(0,i.jsx)(r.td,{children:"URL-safe random token (\u2265128 bits entropy)"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"requested_fields"})}),(0,i.jsx)(r.td,{children:"JSON"}),(0,i.jsx)(r.td,{children:"Array of field names being requested"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"status"})}),(0,i.jsx)(r.td,{children:"enum: pending, locked, fulfilled"}),(0,i.jsxs)(r.td,{children:[(0,i.jsx)(r.code,{children:"locked"})," during compromise recovery"]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"expires_at"})}),(0,i.jsx)(r.td,{children:"datetime"}),(0,i.jsx)(r.td,{children:"Optional expiry"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"created_at"})}),(0,i.jsx)(r.td,{children:"datetime"}),(0,i.jsx)(r.td,{children:"\u2014"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"fulfilled_at"})}),(0,i.jsx)(r.td,{children:"datetime"}),(0,i.jsx)(r.td,{children:"\u2014"})]})]})]}),"\n",(0,i.jsx)(r.h4,{id:"suitemigration",children:"SuiteMigration"}),"\n",(0,i.jsx)(r.p,{children:"Tracks compromise recovery migrations."}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Property"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Notes"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"id"})}),(0,i.jsx)(r.td,{children:"UUID"}),(0,i.jsx)(r.td,{children:"Primary key"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"old_suite_id"})}),(0,i.jsx)(r.td,{children:"FK (EncryptionSuite)"}),(0,i.jsx)(r.td,{children:"Compromised suite"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"new_suite_id"})}),(0,i.jsx)(r.td,{children:"FK (EncryptionSuite)"}),(0,i.jsx)(r.td,{children:"Replacement suite"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"status"})}),(0,i.jsx)(r.td,{children:"enum: in_progress, completed, completed_with_errors"}),(0,i.jsx)(r.td,{children:"Migration state"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"started_at"})}),(0,i.jsx)(r.td,{children:"datetime"}),(0,i.jsx)(r.td,{children:"\u2014"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"completed_at"})}),(0,i.jsx)(r.td,{children:"datetime"}),(0,i.jsx)(r.td,{children:"Null while in progress"})]})]})]}),"\n",(0,i.jsx)(r.h3,{id:"33-encryption-flow-summary",children:"3.3 Encryption Flow Summary"}),"\n",(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{children:" Master Password (user input, never stored)\n \u2502\n \u25bc\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 KDF (derive) \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n \u2502\n \u25bc\n AES-Derived Key (stored in session only)\n \u2502\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u25bc \u25bc\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 Decrypt \u2502 \u2502 Encrypt \u2502\n \u2502 Private Key \u2502 \u2502 Private Key \u2502\n \u2502 (AES-256) \u2502 \u2502 (AES-256) \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n \u2502\n \u25bc\n Private Key (in memory only)\n \u2502\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u25bc \u25bc\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Decrypt \u2502 \u2502 Encrypt \u2502\n\u2502 Secrets \u2502 \u2502 Secrets \u2502\n\u2502 (RSA-4096) \u2502 \u2502 (RSA-4096) \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n"})}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Write-without-read property:"})," Because encryption uses the owner's ",(0,i.jsx)(r.strong,{children:"public"})," certificate (available to anyone), any party can write a secret into another user's or application's vault. Only the private key holder can decrypt \u2014 and the private key requires the master password. This is a direct consequence of asymmetric cryptography and is fundamental to secret requests and application secret management."]}),"\n",(0,i.jsx)(r.h3,{id:"34-nextcloud-integration-strategy",children:"3.4 Nextcloud Integration Strategy"}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Principle: Doriath handles all encryption and secret storage itself. Nextcloud provides identity, session, notification, and search infrastructure."})}),"\n",(0,i.jsx)(r.h4,{id:"reuse-from-nextcloud",children:"REUSE from Nextcloud"}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Feature"}),(0,i.jsx)(r.th,{children:"OCP Interface"}),(0,i.jsx)(r.th,{children:"What to Reuse"}),(0,i.jsx)(r.th,{children:"How"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Users"})}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"OCP\\IUserManager"})}),(0,i.jsx)(r.td,{children:"Authentication identity, vault ownership"}),(0,i.jsx)(r.td,{children:"Reference by Nextcloud user UID"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Groups"})}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"OCP\\IGroupManager"})}),(0,i.jsx)(r.td,{children:"Group sharing, vault_admin role"}),(0,i.jsx)(r.td,{children:"Query group membership for group shares"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Session"})}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"OCP\\ISession"})}),(0,i.jsx)(r.td,{children:"Store AES-derived key during vault session"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"ISession::set('doriath_aes_key', $derivedKey)"})})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Notifications"})}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"OCP\\Notification\\IManager"})}),(0,i.jsx)(r.td,{children:"Share received, request fulfilled, CA expiry, app approval"}),(0,i.jsxs)(r.td,{children:["Implement ",(0,i.jsx)(r.code,{children:"INotifier"})," for rendering"]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Search"})}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"OCP\\Search\\IProvider"})}),(0,i.jsx)(r.td,{children:"Unified search (Ctrl+F) for secrets by name/URL"}),(0,i.jsx)(r.td,{children:"Query name + url without AES key; deep-link to secret"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Settings"})}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"OCP\\Settings\\ISettings"})}),(0,i.jsx)(r.td,{children:"Admin settings panel (CA health, password policy)"}),(0,i.jsx)(r.td,{children:"Register admin section"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"App Config"})}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"OCP\\IAppConfig"})}),(0,i.jsx)(r.td,{children:"App-wide settings (min password length, session timeout)"}),(0,i.jsx)(r.td,{children:"Store admin-configurable values"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"User Config"})}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"OCP\\IConfig"})}),(0,i.jsx)(r.td,{children:"Per-user settings (session timeout preference, notification toggles)"}),(0,i.jsx)(r.td,{children:"Store user preferences"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"User Deletion"})}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"OCP\\User\\Events\\UserDeletedEvent"})}),(0,i.jsx)(r.td,{children:"Clean up EncryptionSuite, secrets, shares on user delete"}),(0,i.jsx)(r.td,{children:"Event listener"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Group Membership"})}),(0,i.jsxs)(r.td,{children:[(0,i.jsx)(r.code,{children:"OCP\\Group\\Events\\UserAddedEvent"})," / ",(0,i.jsx)(r.code,{children:"UserRemovedEvent"})]}),(0,i.jsx)(r.td,{children:"Trigger group share add/revoke"}),(0,i.jsx)(r.td,{children:"Event listeners"})]})]})]}),"\n",(0,i.jsx)(r.h4,{id:"build-in-doriath-security-specific",children:"BUILD in Doriath (Security-specific)"}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"What"}),(0,i.jsx)(r.th,{children:"Why Not Reuse"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"EncryptionSuites & CA"})}),(0,i.jsx)(r.td,{children:"Core security model \u2014 no Nextcloud equivalent"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Secret storage (encrypted)"})}),(0,i.jsx)(r.td,{children:"Field-level encryption with per-user keys \u2014 cannot use generic storage"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Master password session"})}),(0,i.jsx)(r.td,{children:"Custom session management with configurable timeout and tab-close detection"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Key generator"})}),(0,i.jsx)(r.td,{children:"Server-side cryptographic randomness with configurable rules"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Sharing (user/link/request)"})}),(0,i.jsx)(r.td,{children:"Encryption-aware sharing \u2014 each share is a re-encrypted copy"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Suite migration"})}),(0,i.jsx)(r.td,{children:"Compromise recovery with re-encryption \u2014 domain-specific"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Application management"})}),(0,i.jsx)(r.td,{children:"CSR processing, approval queue \u2014 domain-specific PKI"})]})]})]}),"\n",(0,i.jsx)(r.h4,{id:"key-ocp-interface-examples",children:"Key OCP Interface Examples"}),"\n",(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{className:"language-php",children:"// Session \u2014 store AES-derived key\n$session = \\OCP\\Server::get(\\OCP\\ISession::class);\n$session->set('doriath_aes_key', $aesKey);\n$session->get('doriath_aes_key'); // retrieve for decryption\n\n// Notifications \u2014 secret shared\n$manager = \\OCP\\Server::get(\\OCP\\Notification\\IManager::class);\n$notification = $manager->createNotification();\n$notification->setApp('doriath')\n ->setUser($recipientId)\n ->setSubject('secret_shared', ['sharer' => $sharerId])\n ->setObject('secret', $secretId);\n$manager->notify($notification);\n\n// Search \u2014 register unified search provider\nclass SecretSearchProvider implements \\OCP\\Search\\IProvider {\n public function search(\\OCP\\IUser $user, \\OCP\\Search\\ISearchQuery $query): SearchResult {\n // Query name + url columns directly \u2014 no AES key needed\n $secrets = $this->secretMapper->searchByNameOrUrl($user->getUID(), $query->getTerm());\n // Return results with deep-link URLs (via lock screen if session inactive)\n }\n}\n\n// User deletion cleanup\nclass UserDeletedListener implements \\OCP\\EventDispatcher\\IEventListener {\n public function handle(\\OCP\\EventDispatcher\\Event $event): void {\n // Delete user's EncryptionSuite, secrets, shares, folders\n }\n}\n\n// Group membership \u2014 auto-revoke group shares\nclass UserRemovedFromGroupListener implements \\OCP\\EventDispatcher\\IEventListener {\n public function handle(\\OCP\\EventDispatcher\\Event $event): void {\n // Delete all SecretShares where group_share_id references a GroupShare for this group\n }\n}\n"})}),"\n",(0,i.jsx)(r.h3,{id:"35-conductionnextcloud-vue-library",children:"3.5 @conduction/nextcloud-vue Library"}),"\n",(0,i.jsxs)(r.p,{children:["Doriath uses its own database (not OpenRegister), so ",(0,i.jsx)(r.strong,{children:"store-level"})," components (",(0,i.jsx)(r.code,{children:"useObjectStore"}),", plugins) do not apply. However, the following ",(0,i.jsx)(r.strong,{children:"UI components and patterns"})," from ",(0,i.jsx)(r.code,{children:"@conduction/nextcloud-vue"})," are used:"]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Layer"}),(0,i.jsx)(r.th,{children:"What to Use"}),(0,i.jsx)(r.th,{children:"Purpose"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Components"})}),(0,i.jsxs)(r.td,{children:[(0,i.jsx)(r.code,{children:"CnDataTable"}),", ",(0,i.jsx)(r.code,{children:"CnFilterBar"}),", ",(0,i.jsx)(r.code,{children:"CnStatusBadge"}),", ",(0,i.jsx)(r.code,{children:"CnEmptyState"}),", ",(0,i.jsx)(r.code,{children:"CnPagination"})]}),(0,i.jsx)(r.td,{children:"Consistent list views for secrets, applications, shares"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Settings"})}),(0,i.jsxs)(r.td,{children:[(0,i.jsx)(r.code,{children:"CnSettingsSection"}),", ",(0,i.jsx)(r.code,{children:"CnVersionInfoCard"}),", ",(0,i.jsx)(r.code,{children:"CnSettingsCard"})]}),(0,i.jsx)(r.td,{children:"Admin settings page (CA health, password policy, app management)"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Detail pages"})}),(0,i.jsxs)(r.td,{children:[(0,i.jsx)(r.code,{children:"CnDetailPage"}),", ",(0,i.jsx)(r.code,{children:"CnDetailCard"}),", ",(0,i.jsx)(r.code,{children:"CnObjectSidebar"})]}),(0,i.jsx)(r.td,{children:"Secret detail view with card-based layout + sidebar (files, notes, tags, audit trail)"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"CSS"})}),(0,i.jsx)(r.td,{children:"NL Design System double-fallback pattern (cn- prefix)"}),(0,i.jsx)(r.td,{children:"Government theming compliance"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.strong,{children:"Not used"})}),(0,i.jsxs)(r.td,{children:[(0,i.jsx)(r.code,{children:"useObjectStore"}),", ",(0,i.jsx)(r.code,{children:"registerMappingPlugin"}),", ",(0,i.jsx)(r.code,{children:"lifecyclePlugin"}),", ",(0,i.jsx)(r.code,{children:"useListView"}),", ",(0,i.jsx)(r.code,{children:"useDetailView"})]}),(0,i.jsx)(r.td,{children:"These depend on OpenRegister API \u2014 Doriath has its own backend API"})]})]})]}),"\n",(0,i.jsxs)(r.p,{children:["Doriath implements its own Pinia stores (",(0,i.jsx)(r.code,{children:"useSecretStore"}),", ",(0,i.jsx)(r.code,{children:"useEncryptionSuiteStore"}),", ",(0,i.jsx)(r.code,{children:"useApplicationStore"}),", etc.) that call Doriath's REST API instead of the OpenRegister API. The stores follow the same patterns (loading state, pagination, CRUD) but are not derived from ",(0,i.jsx)(r.code,{children:"useObjectStore"}),"."]}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"package.json dependency"})," (MUST be present):"]}),"\n",(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{className:"language-json",children:'"@conduction/nextcloud-vue": "^0.1.0-beta.1"\n'})}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Webpack alias"})," (MUST be in webpack.config.js):"]}),"\n",(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{className:"language-js",children:"const fs = require('fs')\nconst localLib = path.resolve(__dirname, '../nextcloud-vue/src')\nconst useLocalLib = fs.existsSync(localLib)\n\n// In resolve.alias:\n...(useLocalLib ? { '@conduction/nextcloud-vue': localLib } : {}),\n'vue$': path.resolve(__dirname, 'node_modules/vue'),\n'pinia$': path.resolve(__dirname, 'node_modules/pinia'),\n'@nextcloud/vue$': path.resolve(__dirname, 'node_modules/@nextcloud/vue'),\n"})}),"\n",(0,i.jsx)(r.h3,{id:"36-vue-router-navigation",children:"3.6 Vue Router (Navigation)"}),"\n",(0,i.jsxs)(r.p,{children:["All navigation uses Vue Router (hash mode). The lock screen is a ",(0,i.jsx)(r.strong,{children:"route guard"})," \u2014 if no AES key is in session, all routes redirect to the lock screen."]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Path"}),(0,i.jsx)(r.th,{children:"Name"}),(0,i.jsx)(r.th,{children:"Component"}),(0,i.jsx)(r.th,{children:"Props"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"/"})}),(0,i.jsx)(r.td,{children:"Dashboard"}),(0,i.jsx)(r.td,{children:"Dashboard"}),(0,i.jsx)(r.td,{children:"\u2014"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"/lock"})}),(0,i.jsx)(r.td,{children:"Lock"}),(0,i.jsx)(r.td,{children:"LockScreen"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"route => ({ returnUrl: route.query.returnUrl })"})})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"/secrets"})}),(0,i.jsx)(r.td,{children:"Secrets"}),(0,i.jsx)(r.td,{children:"SecretList"}),(0,i.jsx)(r.td,{children:"\u2014"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"/secrets/:id"})}),(0,i.jsx)(r.td,{children:"SecretDetail"}),(0,i.jsx)(r.td,{children:"SecretDetail"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"route => ({ secretId: route.params.id })"})})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"/folders/:id"})}),(0,i.jsx)(r.td,{children:"FolderView"}),(0,i.jsx)(r.td,{children:"SecretList"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"route => ({ folderId: route.params.id })"})})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"/applications"})}),(0,i.jsx)(r.td,{children:"Applications"}),(0,i.jsx)(r.td,{children:"ApplicationList"}),(0,i.jsx)(r.td,{children:"\u2014"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"/applications/:id"})}),(0,i.jsx)(r.td,{children:"ApplicationDetail"}),(0,i.jsx)(r.td,{children:"ApplicationDetail"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"route => ({ applicationId: route.params.id })"})})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"/share/link/:token"})}),(0,i.jsx)(r.td,{children:"LinkShareAccess"}),(0,i.jsx)(r.td,{children:"LinkShareAccess"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"route => ({ token: route.params.token })"})})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"/share/request/:token"})}),(0,i.jsx)(r.td,{children:"SecretRequestFill"}),(0,i.jsx)(r.td,{children:"SecretRequestFill"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"route => ({ token: route.params.token })"})})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"*"})}),(0,i.jsx)(r.td,{children:"\u2014"}),(0,i.jsxs)(r.td,{children:["redirect \u2192 ",(0,i.jsx)(r.code,{children:"/"})]}),(0,i.jsx)(r.td,{children:"\u2014"})]})]})]}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Route guard pattern:"})}),"\n",(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{className:"language-js",children:"router.beforeEach((to, from, next) => {\n // Public routes (link share, request fill-in) skip the lock screen\n if (['LinkShareAccess', 'SecretRequestFill', 'Lock'].includes(to.name)) {\n return next()\n }\n // Check if AES key is in session (API call to backend)\n if (!store.isUnlocked) {\n return next({ name: 'Lock', query: { returnUrl: to.fullPath } })\n }\n next()\n})\n"})}),"\n",(0,i.jsxs)(r.p,{children:["Key files: ",(0,i.jsx)(r.code,{children:"src/router/index.js"}),", registered in ",(0,i.jsx)(r.code,{children:"main.js"}),", ",(0,i.jsx)(r.code,{children:"<router-view />"})," in ",(0,i.jsx)(r.code,{children:"App.vue"}),".\nMainMenu navigation: use ",(0,i.jsx)(r.code,{children:":to"})," prop on ",(0,i.jsx)(r.code,{children:"NcAppNavigationItem"})," (NOT ",(0,i.jsx)(r.code,{children:"@click"})," + ",(0,i.jsx)(r.code,{children:"$router.push()"}),")."]}),"\n",(0,i.jsxs)(r.p,{children:["The MainMenu footer contains two items: ",(0,i.jsx)(r.strong,{children:'"Lock vault"'})," (lock icon \u2014 calls ",(0,i.jsx)(r.code,{children:"session.lock()"})," and navigates to ",(0,i.jsx)(r.code,{children:"/lock"}),") and ",(0,i.jsx)(r.strong,{children:'"Settings"'})," (gear icon \u2014 opens ",(0,i.jsx)(r.code,{children:"NcAppSettingsDialog"})," for user preferences)."]}),"\n",(0,i.jsx)(r.h3,{id:"37-openconnector-integration",children:"3.7 OpenConnector Integration"}),"\n",(0,i.jsxs)(r.p,{children:["Doriath acts as a ",(0,i.jsx)(r.strong,{children:"secret store for OpenConnector"}),". When OpenConnector needs API keys or credentials to connect to external services, it can retrieve them from Doriath's application vault via the API."]}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Integration pattern:"})}),"\n",(0,i.jsxs)(r.ol,{children:["\n",(0,i.jsx)(r.li,{children:"Register OpenConnector as an Application in Doriath (admin auto-approved)"}),"\n",(0,i.jsx)(r.li,{children:"OpenConnector receives an EncryptionSuite (via generated key pair or CSR)"}),"\n",(0,i.jsx)(r.li,{children:"Admin writes API keys/credentials into OpenConnector's application vault"}),"\n",(0,i.jsxs)(r.li,{children:["OpenConnector retrieves its secrets via Doriath's API using ",(0,i.jsx)(r.code,{children:"X-Vault-Password"})," header"]}),"\n"]}),"\n",(0,i.jsx)(r.p,{children:"This integration is via Doriath's REST API \u2014 no tight coupling or shared database."}),"\n",(0,i.jsx)(r.h2,{id:"4-database-configuration",children:"4. Database Configuration"}),"\n",(0,i.jsx)(r.h3,{id:"doctrine-entities",children:"Doctrine Entities"}),"\n",(0,i.jsxs)(r.p,{children:["All entities use Nextcloud's ",(0,i.jsx)(r.code,{children:"ISchemaWrapper"})," migration pattern. Migrations are stored in ",(0,i.jsx)(r.code,{children:"lib/Migration/"}),"."]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Entity"}),(0,i.jsx)(r.th,{children:"Table Name"}),(0,i.jsx)(r.th,{children:"Notes"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"EncryptionSuite"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"doriath_encryption_suites"})}),(0,i.jsxs)(r.td,{children:["Composite index on ",(0,i.jsx)(r.code,{children:"(owner_type, owner_id)"})]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"CACertificate"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"doriath_ca_certificates"})}),(0,i.jsx)(r.td,{children:"\u2014"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"Secret"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"doriath_secrets"})}),(0,i.jsxs)(r.td,{children:["Index on ",(0,i.jsx)(r.code,{children:"(owner_type, owner_id)"}),", ",(0,i.jsx)(r.code,{children:"folder_id"}),", ",(0,i.jsx)(r.code,{children:"encryption_suite_id"})]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"SecretType"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"doriath_secret_types"})}),(0,i.jsxs)(r.td,{children:["Unique index on ",(0,i.jsx)(r.code,{children:"name"})]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"Folder"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"doriath_folders"})}),(0,i.jsxs)(r.td,{children:["Index on ",(0,i.jsx)(r.code,{children:"(owner_type, owner_id, parent_id)"})]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"Application"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"doriath_applications"})}),(0,i.jsx)(r.td,{children:"\u2014"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"SecretShare"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"doriath_secret_shares"})}),(0,i.jsxs)(r.td,{children:["Index on ",(0,i.jsx)(r.code,{children:"source_secret_id"}),", ",(0,i.jsx)(r.code,{children:"target_user_id"})]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"GroupShare"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"doriath_group_shares"})}),(0,i.jsxs)(r.td,{children:["Index on ",(0,i.jsx)(r.code,{children:"(secret_id, group_id)"})]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"SecretDelegation"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"doriath_secret_delegations"})}),(0,i.jsxs)(r.td,{children:["Index on ",(0,i.jsx)(r.code,{children:"secret_id"})]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"LinkShare"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"doriath_link_shares"})}),(0,i.jsxs)(r.td,{children:["Unique index on ",(0,i.jsx)(r.code,{children:"token"})]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"SecretRequest"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"doriath_secret_requests"})}),(0,i.jsxs)(r.td,{children:["Unique index on ",(0,i.jsx)(r.code,{children:"token"})]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"SuiteMigration"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"doriath_suite_migrations"})}),(0,i.jsx)(r.td,{children:"\u2014"})]})]})]}),"\n",(0,i.jsx)(r.h2,{id:"5-open-research-questions",children:"5. Open Research Questions"}),"\n",(0,i.jsxs)(r.ol,{children:["\n",(0,i.jsxs)(r.li,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Application API authentication"})," \u2014 RFC 7523 (JWT Bearer / Private Key JWT) is the lean for how approved applications authenticate to retrieve secrets. Uses existing RSA key infrastructure, short-lived tokens, no new credential. Needs team discussion before finalizing. See ",(0,i.jsx)(r.a,{href:"../openspec/specs/application-mgmt/spec.md",children:"application-mgmt spec"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(r.li,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Pagination approach"})," \u2014 50 items per page (standard pagination) or 30 items with dynamic infinite scroll? To be decided during UI design."]}),"\n"]}),"\n",(0,i.jsxs)(r.li,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Subfolder cascade"})," \u2014 Does ",(0,i.jsx)(r.code,{children:"?cascade=delete"})," and ",(0,i.jsx)(r.code,{children:"?cascade=move"})," apply recursively to subfolders, or only to direct contents? Unclear whether recursive folder deletion should be allowed."]}),"\n"]}),"\n",(0,i.jsxs)(r.li,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Internal application master password"})," \u2014 How does a Nextcloud app running a cronjob authenticate to its Doriath vault? No solution found that doesn't compromise the security model. See Vault-app.docx for full analysis."]}),"\n"]}),"\n",(0,i.jsxs)(r.li,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Post-quantum cryptography"})," \u2014 RSA-4096 is vulnerable to future quantum attacks. Post-quantum algorithms are not yet available in stable PHP/OpenSSL. Must be revisited when PHP gains support."]}),"\n"]}),"\n",(0,i.jsxs)(r.li,{children:["\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Forced intermediate revocation and secret compromise"})," \u2014 When an admin force-revokes the intermediate certificate (e.g., leaked key), should all secrets be flagged ",(0,i.jsx)(r.code,{children:"possibly_compromised_at"}),"? The intermediate signs certificates but doesn't directly encrypt secrets. Needs further analysis."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(r.h2,{id:"6-references",children:"6. References"}),"\n",(0,i.jsx)(r.h3,{id:"cryptographic-standards",children:"Cryptographic Standards"}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"https://www.rfc-editor.org/rfc/rfc5280.html",children:"RFC 5280 \u2014 X.509 PKI Certificate Profile"})," \u2014 Certificate format and CA chain"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"https://www.rfc-editor.org/rfc/rfc8017.html",children:"RFC 8017 \u2014 PKCS#1 RSA Cryptography"})," \u2014 RSA encryption schemes"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"https://www.rfc-editor.org/rfc/rfc5958.html",children:"RFC 5958 \u2014 PKCS#8 Private Key Info"})," \u2014 Encrypted private key storage"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"https://www.rfc-editor.org/rfc/rfc2986.html",children:"RFC 2986 \u2014 PKCS#10 CSR"})," \u2014 Certificate Signing Request format"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"https://www.rfc-editor.org/rfc/rfc9106.html",children:"RFC 9106 \u2014 Argon2"})," \u2014 Memory-hard KDF"]}),"\n"]}),"\n",(0,i.jsx)(r.h3,{id:"key-management--password-policy",children:"Key Management & Password Policy"}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"https://csrc.nist.gov/pubs/sp/800/57/pt1/r5/final",children:"NIST SP 800-57 Part 1"})," \u2014 Key management recommendations"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"https://pages.nist.gov/800-63-3/sp800-63b.html",children:"NIST SP 800-63B"})," \u2014 Authenticator assurance levels"]}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html",children:"OWASP Password Storage Cheat Sheet"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"https://cheatsheetseries.owasp.org/cheatsheets/Cryptographic_Storage_Cheat_Sheet.html",children:"OWASP Cryptographic Storage Cheat Sheet"})}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"https://github.com/dropbox/zxcvbn",children:"zxcvbn (Dropbox)"})," \u2014 Password strength estimation"]}),"\n"]}),"\n",(0,i.jsx)(r.h3,{id:"nextcloud-ocp-interfaces",children:"Nextcloud OCP Interfaces"}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"https://docs.nextcloud.com/",children:"OCP\\ISession"})," \u2014 Server-side session storage"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"https://docs.nextcloud.com/",children:"OCP\\Notification\\IManager"})," \u2014 Notification system"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"https://docs.nextcloud.com/",children:"OCP\\Search\\IProvider"})," \u2014 Unified search integration"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"https://docs.nextcloud.com/",children:"OCP\\Settings\\ISettings"})," \u2014 Admin settings registration"]}),"\n"]}),"\n",(0,i.jsx)(r.h3,{id:"architectural-decisions",children:"Architectural Decisions"}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"../openspec/architecture/adr-001-own-database-tables.md",children:"ADR-001: Own Database Tables"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"../openspec/architecture/adr-002-polymorphic-encryption-suite-ownership.md",children:"ADR-002: Polymorphic Encryption Suite Ownership"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"../openspec/architecture/adr-003-rsa-aes-encryption-architecture.md",children:"ADR-003: RSA + AES Encryption Architecture"})}),"\n"]})]})}function a(e={}){const{wrapper:r}={...(0,d.R)(),...e.components};return r?(0,i.jsx)(r,{...e,children:(0,i.jsx)(o,{...e})}):o(e)}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/2014.8390c3fa.js b/docs/build/assets/js/2014.8390c3fa.js deleted file mode 100644 index cb27d6c44..000000000 --- a/docs/build/assets/js/2014.8390c3fa.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[2014],{2014(a,e,s){s.d(e,{createTreemapServices:()=>c.d});var c=s(1681);s(9302)}}]); \ No newline at end of file diff --git a/docs/build/assets/js/2130.0859056b.js b/docs/build/assets/js/2130.0859056b.js deleted file mode 100644 index 249d35a5f..000000000 --- a/docs/build/assets/js/2130.0859056b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[2130],{2130(e,t,r){r.d(t,{default:()=>gn});class a extends Error{constructor(e,t){var r,n,i="KaTeX parse error: "+e,o=t&&t.loc;if(o&&o.start<=o.end){var s=o.lexer.input;r=o.start,n=o.end,r===s.length?i+=" at end of input: ":i+=" at position "+(r+1)+": ";var l=s.slice(r,n).replace(/[^]/g,"$&\u0332");i+=(r>15?"\u2026"+s.slice(r-15,r):s.slice(0,r))+l+(n+15<s.length?s.slice(n,n+15)+"\u2026":s.slice(n))}super(i),this.name="ParseError",Object.setPrototypeOf(this,a.prototype),this.position=r,null!=r&&null!=n&&(this.length=n-r),this.rawMessage=e}}var n=/([A-Z])/g,i=e=>e.replace(n,"-$1").toLowerCase(),o={"&":"&",">":">","<":"<",'"':""","'":"'"},s=/[&><"']/g,l=e=>String(e).replace(s,e=>o[e]),h=e=>"ordgroup"===e.type||"color"===e.type?1===e.body.length?h(e.body[0]):e:"font"===e.type?h(e.body):e,m=new Set(["mathord","textord","atom"]),c=e=>m.has(h(e).type),u={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format <type>"},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color <color>",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:e=>"#"+e},macros:{type:"object",cli:"-m, --macro <def>",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(e,t)=>(t.push(e),t)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:e=>Math.max(0,e),cli:"--min-rule-thickness <size>",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:e=>Math.max(0,e),cli:"-s, --max-size <n>",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:e=>Math.max(0,e),cli:"-e, --max-expand <n>",cliProcessor:e=>"Infinity"===e?1/0:parseInt(e)},globalGroup:{type:"boolean",cli:!1}};function p(e){if("default"in e)return e.default;var t=e.type,r=Array.isArray(t)?t[0]:t;if("string"!=typeof r)return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}class d{constructor(e){for(var t of(void 0===e&&(e={}),e=e||{},Object.keys(u))){var r=u[t],a=e[t];this[t]=void 0!==a?r.processor?r.processor(a):a:p(r)}}reportNonstrict(e,t,r){var n=this.strict;if("function"==typeof n&&(n=n(e,t,r)),n&&"ignore"!==n){if(!0===n||"error"===n)throw new a("LaTeX-incompatible input and strict mode is set to 'error': "+t+" ["+e+"]",r);"warn"===n?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+n+"': "+t+" ["+e+"]")}}useStrictBehavior(e,t,r){var a=this.strict;if("function"==typeof a)try{a=a(e,t,r)}catch(n){a="error"}return!(!a||"ignore"===a)&&(!0===a||"error"===a||("warn"===a?("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"),!1):("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+t+" ["+e+"]"),!1)))}isTrusted(e){if("url"in e&&e.url&&!e.protocol){var t=(e=>{var t=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return t?":"!==t[2]?null:/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?t[1].toLowerCase():null:"_relative"})(e.url);if(null==t)return!1;e.protocol=t}var r="function"==typeof this.trust?this.trust(e):this.trust;return Boolean(r)}}class g{constructor(e,t,r){this.id=e,this.size=t,this.cramped=r}sup(){return f[v[this.id]]}sub(){return f[b[this.id]]}fracNum(){return f[y[this.id]]}fracDen(){return f[x[this.id]]}cramp(){return f[w[this.id]]}text(){return f[k[this.id]]}isTight(){return this.size>=2}}var f=[new g(0,0,!1),new g(1,0,!0),new g(2,1,!1),new g(3,1,!0),new g(4,2,!1),new g(5,2,!0),new g(6,3,!1),new g(7,3,!0)],v=[4,5,4,5,6,7,6,7],b=[5,5,5,5,7,7,7,7],y=[2,3,4,5,6,7,6,7],x=[3,3,5,5,7,7,7,7],w=[1,1,3,3,5,5,7,7],k=[0,1,2,3,2,3,2,3],S={DISPLAY:f[0],TEXT:f[2],SCRIPT:f[4],SCRIPTSCRIPT:f[6]},z=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];var M=[];function A(e){for(var t=0;t<M.length;t+=2)if(e>=M[t]&&e<=M[t+1])return!0;return!1}z.forEach(e=>e.blocks.forEach(e=>M.push(...e)));var T=e=>e+" "+e,B=80,q={doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:T("M40 281 V428 H0 V94 H40 V241 H400000 v40z"),leftbracketunder:T("M0 0 h120 V290 H399995 v120 H0z"),leftbracketover:T("M0 440 h120 V150 H399995 v-120 H0z"),leftmapsto:T("M40 281 V448H0V74H40V241H400000v40z"),leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:T("M0 50 h400000 v40H0z m0 194h40000v40H0z"),midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",oiintSize1:"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",oiintSize2:"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",oiiintSize1:"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",oiiintSize2:"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:T("M399960 241 V94 h40 V428 h-40 V281 H0 v-40z"),rightbracketunder:T("M399995 0 h-120 V290 H0 v120 H400000z"),rightbracketover:T("M399995 440 h-120 V150 H0 v-120 H399995z"),rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widecheck1:"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",widecheck2:"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck3:"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck4:"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",baraboveleftarrow:"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",rightarrowabovebar:"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"};class C{constructor(e){this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return this.classes.includes(e)}toNode(){for(var e=document.createDocumentFragment(),t=0;t<this.children.length;t++)e.appendChild(this.children[t].toNode());return e}toMarkup(){for(var e="",t=0;t<this.children.length;t++)e+=this.children[t].toMarkup();return e}toText(){return this.children.map(e=>e.toText()).join("")}}var I={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},R={ex:!0,em:!0,mu:!0},H=function(e){return"string"!=typeof e&&(e=e.unit),e in I||e in R||"ex"===e},E=function(e,t){var r;if(e.unit in I)r=I[e.unit]/t.fontMetrics().ptPerEm/t.sizeMultiplier;else if("mu"===e.unit)r=t.fontMetrics().cssEmPerMu;else{var n;if(n=t.style.isTight()?t.havingStyle(t.style.text()):t,"ex"===e.unit)r=n.fontMetrics().xHeight;else{if("em"!==e.unit)throw new a("Invalid unit: '"+e.unit+"'");r=n.fontMetrics().quad}n!==t&&(r*=n.sizeMultiplier/t.sizeMultiplier)}return Math.min(e.number*r,t.maxSize)},N=function(e){return+e.toFixed(4)+"em"},O=function(e){return e.filter(e=>e).join(" ")},D=function(e,t,r){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=r||{},t){t.style.isTight()&&this.classes.push("mtight");var a=t.getColor();a&&(this.style.color=a)}},L=function(e){var t=document.createElement(e);for(var r of(t.className=O(this.classes),Object.keys(this.style)))t.style[r]=this.style[r];for(var a of Object.keys(this.attributes))t.setAttribute(a,this.attributes[a]);for(var n=0;n<this.children.length;n++)t.appendChild(this.children[n].toNode());return t},P=/[\s"'>/=\x00-\x1f]/,F=function(e){var t="<"+e;this.classes.length&&(t+=' class="'+l(O(this.classes))+'"');var r="";for(var n of Object.keys(this.style))r+=i(n)+":"+this.style[n]+";";for(var o of(r&&(t+=' style="'+l(r)+'"'),Object.keys(this.attributes))){if(P.test(o))throw new a("Invalid attribute name '"+o+"'");t+=" "+o+'="'+l(this.attributes[o])+'"'}t+=">";for(var s=0;s<this.children.length;s++)t+=this.children[s].toMarkup();return t+="</"+e+">"};class V{constructor(e,t,r,a){D.call(this,e,r,a),this.children=t||[]}setAttribute(e,t){this.attributes[e]=t}hasClass(e){return this.classes.includes(e)}toNode(){return L.call(this,"span")}toMarkup(){return F.call(this,"span")}}class G{constructor(e,t,r,a){D.call(this,t,a),this.children=r||[],this.setAttribute("href",e)}setAttribute(e,t){this.attributes[e]=t}hasClass(e){return this.classes.includes(e)}toNode(){return L.call(this,"a")}toMarkup(){return F.call(this,"a")}}class U{constructor(e,t,r){this.alt=t,this.src=e,this.classes=["mord"],this.height=0,this.depth=0,this.maxFontSize=0,this.style=r}hasClass(e){return this.classes.includes(e)}toNode(){var e=document.createElement("img");for(var t of(e.src=this.src,e.alt=this.alt,e.className="mord",Object.keys(this.style)))e.style[t]=this.style[t];return e}toMarkup(){var e='<img src="'+l(this.src)+'" alt="'+l(this.alt)+'"',t="";for(var r of Object.keys(this.style))t+=i(r)+":"+this.style[r]+";";return t&&(e+=' style="'+l(t)+'"'),e+="'/>"}}var X={"\xee":"\u0131\u0302","\xef":"\u0131\u0308","\xed":"\u0131\u0301","\xec":"\u0131\u0300"};class Y{constructor(e,t,r,a,n,i,o,s){this.text=e,this.height=t||0,this.depth=r||0,this.italic=a||0,this.skew=n||0,this.width=i||0,this.classes=o||[],this.style=s||{},this.maxFontSize=0;var l=function(e){for(var t=0;t<z.length;t++)for(var r=z[t],a=0;a<r.blocks.length;a++){var n=r.blocks[a];if(e>=n[0]&&e<=n[1])return r.name}return null}(this.text.charCodeAt(0));l&&this.classes.push(l+"_fallback"),/[\xee\xef\xed\xec]/.test(this.text)&&(this.text=X[this.text])}hasClass(e){return this.classes.includes(e)}toNode(){var e=document.createTextNode(this.text),t=null;for(var r of(this.italic>0&&((t=document.createElement("span")).style.marginRight=N(this.italic)),this.classes.length>0&&((t=t||document.createElement("span")).className=O(this.classes)),Object.keys(this.style)))(t=t||document.createElement("span")).style[r]=this.style[r];return t?(t.appendChild(e),t):e}toMarkup(){var e=!1,t="<span";this.classes.length&&(e=!0,t+=' class="',t+=l(O(this.classes)),t+='"');var r="";for(var a of(this.italic>0&&(r+="margin-right:"+N(this.italic)+";"),Object.keys(this.style)))r+=i(a)+":"+this.style[a]+";";r&&(e=!0,t+=' style="'+l(r)+'"');var n=l(this.text);return e?(t+=">",t+=n,t+="</span>"):n}}class W{constructor(e,t){this.children=e||[],this.attributes=t||{}}toNode(){var e=document.createElementNS("http://www.w3.org/2000/svg","svg");for(var t of Object.keys(this.attributes))e.setAttribute(t,this.attributes[t]);for(var r=0;r<this.children.length;r++)e.appendChild(this.children[r].toNode());return e}toMarkup(){var e='<svg xmlns="http://www.w3.org/2000/svg"';for(var t of Object.keys(this.attributes))e+=" "+t+'="'+l(this.attributes[t])+'"';e+=">";for(var r=0;r<this.children.length;r++)e+=this.children[r].toMarkup();return e+="</svg>"}}class j{constructor(e,t){this.pathName=e,this.alternate=t}toNode(){var e=document.createElementNS("http://www.w3.org/2000/svg","path");return this.alternate?e.setAttribute("d",this.alternate):e.setAttribute("d",q[this.pathName]),e}toMarkup(){return this.alternate?'<path d="'+l(this.alternate)+'"/>':'<path d="'+l(q[this.pathName])+'"/>'}}class _{constructor(e){this.attributes=e||{}}toNode(){var e=document.createElementNS("http://www.w3.org/2000/svg","line");for(var t of Object.keys(this.attributes))e.setAttribute(t,this.attributes[t]);return e}toMarkup(){var e="<line";for(var t of Object.keys(this.attributes))e+=" "+t+'="'+l(this.attributes[t])+'"';return e+="/>"}}var $={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},Z={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},K={"\xc5":"A","\xd0":"D","\xde":"o","\xe5":"a","\xf0":"d","\xfe":"o","\u0410":"A","\u0411":"B","\u0412":"B","\u0413":"F","\u0414":"A","\u0415":"E","\u0416":"K","\u0417":"3","\u0418":"N","\u0419":"N","\u041a":"K","\u041b":"N","\u041c":"M","\u041d":"H","\u041e":"O","\u041f":"N","\u0420":"P","\u0421":"C","\u0422":"T","\u0423":"y","\u0424":"O","\u0425":"X","\u0426":"U","\u0427":"h","\u0428":"W","\u0429":"W","\u042a":"B","\u042b":"X","\u042c":"B","\u042d":"3","\u042e":"X","\u042f":"R","\u0430":"a","\u0431":"b","\u0432":"a","\u0433":"r","\u0434":"y","\u0435":"e","\u0436":"m","\u0437":"e","\u0438":"n","\u0439":"n","\u043a":"n","\u043b":"n","\u043c":"m","\u043d":"n","\u043e":"o","\u043f":"n","\u0440":"p","\u0441":"c","\u0442":"o","\u0443":"y","\u0444":"b","\u0445":"x","\u0446":"n","\u0447":"n","\u0448":"w","\u0449":"w","\u044a":"a","\u044b":"m","\u044c":"a","\u044d":"e","\u044e":"m","\u044f":"r"};function J(e,t,r){if(!$[t])throw new Error("Font metrics not found for font: "+t+".");var a=e.charCodeAt(0),n=$[t][a];if(!n&&e[0]in K&&(a=K[e[0]].charCodeAt(0),n=$[t][a]),n||"text"!==r||A(a)&&(n=$[t][77]),n)return{depth:n[0],height:n[1],italic:n[2],skew:n[3],width:n[4]}}var Q={};var ee={bin:1,close:1,inner:1,open:1,punct:1,rel:1},te={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},re={math:{},text:{}};function ae(e,t,r,a,n,i){re[e][n]={font:t,group:r,replace:a},i&&a&&(re[e][a]=re[e][n])}var ne="math",ie="text",oe="main",se="ams",le="accent-token",he="bin",me="close",ce="inner",ue="mathord",pe="op-token",de="open",ge="punct",fe="rel",ve="spacing",be="textord";ae(ne,oe,fe,"\u2261","\\equiv",!0),ae(ne,oe,fe,"\u227a","\\prec",!0),ae(ne,oe,fe,"\u227b","\\succ",!0),ae(ne,oe,fe,"\u223c","\\sim",!0),ae(ne,oe,fe,"\u22a5","\\perp"),ae(ne,oe,fe,"\u2aaf","\\preceq",!0),ae(ne,oe,fe,"\u2ab0","\\succeq",!0),ae(ne,oe,fe,"\u2243","\\simeq",!0),ae(ne,oe,fe,"\u2223","\\mid",!0),ae(ne,oe,fe,"\u226a","\\ll",!0),ae(ne,oe,fe,"\u226b","\\gg",!0),ae(ne,oe,fe,"\u224d","\\asymp",!0),ae(ne,oe,fe,"\u2225","\\parallel"),ae(ne,oe,fe,"\u22c8","\\bowtie",!0),ae(ne,oe,fe,"\u2323","\\smile",!0),ae(ne,oe,fe,"\u2291","\\sqsubseteq",!0),ae(ne,oe,fe,"\u2292","\\sqsupseteq",!0),ae(ne,oe,fe,"\u2250","\\doteq",!0),ae(ne,oe,fe,"\u2322","\\frown",!0),ae(ne,oe,fe,"\u220b","\\ni",!0),ae(ne,oe,fe,"\u221d","\\propto",!0),ae(ne,oe,fe,"\u22a2","\\vdash",!0),ae(ne,oe,fe,"\u22a3","\\dashv",!0),ae(ne,oe,fe,"\u220b","\\owns"),ae(ne,oe,ge,".","\\ldotp"),ae(ne,oe,ge,"\u22c5","\\cdotp"),ae(ne,oe,ge,"\u22c5","\xb7"),ae(ie,oe,be,"\u22c5","\xb7"),ae(ne,oe,be,"#","\\#"),ae(ie,oe,be,"#","\\#"),ae(ne,oe,be,"&","\\&"),ae(ie,oe,be,"&","\\&"),ae(ne,oe,be,"\u2135","\\aleph",!0),ae(ne,oe,be,"\u2200","\\forall",!0),ae(ne,oe,be,"\u210f","\\hbar",!0),ae(ne,oe,be,"\u2203","\\exists",!0),ae(ne,oe,be,"\u2207","\\nabla",!0),ae(ne,oe,be,"\u266d","\\flat",!0),ae(ne,oe,be,"\u2113","\\ell",!0),ae(ne,oe,be,"\u266e","\\natural",!0),ae(ne,oe,be,"\u2663","\\clubsuit",!0),ae(ne,oe,be,"\u2118","\\wp",!0),ae(ne,oe,be,"\u266f","\\sharp",!0),ae(ne,oe,be,"\u2662","\\diamondsuit",!0),ae(ne,oe,be,"\u211c","\\Re",!0),ae(ne,oe,be,"\u2661","\\heartsuit",!0),ae(ne,oe,be,"\u2111","\\Im",!0),ae(ne,oe,be,"\u2660","\\spadesuit",!0),ae(ne,oe,be,"\xa7","\\S",!0),ae(ie,oe,be,"\xa7","\\S"),ae(ne,oe,be,"\xb6","\\P",!0),ae(ie,oe,be,"\xb6","\\P"),ae(ne,oe,be,"\u2020","\\dag"),ae(ie,oe,be,"\u2020","\\dag"),ae(ie,oe,be,"\u2020","\\textdagger"),ae(ne,oe,be,"\u2021","\\ddag"),ae(ie,oe,be,"\u2021","\\ddag"),ae(ie,oe,be,"\u2021","\\textdaggerdbl"),ae(ne,oe,me,"\u23b1","\\rmoustache",!0),ae(ne,oe,de,"\u23b0","\\lmoustache",!0),ae(ne,oe,me,"\u27ef","\\rgroup",!0),ae(ne,oe,de,"\u27ee","\\lgroup",!0),ae(ne,oe,he,"\u2213","\\mp",!0),ae(ne,oe,he,"\u2296","\\ominus",!0),ae(ne,oe,he,"\u228e","\\uplus",!0),ae(ne,oe,he,"\u2293","\\sqcap",!0),ae(ne,oe,he,"\u2217","\\ast"),ae(ne,oe,he,"\u2294","\\sqcup",!0),ae(ne,oe,he,"\u25ef","\\bigcirc",!0),ae(ne,oe,he,"\u2219","\\bullet",!0),ae(ne,oe,he,"\u2021","\\ddagger"),ae(ne,oe,he,"\u2240","\\wr",!0),ae(ne,oe,he,"\u2a3f","\\amalg"),ae(ne,oe,he,"&","\\And"),ae(ne,oe,fe,"\u27f5","\\longleftarrow",!0),ae(ne,oe,fe,"\u21d0","\\Leftarrow",!0),ae(ne,oe,fe,"\u27f8","\\Longleftarrow",!0),ae(ne,oe,fe,"\u27f6","\\longrightarrow",!0),ae(ne,oe,fe,"\u21d2","\\Rightarrow",!0),ae(ne,oe,fe,"\u27f9","\\Longrightarrow",!0),ae(ne,oe,fe,"\u2194","\\leftrightarrow",!0),ae(ne,oe,fe,"\u27f7","\\longleftrightarrow",!0),ae(ne,oe,fe,"\u21d4","\\Leftrightarrow",!0),ae(ne,oe,fe,"\u27fa","\\Longleftrightarrow",!0),ae(ne,oe,fe,"\u21a6","\\mapsto",!0),ae(ne,oe,fe,"\u27fc","\\longmapsto",!0),ae(ne,oe,fe,"\u2197","\\nearrow",!0),ae(ne,oe,fe,"\u21a9","\\hookleftarrow",!0),ae(ne,oe,fe,"\u21aa","\\hookrightarrow",!0),ae(ne,oe,fe,"\u2198","\\searrow",!0),ae(ne,oe,fe,"\u21bc","\\leftharpoonup",!0),ae(ne,oe,fe,"\u21c0","\\rightharpoonup",!0),ae(ne,oe,fe,"\u2199","\\swarrow",!0),ae(ne,oe,fe,"\u21bd","\\leftharpoondown",!0),ae(ne,oe,fe,"\u21c1","\\rightharpoondown",!0),ae(ne,oe,fe,"\u2196","\\nwarrow",!0),ae(ne,oe,fe,"\u21cc","\\rightleftharpoons",!0),ae(ne,se,fe,"\u226e","\\nless",!0),ae(ne,se,fe,"\ue010","\\@nleqslant"),ae(ne,se,fe,"\ue011","\\@nleqq"),ae(ne,se,fe,"\u2a87","\\lneq",!0),ae(ne,se,fe,"\u2268","\\lneqq",!0),ae(ne,se,fe,"\ue00c","\\@lvertneqq"),ae(ne,se,fe,"\u22e6","\\lnsim",!0),ae(ne,se,fe,"\u2a89","\\lnapprox",!0),ae(ne,se,fe,"\u2280","\\nprec",!0),ae(ne,se,fe,"\u22e0","\\npreceq",!0),ae(ne,se,fe,"\u22e8","\\precnsim",!0),ae(ne,se,fe,"\u2ab9","\\precnapprox",!0),ae(ne,se,fe,"\u2241","\\nsim",!0),ae(ne,se,fe,"\ue006","\\@nshortmid"),ae(ne,se,fe,"\u2224","\\nmid",!0),ae(ne,se,fe,"\u22ac","\\nvdash",!0),ae(ne,se,fe,"\u22ad","\\nvDash",!0),ae(ne,se,fe,"\u22ea","\\ntriangleleft"),ae(ne,se,fe,"\u22ec","\\ntrianglelefteq",!0),ae(ne,se,fe,"\u228a","\\subsetneq",!0),ae(ne,se,fe,"\ue01a","\\@varsubsetneq"),ae(ne,se,fe,"\u2acb","\\subsetneqq",!0),ae(ne,se,fe,"\ue017","\\@varsubsetneqq"),ae(ne,se,fe,"\u226f","\\ngtr",!0),ae(ne,se,fe,"\ue00f","\\@ngeqslant"),ae(ne,se,fe,"\ue00e","\\@ngeqq"),ae(ne,se,fe,"\u2a88","\\gneq",!0),ae(ne,se,fe,"\u2269","\\gneqq",!0),ae(ne,se,fe,"\ue00d","\\@gvertneqq"),ae(ne,se,fe,"\u22e7","\\gnsim",!0),ae(ne,se,fe,"\u2a8a","\\gnapprox",!0),ae(ne,se,fe,"\u2281","\\nsucc",!0),ae(ne,se,fe,"\u22e1","\\nsucceq",!0),ae(ne,se,fe,"\u22e9","\\succnsim",!0),ae(ne,se,fe,"\u2aba","\\succnapprox",!0),ae(ne,se,fe,"\u2246","\\ncong",!0),ae(ne,se,fe,"\ue007","\\@nshortparallel"),ae(ne,se,fe,"\u2226","\\nparallel",!0),ae(ne,se,fe,"\u22af","\\nVDash",!0),ae(ne,se,fe,"\u22eb","\\ntriangleright"),ae(ne,se,fe,"\u22ed","\\ntrianglerighteq",!0),ae(ne,se,fe,"\ue018","\\@nsupseteqq"),ae(ne,se,fe,"\u228b","\\supsetneq",!0),ae(ne,se,fe,"\ue01b","\\@varsupsetneq"),ae(ne,se,fe,"\u2acc","\\supsetneqq",!0),ae(ne,se,fe,"\ue019","\\@varsupsetneqq"),ae(ne,se,fe,"\u22ae","\\nVdash",!0),ae(ne,se,fe,"\u2ab5","\\precneqq",!0),ae(ne,se,fe,"\u2ab6","\\succneqq",!0),ae(ne,se,fe,"\ue016","\\@nsubseteqq"),ae(ne,se,he,"\u22b4","\\unlhd"),ae(ne,se,he,"\u22b5","\\unrhd"),ae(ne,se,fe,"\u219a","\\nleftarrow",!0),ae(ne,se,fe,"\u219b","\\nrightarrow",!0),ae(ne,se,fe,"\u21cd","\\nLeftarrow",!0),ae(ne,se,fe,"\u21cf","\\nRightarrow",!0),ae(ne,se,fe,"\u21ae","\\nleftrightarrow",!0),ae(ne,se,fe,"\u21ce","\\nLeftrightarrow",!0),ae(ne,se,fe,"\u25b3","\\vartriangle"),ae(ne,se,be,"\u210f","\\hslash"),ae(ne,se,be,"\u25bd","\\triangledown"),ae(ne,se,be,"\u25ca","\\lozenge"),ae(ne,se,be,"\u24c8","\\circledS"),ae(ne,se,be,"\xae","\\circledR"),ae(ie,se,be,"\xae","\\circledR"),ae(ne,se,be,"\u2221","\\measuredangle",!0),ae(ne,se,be,"\u2204","\\nexists"),ae(ne,se,be,"\u2127","\\mho"),ae(ne,se,be,"\u2132","\\Finv",!0),ae(ne,se,be,"\u2141","\\Game",!0),ae(ne,se,be,"\u2035","\\backprime"),ae(ne,se,be,"\u25b2","\\blacktriangle"),ae(ne,se,be,"\u25bc","\\blacktriangledown"),ae(ne,se,be,"\u25a0","\\blacksquare"),ae(ne,se,be,"\u29eb","\\blacklozenge"),ae(ne,se,be,"\u2605","\\bigstar"),ae(ne,se,be,"\u2222","\\sphericalangle",!0),ae(ne,se,be,"\u2201","\\complement",!0),ae(ne,se,be,"\xf0","\\eth",!0),ae(ie,oe,be,"\xf0","\xf0"),ae(ne,se,be,"\u2571","\\diagup"),ae(ne,se,be,"\u2572","\\diagdown"),ae(ne,se,be,"\u25a1","\\square"),ae(ne,se,be,"\u25a1","\\Box"),ae(ne,se,be,"\u25ca","\\Diamond"),ae(ne,se,be,"\xa5","\\yen",!0),ae(ie,se,be,"\xa5","\\yen",!0),ae(ne,se,be,"\u2713","\\checkmark",!0),ae(ie,se,be,"\u2713","\\checkmark"),ae(ne,se,be,"\u2136","\\beth",!0),ae(ne,se,be,"\u2138","\\daleth",!0),ae(ne,se,be,"\u2137","\\gimel",!0),ae(ne,se,be,"\u03dd","\\digamma",!0),ae(ne,se,be,"\u03f0","\\varkappa"),ae(ne,se,de,"\u250c","\\@ulcorner",!0),ae(ne,se,me,"\u2510","\\@urcorner",!0),ae(ne,se,de,"\u2514","\\@llcorner",!0),ae(ne,se,me,"\u2518","\\@lrcorner",!0),ae(ne,se,fe,"\u2266","\\leqq",!0),ae(ne,se,fe,"\u2a7d","\\leqslant",!0),ae(ne,se,fe,"\u2a95","\\eqslantless",!0),ae(ne,se,fe,"\u2272","\\lesssim",!0),ae(ne,se,fe,"\u2a85","\\lessapprox",!0),ae(ne,se,fe,"\u224a","\\approxeq",!0),ae(ne,se,he,"\u22d6","\\lessdot"),ae(ne,se,fe,"\u22d8","\\lll",!0),ae(ne,se,fe,"\u2276","\\lessgtr",!0),ae(ne,se,fe,"\u22da","\\lesseqgtr",!0),ae(ne,se,fe,"\u2a8b","\\lesseqqgtr",!0),ae(ne,se,fe,"\u2251","\\doteqdot"),ae(ne,se,fe,"\u2253","\\risingdotseq",!0),ae(ne,se,fe,"\u2252","\\fallingdotseq",!0),ae(ne,se,fe,"\u223d","\\backsim",!0),ae(ne,se,fe,"\u22cd","\\backsimeq",!0),ae(ne,se,fe,"\u2ac5","\\subseteqq",!0),ae(ne,se,fe,"\u22d0","\\Subset",!0),ae(ne,se,fe,"\u228f","\\sqsubset",!0),ae(ne,se,fe,"\u227c","\\preccurlyeq",!0),ae(ne,se,fe,"\u22de","\\curlyeqprec",!0),ae(ne,se,fe,"\u227e","\\precsim",!0),ae(ne,se,fe,"\u2ab7","\\precapprox",!0),ae(ne,se,fe,"\u22b2","\\vartriangleleft"),ae(ne,se,fe,"\u22b4","\\trianglelefteq"),ae(ne,se,fe,"\u22a8","\\vDash",!0),ae(ne,se,fe,"\u22aa","\\Vvdash",!0),ae(ne,se,fe,"\u2323","\\smallsmile"),ae(ne,se,fe,"\u2322","\\smallfrown"),ae(ne,se,fe,"\u224f","\\bumpeq",!0),ae(ne,se,fe,"\u224e","\\Bumpeq",!0),ae(ne,se,fe,"\u2267","\\geqq",!0),ae(ne,se,fe,"\u2a7e","\\geqslant",!0),ae(ne,se,fe,"\u2a96","\\eqslantgtr",!0),ae(ne,se,fe,"\u2273","\\gtrsim",!0),ae(ne,se,fe,"\u2a86","\\gtrapprox",!0),ae(ne,se,he,"\u22d7","\\gtrdot"),ae(ne,se,fe,"\u22d9","\\ggg",!0),ae(ne,se,fe,"\u2277","\\gtrless",!0),ae(ne,se,fe,"\u22db","\\gtreqless",!0),ae(ne,se,fe,"\u2a8c","\\gtreqqless",!0),ae(ne,se,fe,"\u2256","\\eqcirc",!0),ae(ne,se,fe,"\u2257","\\circeq",!0),ae(ne,se,fe,"\u225c","\\triangleq",!0),ae(ne,se,fe,"\u223c","\\thicksim"),ae(ne,se,fe,"\u2248","\\thickapprox"),ae(ne,se,fe,"\u2ac6","\\supseteqq",!0),ae(ne,se,fe,"\u22d1","\\Supset",!0),ae(ne,se,fe,"\u2290","\\sqsupset",!0),ae(ne,se,fe,"\u227d","\\succcurlyeq",!0),ae(ne,se,fe,"\u22df","\\curlyeqsucc",!0),ae(ne,se,fe,"\u227f","\\succsim",!0),ae(ne,se,fe,"\u2ab8","\\succapprox",!0),ae(ne,se,fe,"\u22b3","\\vartriangleright"),ae(ne,se,fe,"\u22b5","\\trianglerighteq"),ae(ne,se,fe,"\u22a9","\\Vdash",!0),ae(ne,se,fe,"\u2223","\\shortmid"),ae(ne,se,fe,"\u2225","\\shortparallel"),ae(ne,se,fe,"\u226c","\\between",!0),ae(ne,se,fe,"\u22d4","\\pitchfork",!0),ae(ne,se,fe,"\u221d","\\varpropto"),ae(ne,se,fe,"\u25c0","\\blacktriangleleft"),ae(ne,se,fe,"\u2234","\\therefore",!0),ae(ne,se,fe,"\u220d","\\backepsilon"),ae(ne,se,fe,"\u25b6","\\blacktriangleright"),ae(ne,se,fe,"\u2235","\\because",!0),ae(ne,se,fe,"\u22d8","\\llless"),ae(ne,se,fe,"\u22d9","\\gggtr"),ae(ne,se,he,"\u22b2","\\lhd"),ae(ne,se,he,"\u22b3","\\rhd"),ae(ne,se,fe,"\u2242","\\eqsim",!0),ae(ne,oe,fe,"\u22c8","\\Join"),ae(ne,se,fe,"\u2251","\\Doteq",!0),ae(ne,se,he,"\u2214","\\dotplus",!0),ae(ne,se,he,"\u2216","\\smallsetminus"),ae(ne,se,he,"\u22d2","\\Cap",!0),ae(ne,se,he,"\u22d3","\\Cup",!0),ae(ne,se,he,"\u2a5e","\\doublebarwedge",!0),ae(ne,se,he,"\u229f","\\boxminus",!0),ae(ne,se,he,"\u229e","\\boxplus",!0),ae(ne,se,he,"\u22c7","\\divideontimes",!0),ae(ne,se,he,"\u22c9","\\ltimes",!0),ae(ne,se,he,"\u22ca","\\rtimes",!0),ae(ne,se,he,"\u22cb","\\leftthreetimes",!0),ae(ne,se,he,"\u22cc","\\rightthreetimes",!0),ae(ne,se,he,"\u22cf","\\curlywedge",!0),ae(ne,se,he,"\u22ce","\\curlyvee",!0),ae(ne,se,he,"\u229d","\\circleddash",!0),ae(ne,se,he,"\u229b","\\circledast",!0),ae(ne,se,he,"\u22c5","\\centerdot"),ae(ne,se,he,"\u22ba","\\intercal",!0),ae(ne,se,he,"\u22d2","\\doublecap"),ae(ne,se,he,"\u22d3","\\doublecup"),ae(ne,se,he,"\u22a0","\\boxtimes",!0),ae(ne,se,fe,"\u21e2","\\dashrightarrow",!0),ae(ne,se,fe,"\u21e0","\\dashleftarrow",!0),ae(ne,se,fe,"\u21c7","\\leftleftarrows",!0),ae(ne,se,fe,"\u21c6","\\leftrightarrows",!0),ae(ne,se,fe,"\u21da","\\Lleftarrow",!0),ae(ne,se,fe,"\u219e","\\twoheadleftarrow",!0),ae(ne,se,fe,"\u21a2","\\leftarrowtail",!0),ae(ne,se,fe,"\u21ab","\\looparrowleft",!0),ae(ne,se,fe,"\u21cb","\\leftrightharpoons",!0),ae(ne,se,fe,"\u21b6","\\curvearrowleft",!0),ae(ne,se,fe,"\u21ba","\\circlearrowleft",!0),ae(ne,se,fe,"\u21b0","\\Lsh",!0),ae(ne,se,fe,"\u21c8","\\upuparrows",!0),ae(ne,se,fe,"\u21bf","\\upharpoonleft",!0),ae(ne,se,fe,"\u21c3","\\downharpoonleft",!0),ae(ne,oe,fe,"\u22b6","\\origof",!0),ae(ne,oe,fe,"\u22b7","\\imageof",!0),ae(ne,se,fe,"\u22b8","\\multimap",!0),ae(ne,se,fe,"\u21ad","\\leftrightsquigarrow",!0),ae(ne,se,fe,"\u21c9","\\rightrightarrows",!0),ae(ne,se,fe,"\u21c4","\\rightleftarrows",!0),ae(ne,se,fe,"\u21a0","\\twoheadrightarrow",!0),ae(ne,se,fe,"\u21a3","\\rightarrowtail",!0),ae(ne,se,fe,"\u21ac","\\looparrowright",!0),ae(ne,se,fe,"\u21b7","\\curvearrowright",!0),ae(ne,se,fe,"\u21bb","\\circlearrowright",!0),ae(ne,se,fe,"\u21b1","\\Rsh",!0),ae(ne,se,fe,"\u21ca","\\downdownarrows",!0),ae(ne,se,fe,"\u21be","\\upharpoonright",!0),ae(ne,se,fe,"\u21c2","\\downharpoonright",!0),ae(ne,se,fe,"\u21dd","\\rightsquigarrow",!0),ae(ne,se,fe,"\u21dd","\\leadsto"),ae(ne,se,fe,"\u21db","\\Rrightarrow",!0),ae(ne,se,fe,"\u21be","\\restriction"),ae(ne,oe,be,"\u2018","`"),ae(ne,oe,be,"$","\\$"),ae(ie,oe,be,"$","\\$"),ae(ie,oe,be,"$","\\textdollar"),ae(ne,oe,be,"%","\\%"),ae(ie,oe,be,"%","\\%"),ae(ne,oe,be,"_","\\_"),ae(ie,oe,be,"_","\\_"),ae(ie,oe,be,"_","\\textunderscore"),ae(ne,oe,be,"\u2220","\\angle",!0),ae(ne,oe,be,"\u221e","\\infty",!0),ae(ne,oe,be,"\u2032","\\prime"),ae(ne,oe,be,"\u25b3","\\triangle"),ae(ne,oe,be,"\u0393","\\Gamma",!0),ae(ne,oe,be,"\u0394","\\Delta",!0),ae(ne,oe,be,"\u0398","\\Theta",!0),ae(ne,oe,be,"\u039b","\\Lambda",!0),ae(ne,oe,be,"\u039e","\\Xi",!0),ae(ne,oe,be,"\u03a0","\\Pi",!0),ae(ne,oe,be,"\u03a3","\\Sigma",!0),ae(ne,oe,be,"\u03a5","\\Upsilon",!0),ae(ne,oe,be,"\u03a6","\\Phi",!0),ae(ne,oe,be,"\u03a8","\\Psi",!0),ae(ne,oe,be,"\u03a9","\\Omega",!0),ae(ne,oe,be,"A","\u0391"),ae(ne,oe,be,"B","\u0392"),ae(ne,oe,be,"E","\u0395"),ae(ne,oe,be,"Z","\u0396"),ae(ne,oe,be,"H","\u0397"),ae(ne,oe,be,"I","\u0399"),ae(ne,oe,be,"K","\u039a"),ae(ne,oe,be,"M","\u039c"),ae(ne,oe,be,"N","\u039d"),ae(ne,oe,be,"O","\u039f"),ae(ne,oe,be,"P","\u03a1"),ae(ne,oe,be,"T","\u03a4"),ae(ne,oe,be,"X","\u03a7"),ae(ne,oe,be,"\xac","\\neg",!0),ae(ne,oe,be,"\xac","\\lnot"),ae(ne,oe,be,"\u22a4","\\top"),ae(ne,oe,be,"\u22a5","\\bot"),ae(ne,oe,be,"\u2205","\\emptyset"),ae(ne,se,be,"\u2205","\\varnothing"),ae(ne,oe,ue,"\u03b1","\\alpha",!0),ae(ne,oe,ue,"\u03b2","\\beta",!0),ae(ne,oe,ue,"\u03b3","\\gamma",!0),ae(ne,oe,ue,"\u03b4","\\delta",!0),ae(ne,oe,ue,"\u03f5","\\epsilon",!0),ae(ne,oe,ue,"\u03b6","\\zeta",!0),ae(ne,oe,ue,"\u03b7","\\eta",!0),ae(ne,oe,ue,"\u03b8","\\theta",!0),ae(ne,oe,ue,"\u03b9","\\iota",!0),ae(ne,oe,ue,"\u03ba","\\kappa",!0),ae(ne,oe,ue,"\u03bb","\\lambda",!0),ae(ne,oe,ue,"\u03bc","\\mu",!0),ae(ne,oe,ue,"\u03bd","\\nu",!0),ae(ne,oe,ue,"\u03be","\\xi",!0),ae(ne,oe,ue,"\u03bf","\\omicron",!0),ae(ne,oe,ue,"\u03c0","\\pi",!0),ae(ne,oe,ue,"\u03c1","\\rho",!0),ae(ne,oe,ue,"\u03c3","\\sigma",!0),ae(ne,oe,ue,"\u03c4","\\tau",!0),ae(ne,oe,ue,"\u03c5","\\upsilon",!0),ae(ne,oe,ue,"\u03d5","\\phi",!0),ae(ne,oe,ue,"\u03c7","\\chi",!0),ae(ne,oe,ue,"\u03c8","\\psi",!0),ae(ne,oe,ue,"\u03c9","\\omega",!0),ae(ne,oe,ue,"\u03b5","\\varepsilon",!0),ae(ne,oe,ue,"\u03d1","\\vartheta",!0),ae(ne,oe,ue,"\u03d6","\\varpi",!0),ae(ne,oe,ue,"\u03f1","\\varrho",!0),ae(ne,oe,ue,"\u03c2","\\varsigma",!0),ae(ne,oe,ue,"\u03c6","\\varphi",!0),ae(ne,oe,he,"\u2217","*",!0),ae(ne,oe,he,"+","+"),ae(ne,oe,he,"\u2212","-",!0),ae(ne,oe,he,"\u22c5","\\cdot",!0),ae(ne,oe,he,"\u2218","\\circ",!0),ae(ne,oe,he,"\xf7","\\div",!0),ae(ne,oe,he,"\xb1","\\pm",!0),ae(ne,oe,he,"\xd7","\\times",!0),ae(ne,oe,he,"\u2229","\\cap",!0),ae(ne,oe,he,"\u222a","\\cup",!0),ae(ne,oe,he,"\u2216","\\setminus",!0),ae(ne,oe,he,"\u2227","\\land"),ae(ne,oe,he,"\u2228","\\lor"),ae(ne,oe,he,"\u2227","\\wedge",!0),ae(ne,oe,he,"\u2228","\\vee",!0),ae(ne,oe,be,"\u221a","\\surd"),ae(ne,oe,de,"\u27e8","\\langle",!0),ae(ne,oe,de,"\u2223","\\lvert"),ae(ne,oe,de,"\u2225","\\lVert"),ae(ne,oe,me,"?","?"),ae(ne,oe,me,"!","!"),ae(ne,oe,me,"\u27e9","\\rangle",!0),ae(ne,oe,me,"\u2223","\\rvert"),ae(ne,oe,me,"\u2225","\\rVert"),ae(ne,oe,fe,"=","="),ae(ne,oe,fe,":",":"),ae(ne,oe,fe,"\u2248","\\approx",!0),ae(ne,oe,fe,"\u2245","\\cong",!0),ae(ne,oe,fe,"\u2265","\\ge"),ae(ne,oe,fe,"\u2265","\\geq",!0),ae(ne,oe,fe,"\u2190","\\gets"),ae(ne,oe,fe,">","\\gt",!0),ae(ne,oe,fe,"\u2208","\\in",!0),ae(ne,oe,fe,"\ue020","\\@not"),ae(ne,oe,fe,"\u2282","\\subset",!0),ae(ne,oe,fe,"\u2283","\\supset",!0),ae(ne,oe,fe,"\u2286","\\subseteq",!0),ae(ne,oe,fe,"\u2287","\\supseteq",!0),ae(ne,se,fe,"\u2288","\\nsubseteq",!0),ae(ne,se,fe,"\u2289","\\nsupseteq",!0),ae(ne,oe,fe,"\u22a8","\\models"),ae(ne,oe,fe,"\u2190","\\leftarrow",!0),ae(ne,oe,fe,"\u2264","\\le"),ae(ne,oe,fe,"\u2264","\\leq",!0),ae(ne,oe,fe,"<","\\lt",!0),ae(ne,oe,fe,"\u2192","\\rightarrow",!0),ae(ne,oe,fe,"\u2192","\\to"),ae(ne,se,fe,"\u2271","\\ngeq",!0),ae(ne,se,fe,"\u2270","\\nleq",!0),ae(ne,oe,ve,"\xa0","\\ "),ae(ne,oe,ve,"\xa0","\\space"),ae(ne,oe,ve,"\xa0","\\nobreakspace"),ae(ie,oe,ve,"\xa0","\\ "),ae(ie,oe,ve,"\xa0"," "),ae(ie,oe,ve,"\xa0","\\space"),ae(ie,oe,ve,"\xa0","\\nobreakspace"),ae(ne,oe,ve,null,"\\nobreak"),ae(ne,oe,ve,null,"\\allowbreak"),ae(ne,oe,ge,",",","),ae(ne,oe,ge,";",";"),ae(ne,se,he,"\u22bc","\\barwedge",!0),ae(ne,se,he,"\u22bb","\\veebar",!0),ae(ne,oe,he,"\u2299","\\odot",!0),ae(ne,oe,he,"\u2295","\\oplus",!0),ae(ne,oe,he,"\u2297","\\otimes",!0),ae(ne,oe,be,"\u2202","\\partial",!0),ae(ne,oe,he,"\u2298","\\oslash",!0),ae(ne,se,he,"\u229a","\\circledcirc",!0),ae(ne,se,he,"\u22a1","\\boxdot",!0),ae(ne,oe,he,"\u25b3","\\bigtriangleup"),ae(ne,oe,he,"\u25bd","\\bigtriangledown"),ae(ne,oe,he,"\u2020","\\dagger"),ae(ne,oe,he,"\u22c4","\\diamond"),ae(ne,oe,he,"\u22c6","\\star"),ae(ne,oe,he,"\u25c3","\\triangleleft"),ae(ne,oe,he,"\u25b9","\\triangleright"),ae(ne,oe,de,"{","\\{"),ae(ie,oe,be,"{","\\{"),ae(ie,oe,be,"{","\\textbraceleft"),ae(ne,oe,me,"}","\\}"),ae(ie,oe,be,"}","\\}"),ae(ie,oe,be,"}","\\textbraceright"),ae(ne,oe,de,"{","\\lbrace"),ae(ne,oe,me,"}","\\rbrace"),ae(ne,oe,de,"[","\\lbrack",!0),ae(ie,oe,be,"[","\\lbrack",!0),ae(ne,oe,me,"]","\\rbrack",!0),ae(ie,oe,be,"]","\\rbrack",!0),ae(ne,oe,de,"(","\\lparen",!0),ae(ne,oe,me,")","\\rparen",!0),ae(ie,oe,be,"<","\\textless",!0),ae(ie,oe,be,">","\\textgreater",!0),ae(ne,oe,de,"\u230a","\\lfloor",!0),ae(ne,oe,me,"\u230b","\\rfloor",!0),ae(ne,oe,de,"\u2308","\\lceil",!0),ae(ne,oe,me,"\u2309","\\rceil",!0),ae(ne,oe,be,"\\","\\backslash"),ae(ne,oe,be,"\u2223","|"),ae(ne,oe,be,"\u2223","\\vert"),ae(ie,oe,be,"|","\\textbar",!0),ae(ne,oe,be,"\u2225","\\|"),ae(ne,oe,be,"\u2225","\\Vert"),ae(ie,oe,be,"\u2225","\\textbardbl"),ae(ie,oe,be,"~","\\textasciitilde"),ae(ie,oe,be,"\\","\\textbackslash"),ae(ie,oe,be,"^","\\textasciicircum"),ae(ne,oe,fe,"\u2191","\\uparrow",!0),ae(ne,oe,fe,"\u21d1","\\Uparrow",!0),ae(ne,oe,fe,"\u2193","\\downarrow",!0),ae(ne,oe,fe,"\u21d3","\\Downarrow",!0),ae(ne,oe,fe,"\u2195","\\updownarrow",!0),ae(ne,oe,fe,"\u21d5","\\Updownarrow",!0),ae(ne,oe,pe,"\u2210","\\coprod"),ae(ne,oe,pe,"\u22c1","\\bigvee"),ae(ne,oe,pe,"\u22c0","\\bigwedge"),ae(ne,oe,pe,"\u2a04","\\biguplus"),ae(ne,oe,pe,"\u22c2","\\bigcap"),ae(ne,oe,pe,"\u22c3","\\bigcup"),ae(ne,oe,pe,"\u222b","\\int"),ae(ne,oe,pe,"\u222b","\\intop"),ae(ne,oe,pe,"\u222c","\\iint"),ae(ne,oe,pe,"\u222d","\\iiint"),ae(ne,oe,pe,"\u220f","\\prod"),ae(ne,oe,pe,"\u2211","\\sum"),ae(ne,oe,pe,"\u2a02","\\bigotimes"),ae(ne,oe,pe,"\u2a01","\\bigoplus"),ae(ne,oe,pe,"\u2a00","\\bigodot"),ae(ne,oe,pe,"\u222e","\\oint"),ae(ne,oe,pe,"\u222f","\\oiint"),ae(ne,oe,pe,"\u2230","\\oiiint"),ae(ne,oe,pe,"\u2a06","\\bigsqcup"),ae(ne,oe,pe,"\u222b","\\smallint"),ae(ie,oe,ce,"\u2026","\\textellipsis"),ae(ne,oe,ce,"\u2026","\\mathellipsis"),ae(ie,oe,ce,"\u2026","\\ldots",!0),ae(ne,oe,ce,"\u2026","\\ldots",!0),ae(ne,oe,ce,"\u22ef","\\@cdots",!0),ae(ne,oe,ce,"\u22f1","\\ddots",!0),ae(ne,oe,be,"\u22ee","\\varvdots"),ae(ie,oe,be,"\u22ee","\\varvdots"),ae(ne,oe,le,"\u02ca","\\acute"),ae(ne,oe,le,"\u02cb","\\grave"),ae(ne,oe,le,"\xa8","\\ddot"),ae(ne,oe,le,"~","\\tilde"),ae(ne,oe,le,"\u02c9","\\bar"),ae(ne,oe,le,"\u02d8","\\breve"),ae(ne,oe,le,"\u02c7","\\check"),ae(ne,oe,le,"^","\\hat"),ae(ne,oe,le,"\u20d7","\\vec"),ae(ne,oe,le,"\u02d9","\\dot"),ae(ne,oe,le,"\u02da","\\mathring"),ae(ne,oe,ue,"\ue131","\\@imath"),ae(ne,oe,ue,"\ue237","\\@jmath"),ae(ne,oe,be,"\u0131","\u0131"),ae(ne,oe,be,"\u0237","\u0237"),ae(ie,oe,be,"\u0131","\\i",!0),ae(ie,oe,be,"\u0237","\\j",!0),ae(ie,oe,be,"\xdf","\\ss",!0),ae(ie,oe,be,"\xe6","\\ae",!0),ae(ie,oe,be,"\u0153","\\oe",!0),ae(ie,oe,be,"\xf8","\\o",!0),ae(ie,oe,be,"\xc6","\\AE",!0),ae(ie,oe,be,"\u0152","\\OE",!0),ae(ie,oe,be,"\xd8","\\O",!0),ae(ie,oe,le,"\u02ca","\\'"),ae(ie,oe,le,"\u02cb","\\`"),ae(ie,oe,le,"\u02c6","\\^"),ae(ie,oe,le,"\u02dc","\\~"),ae(ie,oe,le,"\u02c9","\\="),ae(ie,oe,le,"\u02d8","\\u"),ae(ie,oe,le,"\u02d9","\\."),ae(ie,oe,le,"\xb8","\\c"),ae(ie,oe,le,"\u02da","\\r"),ae(ie,oe,le,"\u02c7","\\v"),ae(ie,oe,le,"\xa8",'\\"'),ae(ie,oe,le,"\u02dd","\\H"),ae(ie,oe,le,"\u25ef","\\textcircled");var ye={"--":!0,"---":!0,"``":!0,"''":!0};ae(ie,oe,be,"\u2013","--",!0),ae(ie,oe,be,"\u2013","\\textendash"),ae(ie,oe,be,"\u2014","---",!0),ae(ie,oe,be,"\u2014","\\textemdash"),ae(ie,oe,be,"\u2018","`",!0),ae(ie,oe,be,"\u2018","\\textquoteleft"),ae(ie,oe,be,"\u2019","'",!0),ae(ie,oe,be,"\u2019","\\textquoteright"),ae(ie,oe,be,"\u201c","``",!0),ae(ie,oe,be,"\u201c","\\textquotedblleft"),ae(ie,oe,be,"\u201d","''",!0),ae(ie,oe,be,"\u201d","\\textquotedblright"),ae(ne,oe,be,"\xb0","\\degree",!0),ae(ie,oe,be,"\xb0","\\degree"),ae(ie,oe,be,"\xb0","\\textdegree",!0),ae(ne,oe,be,"\xa3","\\pounds"),ae(ne,oe,be,"\xa3","\\mathsterling",!0),ae(ie,oe,be,"\xa3","\\pounds"),ae(ie,oe,be,"\xa3","\\textsterling",!0),ae(ne,se,be,"\u2720","\\maltese"),ae(ie,se,be,"\u2720","\\maltese");for(var xe='0123456789/@."',we=0;we<14;we++){var ke=xe.charAt(we);ae(ne,oe,be,ke,ke)}for(var Se='0123456789!@*()-=+";:?/.,',ze=0;ze<25;ze++){var Me=Se.charAt(ze);ae(ie,oe,be,Me,Me)}for(var Ae="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Te=0;Te<52;Te++){var Be=Ae.charAt(Te);ae(ne,oe,ue,Be,Be),ae(ie,oe,be,Be,Be)}ae(ne,se,be,"C","\u2102"),ae(ie,se,be,"C","\u2102"),ae(ne,se,be,"H","\u210d"),ae(ie,se,be,"H","\u210d"),ae(ne,se,be,"N","\u2115"),ae(ie,se,be,"N","\u2115"),ae(ne,se,be,"P","\u2119"),ae(ie,se,be,"P","\u2119"),ae(ne,se,be,"Q","\u211a"),ae(ie,se,be,"Q","\u211a"),ae(ne,se,be,"R","\u211d"),ae(ie,se,be,"R","\u211d"),ae(ne,se,be,"Z","\u2124"),ae(ie,se,be,"Z","\u2124"),ae(ne,oe,ue,"h","\u210e"),ae(ie,oe,ue,"h","\u210e");for(var qe="",Ce=0;Ce<52;Ce++){var Ie=Ae.charAt(Ce);ae(ne,oe,ue,Ie,qe=String.fromCharCode(55349,56320+Ce)),ae(ie,oe,be,Ie,qe),ae(ne,oe,ue,Ie,qe=String.fromCharCode(55349,56372+Ce)),ae(ie,oe,be,Ie,qe),ae(ne,oe,ue,Ie,qe=String.fromCharCode(55349,56424+Ce)),ae(ie,oe,be,Ie,qe),ae(ne,oe,ue,Ie,qe=String.fromCharCode(55349,56580+Ce)),ae(ie,oe,be,Ie,qe),ae(ne,oe,ue,Ie,qe=String.fromCharCode(55349,56684+Ce)),ae(ie,oe,be,Ie,qe),ae(ne,oe,ue,Ie,qe=String.fromCharCode(55349,56736+Ce)),ae(ie,oe,be,Ie,qe),ae(ne,oe,ue,Ie,qe=String.fromCharCode(55349,56788+Ce)),ae(ie,oe,be,Ie,qe),ae(ne,oe,ue,Ie,qe=String.fromCharCode(55349,56840+Ce)),ae(ie,oe,be,Ie,qe),ae(ne,oe,ue,Ie,qe=String.fromCharCode(55349,56944+Ce)),ae(ie,oe,be,Ie,qe),Ce<26&&(ae(ne,oe,ue,Ie,qe=String.fromCharCode(55349,56632+Ce)),ae(ie,oe,be,Ie,qe),ae(ne,oe,ue,Ie,qe=String.fromCharCode(55349,56476+Ce)),ae(ie,oe,be,Ie,qe))}ae(ne,oe,ue,"k",qe=String.fromCharCode(55349,56668)),ae(ie,oe,be,"k",qe);for(var Re=0;Re<10;Re++){var He=Re.toString();ae(ne,oe,ue,He,qe=String.fromCharCode(55349,57294+Re)),ae(ie,oe,be,He,qe),ae(ne,oe,ue,He,qe=String.fromCharCode(55349,57314+Re)),ae(ie,oe,be,He,qe),ae(ne,oe,ue,He,qe=String.fromCharCode(55349,57324+Re)),ae(ie,oe,be,He,qe),ae(ne,oe,ue,He,qe=String.fromCharCode(55349,57334+Re)),ae(ie,oe,be,He,qe)}for(var Ee="\xd0\xde\xfe",Ne=0;Ne<3;Ne++){var Oe=Ee.charAt(Ne);ae(ne,oe,ue,Oe,Oe),ae(ie,oe,be,Oe,Oe)}var De=[["mathbf","textbf","Main-Bold"],["mathbf","textbf","Main-Bold"],["mathnormal","textit","Math-Italic"],["mathnormal","textit","Math-Italic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["mathscr","textscr","Script-Regular"],["","",""],["","",""],["","",""],["mathfrak","textfrak","Fraktur-Regular"],["mathfrak","textfrak","Fraktur-Regular"],["mathbb","textbb","AMS-Regular"],["mathbb","textbb","AMS-Regular"],["mathboldfrak","textboldfrak","Fraktur-Regular"],["mathboldfrak","textboldfrak","Fraktur-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathitsf","textitsf","SansSerif-Italic"],["mathitsf","textitsf","SansSerif-Italic"],["","",""],["","",""],["mathtt","texttt","Typewriter-Regular"],["mathtt","texttt","Typewriter-Regular"]],Le=[["mathbf","textbf","Main-Bold"],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathtt","texttt","Typewriter-Regular"]],Pe=function(e,t,r){if(re[r][e]){var a=re[r][e].replace;a&&(e=a)}return{value:e,metrics:J(e,t,r)}},Fe=function(e,t,r,a,n){var i,o=Pe(e,t,r),s=o.metrics;if(e=o.value,s){var l=s.italic;("text"===r||a&&"mathit"===a.font)&&(l=0),i=new Y(e,s.height,s.depth,l,s.skew,s.width,n)}else"undefined"!=typeof console&&console.warn("No character metrics for '"+e+"' in style '"+t+"' and mode '"+r+"'"),i=new Y(e,0,0,0,0,0,n);if(a){i.maxFontSize=a.sizeMultiplier,a.style.isTight()&&i.classes.push("mtight");var h=a.getColor();h&&(i.style.color=h)}return i},Ve=function(e,t,r,a){return void 0===a&&(a=[]),"boldsymbol"===r.font&&Pe(e,"Main-Bold",t).metrics?Fe(e,"Main-Bold",t,r,a.concat(["mathbf"])):"\\"===e||"main"===re[t][e].font?Fe(e,"Main-Regular",t,r,a):Fe(e,"AMS-Regular",t,r,a.concat(["amsrm"]))},Ge=function(e,t,r){var n=e.mode,i=e.text,o=["mord"],s="math"===n||"text"===n&&t.font,l=s?t.font:t.fontFamily,h="",m="";if(55349===i.charCodeAt(0)&&([h,m]=((e,t)=>{var r=1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536,n="math"===t?0:1;if(119808<=r&&r<120484){var i=Math.floor((r-119808)/26);return[De[i][2],De[i][n]]}if(120782<=r&&r<=120831){var o=Math.floor((r-120782)/10);return[Le[o][2],Le[o][n]]}if(120485===r||120486===r)return[De[0][2],De[0][n]];if(120486<r&&r<120782)return["",""];throw new a("Unsupported character: "+e)})(i,n)),h.length>0)return Fe(i,h,n,t,o.concat(m));if(l){var c,u;if("boldsymbol"===l){var p=function(e,t,r,a,n){return"textord"!==n&&Pe(e,"Math-BoldItalic",t).metrics?{fontName:"Math-BoldItalic",fontClass:"boldsymbol"}:{fontName:"Main-Bold",fontClass:"mathbf"}}(i,n,0,0,r);c=p.fontName,u=[p.fontClass]}else s?(c=et[l].fontName,u=[l]):(c=Qe(l,t.fontWeight,t.fontShape),u=[l,t.fontWeight,t.fontShape]);if(Pe(i,c,n).metrics)return Fe(i,c,n,t,o.concat(u));if(ye.hasOwnProperty(i)&&"Typewriter"===c.slice(0,10)){for(var d=[],g=0;g<i.length;g++)d.push(Fe(i[g],c,n,t,o.concat(u)));return $e(d)}}if("mathord"===r)return Fe(i,"Math-Italic",n,t,o.concat(["mathnormal"]));if("textord"===r){var f=re[n][i]&&re[n][i].font;if("ams"===f){var v=Qe("amsrm",t.fontWeight,t.fontShape);return Fe(i,v,n,t,o.concat("amsrm",t.fontWeight,t.fontShape))}if("main"!==f&&f){var b=Qe(f,t.fontWeight,t.fontShape);return Fe(i,b,n,t,o.concat(b,t.fontWeight,t.fontShape))}var y=Qe("textrm",t.fontWeight,t.fontShape);return Fe(i,y,n,t,o.concat(t.fontWeight,t.fontShape))}throw new Error("unexpected type: "+r+" in makeOrd")},Ue=(e,t)=>{if(O(e.classes)!==O(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize||0!==e.italic&&e.hasClass("mathnormal"))return!1;if(1===e.classes.length){var r=e.classes[0];if("mbin"===r||"mord"===r)return!1}for(var a of Object.keys(e.style))if(e.style[a]!==t.style[a])return!1;for(var n of Object.keys(t.style))if(e.style[n]!==t.style[n])return!1;return!0},Xe=e=>{for(var t=0;t<e.length-1;t++){var r=e[t],a=e[t+1];r instanceof Y&&a instanceof Y&&Ue(r,a)&&(r.text+=a.text,r.height=Math.max(r.height,a.height),r.depth=Math.max(r.depth,a.depth),r.italic=a.italic,e.splice(t+1,1),t--)}return e},Ye=function(e){for(var t=0,r=0,a=0,n=0;n<e.children.length;n++){var i=e.children[n];i.height>t&&(t=i.height),i.depth>r&&(r=i.depth),i.maxFontSize>a&&(a=i.maxFontSize)}e.height=t,e.depth=r,e.maxFontSize=a},We=function(e,t,r,a){var n=new V(e,t,r,a);return Ye(n),n},je=(e,t,r,a)=>new V(e,t,r,a),_e=function(e,t,r){var a=We([e],[],t);return a.height=Math.max(r||t.fontMetrics().defaultRuleThickness,t.minRuleThickness),a.style.borderBottomWidth=N(a.height),a.maxFontSize=1,a},$e=function(e){var t=new C(e);return Ye(t),t},Ze=function(e,t){return e instanceof C?We([],[e],t):e},Ke=function(e,t){for(var{children:r,depth:a}=function(e){if("individualShift"===e.positionType){for(var t=e.children,r=[t[0]],a=-t[0].shift-t[0].elem.depth,n=a,i=1;i<t.length;i++){var o=-t[i].shift-n-t[i].elem.depth,s=o-(t[i-1].elem.height+t[i-1].elem.depth);n+=o,r.push({type:"kern",size:s}),r.push(t[i])}return{children:r,depth:a}}var l;if("top"===e.positionType){for(var h=e.positionData,m=0;m<e.children.length;m++){var c=e.children[m];h-="kern"===c.type?c.size:c.elem.height+c.elem.depth}l=h}else if("bottom"===e.positionType)l=-e.positionData;else{var u=e.children[0];if("elem"!==u.type)throw new Error('First child must have type "elem".');if("shift"===e.positionType)l=-u.elem.depth-e.positionData;else{if("firstBaseline"!==e.positionType)throw new Error("Invalid positionType "+e.positionType+".");l=-u.elem.depth}}return{children:e.children,depth:l}}(e),n=0,i=0;i<r.length;i++){var o=r[i];if("elem"===o.type){var s=o.elem;n=Math.max(n,s.maxFontSize,s.height)}}n+=2;var l=We(["pstrut"],[]);l.style.height=N(n);for(var h=[],m=a,c=a,u=a,p=0;p<r.length;p++){var d=r[p];if("kern"===d.type)u+=d.size;else{var g=d.elem,f=d.wrapperClasses||[],v=d.wrapperStyle||{},b=We(f,[l,g],void 0,v);b.style.top=N(-n-u-g.depth),d.marginLeft&&(b.style.marginLeft=d.marginLeft),d.marginRight&&(b.style.marginRight=d.marginRight),h.push(b),u+=g.height+g.depth}m=Math.min(m,u),c=Math.max(c,u)}var y,x=We(["vlist"],h);if(x.style.height=N(c),m<0){var w=We([],[]),k=We(["vlist"],[w]);k.style.height=N(-m);var S=We(["vlist-s"],[new Y("\u200b")]);y=[We(["vlist-r"],[x,S]),We(["vlist-r"],[k])]}else y=[We(["vlist-r"],[x])];var z=We(["vlist-t"],y);return 2===y.length&&z.classes.push("vlist-t2"),z.height=c,z.depth=-m,z},Je=(e,t)=>{var r=We(["mspace"],[],t),a=E(e,t);return r.style.marginRight=N(a),r},Qe=function(e,t,r){var a="";switch(e){case"amsrm":a="AMS";break;case"textrm":a="Main";break;case"textsf":a="SansSerif";break;case"texttt":a="Typewriter";break;default:a=e}return a+"-"+("textbf"===t&&"textit"===r?"BoldItalic":"textbf"===t?"Bold":"textit"===t?"Italic":"Regular")},et={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},tt={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},rt=function(e,t){var[r,a,n]=tt[e],i=new j(r),o=new W([i],{width:N(a),height:N(n),style:"width:"+N(a),viewBox:"0 0 "+1e3*a+" "+1e3*n,preserveAspectRatio:"xMinYMin"}),s=je(["overlay"],[o],t);return s.height=n,s.style.height=N(n),s.style.width=N(a),s},at={number:3,unit:"mu"},nt={number:4,unit:"mu"},it={number:5,unit:"mu"},ot={mord:{mop:at,mbin:nt,mrel:it,minner:at},mop:{mord:at,mop:at,mrel:it,minner:at},mbin:{mord:nt,mop:nt,mopen:nt,minner:nt},mrel:{mord:it,mop:it,mopen:it,minner:it},mopen:{},mclose:{mop:at,mbin:nt,mrel:it,minner:at},mpunct:{mord:at,mop:at,mrel:it,mopen:at,mclose:at,mpunct:at,minner:at},minner:{mord:at,mop:at,mbin:nt,mrel:it,mopen:at,mpunct:at,minner:at}},st={mord:{mop:at},mop:{mord:at,mop:at},mbin:{},mrel:{},mopen:{},mclose:{mop:at},mpunct:{},minner:{mop:at}},lt={},ht={},mt={};function ct(e){for(var{type:t,names:r,props:a,handler:n,htmlBuilder:i,mathmlBuilder:o}=e,s={type:t,numArgs:a.numArgs,argTypes:a.argTypes,allowedInArgument:!!a.allowedInArgument,allowedInText:!!a.allowedInText,allowedInMath:void 0===a.allowedInMath||a.allowedInMath,numOptionalArgs:a.numOptionalArgs||0,infix:!!a.infix,primitive:!!a.primitive,handler:n},l=0;l<r.length;++l)lt[r[l]]=s;t&&(i&&(ht[t]=i),o&&(mt[t]=o))}function ut(e){var{type:t,htmlBuilder:r,mathmlBuilder:a}=e;ct({type:t,names:[],props:{numArgs:0},handler(){throw new Error("Should never be called.")},htmlBuilder:r,mathmlBuilder:a})}var pt=function(e){return"ordgroup"===e.type&&1===e.body.length?e.body[0]:e},dt=function(e){return"ordgroup"===e.type?e.body:[e]},gt=new Set(["leftmost","mbin","mopen","mrel","mop","mpunct"]),ft=new Set(["rightmost","mrel","mclose","mpunct"]),vt={display:S.DISPLAY,text:S.TEXT,script:S.SCRIPT,scriptscript:S.SCRIPTSCRIPT},bt={mord:"mord",mop:"mop",mbin:"mbin",mrel:"mrel",mopen:"mopen",mclose:"mclose",mpunct:"mpunct",minner:"minner"},yt=function(e,t,r,a){void 0===a&&(a=[null,null]);for(var n=[],i=0;i<e.length;i++){var o=Mt(e[i],t);if(o instanceof C){var s=o.children;n.push(...s)}else n.push(o)}if(Xe(n),!r)return n;var l=t;if(1===e.length){var h=e[0];"sizing"===h.type?l=t.havingSize(h.size):"styling"===h.type&&(l=t.havingStyle(vt[h.style]))}var m=We([a[0]||"leftmost"],[],t),c=We([a[1]||"rightmost"],[],t),u="root"===r;return xt(n,(e,t)=>{var r=t.classes[0],a=e.classes[0];"mbin"===r&&ft.has(a)?t.classes[0]="mord":"mbin"===a&>.has(r)&&(e.classes[0]="mord")},{node:m},c,u),xt(n,(e,t)=>{var r,a,n=St(t),i=St(e),o=n&&i?e.hasClass("mtight")?null==(r=st[n])?void 0:r[i]:null==(a=ot[n])?void 0:a[i]:null;if(o)return Je(o,l)},{node:m},c,u),n},xt=function(e,t,r,a,n){a&&e.push(a);for(var i=0;i<e.length;i++){var o=e[i],s=wt(o);if(s)xt(s.children,t,r,null,n);else{var l=!o.hasClass("mspace");if(l){var h=t(o,r.node);h&&(r.insertAfter?r.insertAfter(h):(e.unshift(h),i++))}l?r.node=o:n&&o.hasClass("newline")&&(r.node=We(["leftmost"])),r.insertAfter=(t=>r=>{e.splice(t+1,0,r),i++})(i)}}a&&e.pop()},wt=function(e){return e instanceof C||e instanceof G||e instanceof V&&e.hasClass("enclosing")?e:null},kt=function(e,t){var r=wt(e);if(r){var a=r.children;if(a.length){if("right"===t)return kt(a[a.length-1],"right");if("left"===t)return kt(a[0],"left")}}return e},St=function(e,t){if(!e)return null;t&&(e=kt(e,t));var r=e.classes[0];return bt[r]||null},zt=function(e,t){var r=["nulldelimiter"].concat(e.baseSizingClasses());return We(t.concat(r))},Mt=function(e,t,r){if(!e)return We();if(ht[e.type]){var n=ht[e.type](e,t);if(r&&t.size!==r.size){n=We(t.sizingClasses(r),[n],t);var i=t.sizeMultiplier/r.sizeMultiplier;n.height*=i,n.depth*=i}return n}throw new a("Got group of unknown type: '"+e.type+"'")};function At(e,t){var r=We(["base"],e,t),a=We(["strut"]);return a.style.height=N(r.height+r.depth),r.depth&&(a.style.verticalAlign=N(-r.depth)),r.children.unshift(a),r}function Tt(e,t){var r=null;1===e.length&&"tag"===e[0].type&&(r=e[0].tag,e=e[0].body);var a,n=yt(e,t,"root");2===n.length&&n[1].hasClass("tag")&&(a=n.pop());for(var i,o=[],s=[],l=0;l<n.length;l++)if(s.push(n[l]),n[l].hasClass("mbin")||n[l].hasClass("mrel")||n[l].hasClass("allowbreak")){for(var h=!1;l<n.length-1&&n[l+1].hasClass("mspace")&&!n[l+1].hasClass("newline");)l++,s.push(n[l]),n[l].hasClass("nobreak")&&(h=!0);h||(o.push(At(s,t)),s=[])}else n[l].hasClass("newline")&&(s.pop(),s.length>0&&(o.push(At(s,t)),s=[]),o.push(n[l]));s.length>0&&o.push(At(s,t)),r?((i=At(yt(r,t,!0),t)).classes=["tag"],o.push(i)):a&&o.push(a);var m=We(["katex-html"],o);if(m.setAttribute("aria-hidden","true"),i){var c=i.children[0];c.style.height=N(m.height+m.depth),m.depth&&(c.style.verticalAlign=N(-m.depth))}return m}function Bt(e){return new C(e)}class qt{constructor(e,t,r){this.type=e,this.attributes={},this.children=t||[],this.classes=r||[]}setAttribute(e,t){this.attributes[e]=t}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);this.classes.length>0&&(e.className=O(this.classes));for(var r=0;r<this.children.length;r++)if(this.children[r]instanceof Ct&&this.children[r+1]instanceof Ct){for(var a=this.children[r].toText()+this.children[++r].toText();this.children[r+1]instanceof Ct;)a+=this.children[++r].toText();e.appendChild(new Ct(a).toNode())}else e.appendChild(this.children[r].toNode());return e}toMarkup(){var e="<"+this.type;for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=" "+t+'="',e+=l(this.attributes[t]),e+='"');this.classes.length>0&&(e+=' class ="'+l(O(this.classes))+'"'),e+=">";for(var r=0;r<this.children.length;r++)e+=this.children[r].toMarkup();return e+="</"+this.type+">"}toText(){return this.children.map(e=>e.toText()).join("")}}class Ct{constructor(e){this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return l(this.toText())}toText(){return this.text}}class It{constructor(e){this.width=e,this.character=e>=.05555&&e<=.05556?"\u200a":e>=.1666&&e<=.1667?"\u2009":e>=.2222&&e<=.2223?"\u2005":e>=.2777&&e<=.2778?"\u2005\u200a":e>=-.05556&&e<=-.05555?"\u200a\u2063":e>=-.1667&&e<=-.1666?"\u2009\u2063":e>=-.2223&&e<=-.2222?"\u205f\u2063":e>=-.2778&&e<=-.2777?"\u2005\u2063":null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",N(this.width)),e}toMarkup(){return this.character?"<mtext>"+this.character+"</mtext>":'<mspace width="'+N(this.width)+'"/>'}toText(){return this.character?this.character:" "}}var Rt=new Set(["\\imath","\\jmath"]),Ht=new Set(["mrow","mtable"]),Et=function(e,t,r){return!re[t][e]||!re[t][e].replace||55349===e.charCodeAt(0)||ye.hasOwnProperty(e)&&r&&(r.fontFamily&&"tt"===r.fontFamily.slice(4,6)||r.font&&"tt"===r.font.slice(4,6))||(e=re[t][e].replace),new Ct(e)},Nt=function(e){return 1===e.length?e[0]:new qt("mrow",e)},Ot=function(e,t){if("texttt"===t.fontFamily)return"monospace";if("textsf"===t.fontFamily)return"textit"===t.fontShape&&"textbf"===t.fontWeight?"sans-serif-bold-italic":"textit"===t.fontShape?"sans-serif-italic":"textbf"===t.fontWeight?"bold-sans-serif":"sans-serif";if("textit"===t.fontShape&&"textbf"===t.fontWeight)return"bold-italic";if("textit"===t.fontShape)return"italic";if("textbf"===t.fontWeight)return"bold";var r=t.font;if(!r||"mathnormal"===r)return null;var a=e.mode;if("mathit"===r)return"italic";if("boldsymbol"===r)return"textord"===e.type?"bold":"bold-italic";if("mathbf"===r)return"bold";if("mathbb"===r)return"double-struck";if("mathsfit"===r)return"sans-serif-italic";if("mathfrak"===r)return"fraktur";if("mathscr"===r||"mathcal"===r)return"script";if("mathsf"===r)return"sans-serif";if("mathtt"===r)return"monospace";var n=e.text;if(Rt.has(n))return null;if(re[a][n]){var i=re[a][n].replace;i&&(n=i)}return J(n,et[r].fontName,a)?et[r].variant:null};function Dt(e){if(!e)return!1;if("mi"===e.type&&1===e.children.length){var t=e.children[0];return t instanceof Ct&&"."===t.text}if("mo"===e.type&&1===e.children.length&&"true"===e.getAttribute("separator")&&"0em"===e.getAttribute("lspace")&&"0em"===e.getAttribute("rspace")){var r=e.children[0];return r instanceof Ct&&","===r.text}return!1}var Lt=function(e,t,r){if(1===e.length){var a=Ft(e[0],t);return r&&a instanceof qt&&"mo"===a.type&&(a.setAttribute("lspace","0em"),a.setAttribute("rspace","0em")),[a]}for(var n,i=[],o=0;o<e.length;o++){var s=Ft(e[o],t);if(s instanceof qt&&n instanceof qt){if("mtext"===s.type&&"mtext"===n.type&&s.getAttribute("mathvariant")===n.getAttribute("mathvariant")){n.children.push(...s.children);continue}if("mn"===s.type&&"mn"===n.type){n.children.push(...s.children);continue}if(Dt(s)&&"mn"===n.type){n.children.push(...s.children);continue}if("mn"===s.type&&Dt(n))s.children=[...n.children,...s.children],i.pop();else if(("msup"===s.type||"msub"===s.type)&&s.children.length>=1&&("mn"===n.type||Dt(n))){var l=s.children[0];l instanceof qt&&"mn"===l.type&&(l.children=[...n.children,...l.children],i.pop())}else if("mi"===n.type&&1===n.children.length){var h=n.children[0];if(h instanceof Ct&&"\u0338"===h.text&&("mo"===s.type||"mi"===s.type||"mn"===s.type)){var m=s.children[0];m instanceof Ct&&m.text.length>0&&(m.text=m.text.slice(0,1)+"\u0338"+m.text.slice(1),i.pop())}}}i.push(s),n=s}return i},Pt=function(e,t,r){return Nt(Lt(e,t,r))},Ft=function(e,t){if(!e)return new qt("mrow");if(mt[e.type])return mt[e.type](e,t);throw new a("Got group of unknown type: '"+e.type+"'")};function Vt(e,t,r,a,n){var i,o=Lt(e,r);i=1===o.length&&o[0]instanceof qt&&Ht.has(o[0].type)?o[0]:new qt("mrow",o);var s=new qt("annotation",[new Ct(t)]);s.setAttribute("encoding","application/x-tex");var l=new qt("semantics",[i,s]),h=new qt("math",[l]);return h.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),a&&h.setAttribute("display","block"),We([n?"katex":"katex-mathml"],[h])}var Gt=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],Ut=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],Xt=function(e,t){return t.size<2?e:Gt[e-1][t.size-1]};class Yt{constructor(e){this.style=e.style,this.color=e.color,this.size=e.size||Yt.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=Ut[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){var t={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};return Object.assign(t,e),new Yt(t)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:Xt(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:Ut[e-1]})}havingBaseStyle(e){e=e||this.style.text();var t=Xt(Yt.BASESIZE,e);return this.size===t&&this.textSize===Yt.BASESIZE&&this.style===e?this:this.extend({style:e,size:t})}havingBaseSizing(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==Yt.BASESIZE?["sizing","reset-size"+this.size,"size"+Yt.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=function(e){var t;if(!Q[t=e>=5?0:e>=3?1:2]){var r=Q[t]={cssEmPerMu:Z.quad[t]/18};for(var a in Z)Z.hasOwnProperty(a)&&(r[a]=Z[a][t])}return Q[t]}(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}}Yt.BASESIZE=6;var Wt=function(e){return new Yt({style:e.displayMode?S.DISPLAY:S.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},jt=function(e,t){if(t.displayMode){var r=["katex-display"];t.leqno&&r.push("leqno"),t.fleqn&&r.push("fleqn"),e=We(r,[e])}return e},_t={widehat:"^",widecheck:"\u02c7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23df",overbrace:"\u23de",underbracket:"\u23b5",overbracket:"\u23b4",overgroup:"\u23e0",undergroup:"\u23e1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21d2",xRightarrow:"\u21d2",overleftharpoon:"\u21bc",xleftharpoonup:"\u21bc",overrightharpoon:"\u21c0",xrightharpoonup:"\u21c0",xLeftarrow:"\u21d0",xLeftrightarrow:"\u21d4",xhookleftarrow:"\u21a9",xhookrightarrow:"\u21aa",xmapsto:"\u21a6",xrightharpoondown:"\u21c1",xleftharpoondown:"\u21bd",xrightleftharpoons:"\u21cc",xleftrightharpoons:"\u21cb",xtwoheadleftarrow:"\u219e",xtwoheadrightarrow:"\u21a0",xlongequal:"=",xtofrom:"\u21c4",xrightleftarrows:"\u21c4",xrightequilibrium:"\u21cc",xleftequilibrium:"\u21cb","\\cdrightarrow":"\u2192","\\cdleftarrow":"\u2190","\\cdlongequal":"="},$t=function(e){var t=new qt("mo",[new Ct(_t[e.replace(/^\\/,"")])]);return t.setAttribute("stretchy","true"),t},Zt={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overbracket:[["leftbracketover","rightbracketover"],1.6,440],underbracket:[["leftbracketunder","rightbracketunder"],1.6,410],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},Kt=new Set(["widehat","widecheck","widetilde","utilde"]),Jt=function(e,t){var{span:r,minWidth:a,height:n}=function(){var r=4e5,a=e.label.slice(1);if(Kt.has(a)){var n,i,o,s=e,l="ordgroup"===s.base.type?s.base.body.length:1;if(l>5)"widehat"===a||"widecheck"===a?(n=420,r=2364,o=.42,i=a+"4"):(n=312,r=2340,o=.34,i="tilde4");else{var h=[1,1,2,2,3,3][l];"widehat"===a||"widecheck"===a?(r=[0,1062,2364,2364,2364][h],n=[0,239,300,360,420][h],o=[0,.24,.3,.3,.36,.42][h],i=a+h):(r=[0,600,1033,2339,2340][h],n=[0,260,286,306,312][h],o=[0,.26,.286,.3,.306,.34][h],i="tilde"+h)}var m=new j(i),c=new W([m],{width:"100%",height:N(o),viewBox:"0 0 "+r+" "+n,preserveAspectRatio:"none"});return{span:je([],[c],t),minWidth:0,height:o}}var u,p,d=[],g=Zt[a],[f,v,b]=g,y=b/1e3,x=f.length;if(1===x)u=["hide-tail"],p=[g[3]];else if(2===x)u=["halfarrow-left","halfarrow-right"],p=["xMinYMin","xMaxYMin"];else{if(3!==x)throw new Error("Correct katexImagesData or update code here to support\n "+x+" children.");u=["brace-left","brace-center","brace-right"],p=["xMinYMin","xMidYMin","xMaxYMin"]}for(var w=0;w<x;w++){var k=new j(f[w]),S=new W([k],{width:"400em",height:N(y),viewBox:"0 0 "+r+" "+b,preserveAspectRatio:p[w]+" slice"}),z=je([u[w]],[S],t);if(1===x)return{span:z,minWidth:v,height:y};z.style.height=N(y),d.push(z)}return{span:We(["stretchy"],d,t),minWidth:v,height:y}}();return r.height=n,r.style.height=N(n),a>0&&(r.style.minWidth=N(a)),r};function Qt(e,t){if(!e||e.type!==t)throw new Error("Expected node of type "+t+", but got "+(e?"node of type "+e.type:String(e)));return e}function er(e){var t=tr(e);if(!t)throw new Error("Expected node of symbol group type, but got "+(e?"node of type "+e.type:String(e)));return t}function tr(e){return e&&("atom"===e.type||te.hasOwnProperty(e.type))?e:null}var rr=e=>{return e instanceof Y?e:((t=e)instanceof V||t instanceof G||t instanceof C)&&1===e.children.length?rr(e.children[0]):void 0;var t},ar=(e,t)=>{var r,a,n;e&&"supsub"===e.type?(r=(a=Qt(e.base,"accent")).base,e.base=r,n=function(e){if(e instanceof V)return e;throw new Error("Expected span<HtmlDomNode> but got "+String(e)+".")}(Mt(e,t)),e.base=a):r=(a=Qt(e,"accent")).base;var i,o,s=Mt(r,t.havingCrampedStyle()),l=0;a.isShifty&&c(r)&&(l=null!=(i=null==(o=rr(s))?void 0:o.skew)?i:0);var h,m="\\c"===a.label,u=m?s.height+s.depth:Math.min(s.height,t.fontMetrics().xHeight);if(a.isStretchy)h=Jt(a,t),h=Ke({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"elem",elem:h,wrapperClasses:["svg-align"],wrapperStyle:l>0?{width:"calc(100% - "+N(2*l)+")",marginLeft:N(2*l)}:void 0}]});else{var p,d;"\\vec"===a.label?(p=rt("vec",t),d=tt.vec[1]):(p=function(e){if(e instanceof Y)return e;throw new Error("Expected symbolNode but got "+String(e)+".")}(p=Ge({type:"textord",mode:a.mode,text:a.label},t,"textord")),p.italic=0,d=p.width,m&&(u+=p.depth)),h=We(["accent-body"],[p]);var g="\\textcircled"===a.label;g&&(h.classes.push("accent-full"),u=s.height);var f=l;g||(f-=d/2),h.style.left=N(f),"\\textcircled"===a.label&&(h.style.top=".2em"),h=Ke({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"kern",size:-u},{type:"elem",elem:h}]})}var v=We(["mord","accent"],[h],t);return n?(n.children[0]=v,n.height=Math.max(v.height,n.height),n.classes[0]="mord",n):v},nr=(e,t)=>{var r=e.isStretchy?$t(e.label):new qt("mo",[Et(e.label,e.mode)]),a=new qt("mover",[Ft(e.base,t),r]);return a.setAttribute("accent","true"),a},ir=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(e=>"\\"+e).join("|"));ct({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(e,t)=>{var r=pt(t[0]),a=!ir.test(e.funcName),n=!a||"\\widehat"===e.funcName||"\\widetilde"===e.funcName||"\\widecheck"===e.funcName;return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:a,isShifty:n,base:r}},htmlBuilder:ar,mathmlBuilder:nr}),ct({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(e,t)=>{var r=t[0],a=e.parser.mode;return"math"===a&&(e.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+e.funcName+" works only in text mode"),a="text"),{type:"accent",mode:a,label:e.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:ar,mathmlBuilder:nr}),ct({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=t[0];return{type:"accentUnder",mode:r.mode,label:a,base:n}},htmlBuilder:(e,t)=>{var r=Mt(e.base,t),a=Jt(e,t),n="\\utilde"===e.label?.12:0,i=Ke({positionType:"top",positionData:r.height,children:[{type:"elem",elem:a,wrapperClasses:["svg-align"]},{type:"kern",size:n},{type:"elem",elem:r}]});return We(["mord","accentunder"],[i],t)},mathmlBuilder:(e,t)=>{var r=$t(e.label),a=new qt("munder",[Ft(e.base,t),r]);return a.setAttribute("accentunder","true"),a}});var or=e=>{var t=new qt("mpadded",e?[e]:[]);return t.setAttribute("width","+0.6em"),t.setAttribute("lspace","0.3em"),t};function sr(e,t){var r=yt(e.body,t,!0);return We([e.mclass],r,t)}function lr(e,t){var r,a=Lt(e.body,t);return"minner"===e.mclass?r=new qt("mpadded",a):"mord"===e.mclass?e.isCharacterBox?(r=a[0]).type="mi":r=new qt("mi",a):(e.isCharacterBox?(r=a[0]).type="mo":r=new qt("mo",a),"mbin"===e.mclass?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):"mpunct"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):"mopen"===e.mclass||"mclose"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace="0em"):"minner"===e.mclass&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}ct({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:a,funcName:n}=e;return{type:"xArrow",mode:a.mode,label:n,body:t[0],below:r[0]}},htmlBuilder(e,t){var r,a=t.style,n=t.havingStyle(a.sup()),i=Ze(Mt(e.body,n,t),t),o="\\x"===e.label.slice(0,2)?"x":"cd";i.classes.push(o+"-arrow-pad"),e.below&&(n=t.havingStyle(a.sub()),(r=Ze(Mt(e.below,n,t),t)).classes.push(o+"-arrow-pad"));var s,l=Jt(e,t),h=-t.fontMetrics().axisHeight+.5*l.height,m=-t.fontMetrics().axisHeight-.5*l.height-.111;if((i.depth>.25||"\\xleftequilibrium"===e.label)&&(m-=i.depth),r){var c=-t.fontMetrics().axisHeight+r.height+.5*l.height+.111;s=Ke({positionType:"individualShift",children:[{type:"elem",elem:i,shift:m},{type:"elem",elem:l,shift:h},{type:"elem",elem:r,shift:c}]})}else s=Ke({positionType:"individualShift",children:[{type:"elem",elem:i,shift:m},{type:"elem",elem:l,shift:h}]});return s.children[0].children[0].children[1].classes.push("svg-align"),We(["mrel","x-arrow"],[s],t)},mathmlBuilder(e,t){var r,a=$t(e.label);if(a.setAttribute("minsize","x"===e.label.charAt(0)?"1.75em":"3.0em"),e.body){var n=or(Ft(e.body,t));if(e.below){var i=or(Ft(e.below,t));r=new qt("munderover",[a,i,n])}else r=new qt("mover",[a,n])}else if(e.below){var o=or(Ft(e.below,t));r=new qt("munder",[a,o])}else r=or(),r=new qt("mover",[a,r]);return r}}),ct({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(e,t){var{parser:r,funcName:a}=e,n=t[0];return{type:"mclass",mode:r.mode,mclass:"m"+a.slice(5),body:dt(n),isCharacterBox:c(n)}},htmlBuilder:sr,mathmlBuilder:lr});var hr=e=>{var t="ordgroup"===e.type&&e.body.length?e.body[0]:e;return"atom"!==t.type||"bin"!==t.family&&"rel"!==t.family?"mord":"m"+t.family};ct({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(e,t){var{parser:r}=e;return{type:"mclass",mode:r.mode,mclass:hr(t[0]),body:dt(t[1]),isCharacterBox:c(t[1])}}}),ct({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(e,t){var r,{parser:a,funcName:n}=e,i=t[1],o=t[0];r="\\stackrel"!==n?hr(i):"mrel";var s={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:"\\stackrel"!==n,body:dt(i)},l={type:"supsub",mode:o.mode,base:s,sup:"\\underset"===n?null:o,sub:"\\underset"===n?o:null};return{type:"mclass",mode:a.mode,mclass:r,body:[l],isCharacterBox:c(l)}},htmlBuilder:sr,mathmlBuilder:lr}),ct({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"pmb",mode:r.mode,mclass:hr(t[0]),body:dt(t[0])}},htmlBuilder(e,t){var r=yt(e.body,t,!0),a=We([e.mclass],r,t);return a.style.textShadow="0.02em 0.01em 0.04px",a},mathmlBuilder(e,t){var r=Lt(e.body,t),a=new qt("mstyle",r);return a.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),a}});var mr={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},cr=()=>({type:"styling",body:[],mode:"math",style:"display"}),ur=e=>"textord"===e.type&&"@"===e.text,pr=(e,t)=>("mathord"===e.type||"atom"===e.type)&&e.text===t;function dr(e,t,r){var a=mr[e];switch(a){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(a,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":var n={type:"atom",text:a,mode:"math",family:"rel"},i={type:"ordgroup",mode:"math",body:[r.callFunction("\\\\cdleft",[t[0]],[]),r.callFunction("\\Big",[n],[]),r.callFunction("\\\\cdright",[t[1]],[])]};return r.callFunction("\\\\cdparent",[i],[]);case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":return r.callFunction("\\Big",[{type:"textord",text:"\\Vert",mode:"math"}],[]);default:return{type:"textord",text:" ",mode:"math"}}}ct({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:a}=e;return{type:"cdlabel",mode:r.mode,side:a.slice(4),label:t[0]}},htmlBuilder(e,t){var r=t.havingStyle(t.style.sup()),a=Ze(Mt(e.label,r,t),t);return a.classes.push("cd-label-"+e.side),a.style.bottom=N(.8-a.depth),a.height=0,a.depth=0,a},mathmlBuilder(e,t){var r=new qt("mrow",[Ft(e.label,t)]);return(r=new qt("mpadded",[r])).setAttribute("width","0"),"left"===e.side&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),(r=new qt("mstyle",[r])).setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}}),ct({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(e,t){var{parser:r}=e;return{type:"cdlabelparent",mode:r.mode,fragment:t[0]}},htmlBuilder(e,t){var r=Ze(Mt(e.fragment,t),t);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder:(e,t)=>new qt("mrow",[Ft(e.fragment,t)])}),ct({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(e,t){for(var{parser:r}=e,n=Qt(t[0],"ordgroup").body,i="",o=0;o<n.length;o++){i+=Qt(n[o],"textord").text}var s,l=parseInt(i);if(isNaN(l))throw new a("\\@char has non-numeric argument "+i);if(l<0||l>=1114111)throw new a("\\@char with invalid code point "+i);return l<=65535?s=String.fromCharCode(l):(l-=65536,s=String.fromCharCode(55296+(l>>10),56320+(1023&l))),{type:"textord",mode:r.mode,text:s}}});var gr=(e,t)=>{var r=yt(e.body,t.withColor(e.color),!1);return $e(r)},fr=(e,t)=>{var r=Lt(e.body,t.withColor(e.color)),a=new qt("mstyle",r);return a.setAttribute("mathcolor",e.color),a};ct({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(e,t){var{parser:r}=e,a=Qt(t[0],"color-token").color,n=t[1];return{type:"color",mode:r.mode,color:a,body:dt(n)}},htmlBuilder:gr,mathmlBuilder:fr}),ct({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(e,t){var{parser:r,breakOnTokenText:a}=e,n=Qt(t[0],"color-token").color;r.gullet.macros.set("\\current@color",n);var i=r.parseExpression(!0,a);return{type:"color",mode:r.mode,color:n,body:i}},htmlBuilder:gr,mathmlBuilder:fr}),ct({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(e,t,r){var{parser:a}=e,n="["===a.gullet.future().text?a.parseSizeGroup(!0):null,i=!a.settings.displayMode||!a.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:a.mode,newLine:i,size:n&&Qt(n,"size").value}},htmlBuilder(e,t){var r=We(["mspace"],[],t);return e.newLine&&(r.classes.push("newline"),e.size&&(r.style.marginTop=N(E(e.size,t)))),r},mathmlBuilder(e,t){var r=new qt("mspace");return e.newLine&&(r.setAttribute("linebreak","newline"),e.size&&r.setAttribute("height",N(E(e.size,t)))),r}});var vr={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},br=e=>{var t=e.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(t))throw new a("Expected a control sequence",e);return t},yr=(e,t,r,a)=>{var n=e.gullet.macros.get(r.text);null==n&&(r.noexpand=!0,n={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,n,a)};ct({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(e){var{parser:t,funcName:r}=e;t.consumeSpaces();var n=t.fetch();if(vr[n.text])return"\\global"!==r&&"\\\\globallong"!==r||(n.text=vr[n.text]),Qt(t.parseFunction(),"internal");throw new a("Invalid token after macro prefix",n)}}),ct({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=t.gullet.popToken(),i=n.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(i))throw new a("Expected a control sequence",n);for(var o,s=0,l=[[]];"{"!==t.gullet.future().text;)if("#"===(n=t.gullet.popToken()).text){if("{"===t.gullet.future().text){o=t.gullet.future(),l[s].push("{");break}if(n=t.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new a('Invalid argument number "'+n.text+'"');if(parseInt(n.text)!==s+1)throw new a('Argument number "'+n.text+'" out of order');s++,l.push([])}else{if("EOF"===n.text)throw new a("Expected a macro definition");l[s].push(n.text)}var{tokens:h}=t.gullet.consumeArg();return o&&h.unshift(o),"\\edef"!==r&&"\\xdef"!==r||(h=t.gullet.expandTokens(h)).reverse(),t.gullet.macros.set(i,{tokens:h,numArgs:s,delimiters:l},r===vr[r]),{type:"internal",mode:t.mode}}}),ct({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,a=br(t.gullet.popToken());t.gullet.consumeSpaces();var n=(e=>{var t=e.gullet.popToken();return"="===t.text&&" "===(t=e.gullet.popToken()).text&&(t=e.gullet.popToken()),t})(t);return yr(t,a,n,"\\\\globallet"===r),{type:"internal",mode:t.mode}}}),ct({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,a=br(t.gullet.popToken()),n=t.gullet.popToken(),i=t.gullet.popToken();return yr(t,a,i,"\\\\globalfuture"===r),t.gullet.pushToken(i),t.gullet.pushToken(n),{type:"internal",mode:t.mode}}});var xr=function(e,t,r){var a=J(re.math[e]&&re.math[e].replace||e,t,r);if(!a)throw new Error("Unsupported symbol "+e+" and font size "+t+".");return a},wr=function(e,t,r,a){var n=r.havingBaseStyle(t),i=We(a.concat(n.sizingClasses(r)),[e],r),o=n.sizeMultiplier/r.sizeMultiplier;return i.height*=o,i.depth*=o,i.maxFontSize=n.sizeMultiplier,i},kr=function(e,t,r){var a=t.havingBaseStyle(r),n=(1-t.sizeMultiplier/a.sizeMultiplier)*t.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=N(n),e.height-=n,e.depth+=n},Sr=function(e,t,r,a,n,i){var o=function(e,t,r,a){return Fe(e,"Size"+t+"-Regular",r,a)}(e,t,n,a),s=wr(We(["delimsizing","size"+t],[o],a),S.TEXT,a,i);return r&&kr(s,a,S.TEXT),s},zr=function(e,t,r){return{type:"elem",elem:We(["delimsizinginner","Size1-Regular"===t?"delim-size1":"delim-size4"],[We([],[Fe(e,t,r)])])}},Mr=function(e,t,r){var a=$["Size4-Regular"][e.charCodeAt(0)]?$["Size4-Regular"][e.charCodeAt(0)][4]:$["Size1-Regular"][e.charCodeAt(0)][4],n=new j("inner",function(e,t){switch(e){case"\u239c":return T("M291 0 H417 V"+t+" H291z");case"\u2223":return T("M145 0 H188 V"+t+" H145z");case"\u2225":return T("M145 0 H188 V"+t+" H145z")+T("M367 0 H410 V"+t+" H367z");case"\u239f":return T("M457 0 H583 V"+t+" H457z");case"\u23a2":return T("M319 0 H403 V"+t+" H319z");case"\u23a5":return T("M263 0 H347 V"+t+" H263z");case"\u23aa":return T("M384 0 H504 V"+t+" H384z");case"\u23d0":return T("M312 0 H355 V"+t+" H312z");case"\u2016":return T("M257 0 H300 V"+t+" H257z")+T("M478 0 H521 V"+t+" H478z");default:return""}}(e,Math.round(1e3*t))),i=new W([n],{width:N(a),height:N(t),style:"width:"+N(a),viewBox:"0 0 "+1e3*a+" "+Math.round(1e3*t),preserveAspectRatio:"xMinYMin"}),o=je([],[i],r);return o.height=t,o.style.height=N(t),o.style.width=N(a),{type:"elem",elem:o}},Ar={type:"kern",size:-.008},Tr=new Set(["|","\\lvert","\\rvert","\\vert"]),Br=new Set(["\\|","\\lVert","\\rVert","\\Vert"]),qr=function(e,t,r,a,n,i){var o,s,l,h,m="",c=0;o=l=h=e,s=null;var u="Size1-Regular";"\\uparrow"===e?l=h="\u23d0":"\\Uparrow"===e?l=h="\u2016":"\\downarrow"===e?o=l="\u23d0":"\\Downarrow"===e?o=l="\u2016":"\\updownarrow"===e?(o="\\uparrow",l="\u23d0",h="\\downarrow"):"\\Updownarrow"===e?(o="\\Uparrow",l="\u2016",h="\\Downarrow"):Tr.has(e)?(l="\u2223",m="vert",c=333):Br.has(e)?(l="\u2225",m="doublevert",c=556):"["===e||"\\lbrack"===e?(o="\u23a1",l="\u23a2",h="\u23a3",u="Size4-Regular",m="lbrack",c=667):"]"===e||"\\rbrack"===e?(o="\u23a4",l="\u23a5",h="\u23a6",u="Size4-Regular",m="rbrack",c=667):"\\lfloor"===e||"\u230a"===e?(l=o="\u23a2",h="\u23a3",u="Size4-Regular",m="lfloor",c=667):"\\lceil"===e||"\u2308"===e?(o="\u23a1",l=h="\u23a2",u="Size4-Regular",m="lceil",c=667):"\\rfloor"===e||"\u230b"===e?(l=o="\u23a5",h="\u23a6",u="Size4-Regular",m="rfloor",c=667):"\\rceil"===e||"\u2309"===e?(o="\u23a4",l=h="\u23a5",u="Size4-Regular",m="rceil",c=667):"("===e||"\\lparen"===e?(o="\u239b",l="\u239c",h="\u239d",u="Size4-Regular",m="lparen",c=875):")"===e||"\\rparen"===e?(o="\u239e",l="\u239f",h="\u23a0",u="Size4-Regular",m="rparen",c=875):"\\{"===e||"\\lbrace"===e?(o="\u23a7",s="\u23a8",h="\u23a9",l="\u23aa",u="Size4-Regular"):"\\}"===e||"\\rbrace"===e?(o="\u23ab",s="\u23ac",h="\u23ad",l="\u23aa",u="Size4-Regular"):"\\lgroup"===e||"\u27ee"===e?(o="\u23a7",h="\u23a9",l="\u23aa",u="Size4-Regular"):"\\rgroup"===e||"\u27ef"===e?(o="\u23ab",h="\u23ad",l="\u23aa",u="Size4-Regular"):"\\lmoustache"===e||"\u23b0"===e?(o="\u23a7",h="\u23ad",l="\u23aa",u="Size4-Regular"):"\\rmoustache"!==e&&"\u23b1"!==e||(o="\u23ab",h="\u23a9",l="\u23aa",u="Size4-Regular");var p=xr(o,u,n),d=p.height+p.depth,g=xr(l,u,n),f=g.height+g.depth,v=xr(h,u,n),b=v.height+v.depth,y=0,x=1;if(null!==s){var w=xr(s,u,n);y=w.height+w.depth,x=2}var k=d+b+y,z=k+Math.max(0,Math.ceil((t-k)/(x*f)))*x*f,M=a.fontMetrics().axisHeight;r&&(M*=a.sizeMultiplier);var A=z/2-M,T=[];if(m.length>0){var B=z-d-b,q=Math.round(1e3*z),C=function(e,t){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+t+" v1759 h347 v-84\nH403z M403 1759 V0 H319 V1759 v"+t+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+t+" v1759 H0 v84 H347z\nM347 1759 V0 H263 V1759 v"+t+" v1759 h84z";case"vert":return"M145 15 v585 v"+t+" v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v"+-t+" v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v"+t+" v585 h43z";case"doublevert":return"M145 15 v585 v"+t+" v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v"+-t+" v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v"+t+" v585 h43z\nM367 15 v585 v"+t+" v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v"+-t+" v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M410 15 H367 v585 v"+t+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+t+" v1715 h263 v84 H319z\nMM319 602 V0 H403 V602 v"+t+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+t+" v1799 H0 v-84 H319z\nMM319 602 V0 H403 V602 v"+t+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+t+" v602 h84z\nM403 1759 V0 H319 V1759 v"+t+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+t+" v602 h84z\nM347 1759 V0 h-84 V1759 v"+t+" v602 h84z";case"lparen":return"M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1\nc-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349,\n-36,557 l0,"+(t+84)+"c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210,\n949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9\nc0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5,\n-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189\nl0,-"+(t+92)+"c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3,\n-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z";case"rparen":return"M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3,\n63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5\nc11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,"+(t+9)+"\nc-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664\nc-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11\nc0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17\nc242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558\nl0,-"+(t+144)+"c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7,\n-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z";default:throw new Error("Unknown stretchy delimiter.")}}(m,Math.round(1e3*B)),I=new j(m,C),R=N(c/1e3),H=N(q/1e3),E=new W([I],{width:R,height:H,viewBox:"0 0 "+c+" "+q}),O=je([],[E],a);O.height=q/1e3,O.style.width=R,O.style.height=H,T.push({type:"elem",elem:O})}else{if(T.push(zr(h,u,n)),T.push(Ar),null===s){var D=z-d-b+.016;T.push(Mr(l,D,a))}else{var L=(z-d-b-y)/2+.016;T.push(Mr(l,L,a)),T.push(Ar),T.push(zr(s,u,n)),T.push(Ar),T.push(Mr(l,L,a))}T.push(Ar),T.push(zr(o,u,n))}var P=a.havingBaseStyle(S.TEXT),F=Ke({positionType:"bottom",positionData:A,children:T});return wr(We(["delimsizing","mult"],[F],P),S.TEXT,a,i)},Cr=.08,Ir=function(e,t,r,a,n){var i=function(e,t,r){t*=1e3;var a="";switch(e){case"sqrtMain":a=function(e,t){return"M95,"+(622+e+t)+"\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl"+e/2.075+" -"+e+"\nc5.3,-9.3,12,-14,20,-14\nH400000v"+(40+e)+"H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM"+(834+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,B);break;case"sqrtSize1":a=function(e,t){return"M263,"+(601+e+t)+"c0.7,0,18,39.7,52,119\nc34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120\nc340,-704.7,510.7,-1060.3,512,-1067\nl"+e/2.084+" -"+e+"\nc4.7,-7.3,11,-11,19,-11\nH40000v"+(40+e)+"H1012.3\ns-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232\nc-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1\ns-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26\nc-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z\nM"+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,B);break;case"sqrtSize2":a=function(e,t){return"M983 "+(10+e+t)+"\nl"+e/3.13+" -"+e+"\nc4,-6.7,10,-10,18,-10 H400000v"+(40+e)+"\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\nM"+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,B);break;case"sqrtSize3":a=function(e,t){return"M424,"+(2398+e+t)+"\nc-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514\nc0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20\ns-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121\ns209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081\nl"+e/4.223+" -"+e+"c4,-6.7,10,-10,18,-10 H400000\nv"+(40+e)+"H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185\nc-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M"+(1001+e)+" "+t+"\nh400000v"+(40+e)+"h-400000z"}(t,B);break;case"sqrtSize4":a=function(e,t){return"M473,"+(2713+e+t)+"\nc339.3,-1799.3,509.3,-2700,510,-2702 l"+e/5.298+" -"+e+"\nc3.3,-7.3,9.3,-11,18,-11 H400000v"+(40+e)+"H1017.7\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\nc0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\n606zM"+(1001+e)+" "+t+"h400000v"+(40+e)+"H1017.7z"}(t,B);break;case"sqrtTall":a=function(e,t,r){return"M702 "+(e+t)+"H400000"+(40+e)+"\nH742v"+(r-54-t-e)+"l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\n219 661 l218 661zM702 "+t+"H400000v"+(40+e)+"H742z"}(t,B,r)}return a}(e,a,r),o=new j(e,i),s=new W([o],{width:"400em",height:N(t),viewBox:"0 0 400000 "+r,preserveAspectRatio:"xMinYMin slice"});return je(["hide-tail"],[s],n)},Rr=new Set(["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","\\surd"]),Hr=new Set(["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1"]),Er=new Set(["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"]),Nr=[0,1.2,1.8,2.4,3],Or=function(e,t,r,n,i){if("<"===e||"\\lt"===e||"\u27e8"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"\u27e9"!==e||(e="\\rangle"),Rr.has(e)||Er.has(e))return Sr(e,t,!1,r,n,i);if(Hr.has(e))return qr(e,Nr[t],!1,r,n,i);throw new a("Illegal delimiter: '"+e+"'")},Dr=[{type:"small",style:S.SCRIPTSCRIPT},{type:"small",style:S.SCRIPT},{type:"small",style:S.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],Lr=[{type:"small",style:S.SCRIPTSCRIPT},{type:"small",style:S.SCRIPT},{type:"small",style:S.TEXT},{type:"stack"}],Pr=[{type:"small",style:S.SCRIPTSCRIPT},{type:"small",style:S.SCRIPT},{type:"small",style:S.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],Fr=function(e){if("small"===e.type)return"Main-Regular";if("large"===e.type)return"Size"+e.size+"-Regular";if("stack"===e.type)return"Size4-Regular";var t=e.type;throw new Error("Add support for delim type '"+t+"' here.")},Vr=function(e,t,r,a){for(var n=Math.min(2,3-a.style.size);n<r.length;n++){var i=r[n];if("stack"===i.type)break;var o=xr(e,Fr(i),"math"),s=o.height+o.depth;if("small"===i.type)s*=a.havingBaseStyle(i.style).sizeMultiplier;if(s>t)return i}return r[r.length-1]},Gr=function(e,t,r,a,n,i){var o;"<"===e||"\\lt"===e||"\u27e8"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"\u27e9"!==e||(e="\\rangle"),o=Er.has(e)?Dr:Rr.has(e)?Pr:Lr;var s=Vr(e,t,o,a);return"small"===s.type?function(e,t,r,a,n,i){var o=Fe(e,"Main-Regular",n,a),s=wr(o,t,a,i);return r&&kr(s,a,t),s}(e,s.style,r,a,n,i):"large"===s.type?Sr(e,s.size,r,a,n,i):qr(e,t,r,a,n,i)},Ur=function(e,t,r,a,n,i){var o=a.fontMetrics().axisHeight*a.sizeMultiplier,s=5/a.fontMetrics().ptPerEm,l=Math.max(t-o,r+o),h=Math.max(l/500*901,2*l-s);return Gr(e,h,!0,a,n,i)},Xr={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},Yr=new Set(["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27e8","\\rangle","\u27e9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."]);function Wr(e,t){var r=tr(e);if(r&&Yr.has(r.text))return r;throw new a(r?"Invalid delimiter '"+r.text+"' after '"+t.funcName+"'":"Invalid delimiter type '"+e.type+"'",e)}function jr(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}ct({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(e,t)=>{var r=Wr(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:Xr[e.funcName].size,mclass:Xr[e.funcName].mclass,delim:r.text}},htmlBuilder:(e,t)=>"."===e.delim?We([e.mclass]):Or(e.delim,e.size,t,e.mode,[e.mclass]),mathmlBuilder:e=>{var t=[];"."!==e.delim&&t.push(Et(e.delim,e.mode));var r=new qt("mo",t);"mopen"===e.mclass||"mclose"===e.mclass?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var a=N(Nr[e.size]);return r.setAttribute("minsize",a),r.setAttribute("maxsize",a),r}}),ct({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=e.parser.gullet.macros.get("\\current@color");if(r&&"string"!=typeof r)throw new a("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:Wr(t[0],e).text,color:r}}}),ct({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=Wr(t[0],e),a=e.parser;++a.leftrightDepth;var n=a.parseExpression(!1);--a.leftrightDepth,a.expect("\\right",!1);var i=Qt(a.parseFunction(),"leftright-right");return{type:"leftright",mode:a.mode,body:n,left:r.text,right:i.delim,rightColor:i.color}},htmlBuilder:(e,t)=>{jr(e);for(var r,a,n=yt(e.body,t,!0,["mopen","mclose"]),i=0,o=0,s=!1,l=0;l<n.length;l++)n[l].isMiddle?s=!0:(i=Math.max(n[l].height,i),o=Math.max(n[l].depth,o));if(i*=t.sizeMultiplier,o*=t.sizeMultiplier,r="."===e.left?zt(t,["mopen"]):Ur(e.left,i,o,t,e.mode,["mopen"]),n.unshift(r),s)for(var h=1;h<n.length;h++){var m=n[h].isMiddle;m&&(n[h]=Ur(m.delim,i,o,m.options,e.mode,[]))}if("."===e.right)a=zt(t,["mclose"]);else{var c=e.rightColor?t.withColor(e.rightColor):t;a=Ur(e.right,i,o,c,e.mode,["mclose"])}return n.push(a),We(["minner"],n,t)},mathmlBuilder:(e,t)=>{jr(e);var r=Lt(e.body,t);if("."!==e.left){var a=new qt("mo",[Et(e.left,e.mode)]);a.setAttribute("fence","true"),r.unshift(a)}if("."!==e.right){var n=new qt("mo",[Et(e.right,e.mode)]);n.setAttribute("fence","true"),e.rightColor&&n.setAttribute("mathcolor",e.rightColor),r.push(n)}return Nt(r)}}),ct({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=Wr(t[0],e);if(!e.parser.leftrightDepth)throw new a("\\middle without preceding \\left",r);return{type:"middle",mode:e.parser.mode,delim:r.text}},htmlBuilder:(e,t)=>{var r;if("."===e.delim)r=zt(t,[]);else{r=Or(e.delim,1,t,e.mode,[]);var a={delim:e.delim,options:t};r.isMiddle=a}return r},mathmlBuilder:(e,t)=>{var r="\\vert"===e.delim||"|"===e.delim?Et("|","text"):Et(e.delim,e.mode),a=new qt("mo",[r]);return a.setAttribute("fence","true"),a.setAttribute("lspace","0.05em"),a.setAttribute("rspace","0.05em"),a}});var _r=(e,t)=>{var r,a,n,i=Ze(Mt(e.body,t),t),o=e.label.slice(1),s=t.sizeMultiplier,l=0,h=c(e.body);if("sout"===o)(r=We(["stretchy","sout"])).height=t.fontMetrics().defaultRuleThickness/s,l=-.5*t.fontMetrics().xHeight;else if("phase"===o){var m=E({number:.6,unit:"pt"},t),u=E({number:.35,unit:"ex"},t);s/=t.havingBaseSizing().sizeMultiplier;var p=i.height+i.depth+m+u;i.style.paddingLeft=N(p/2+m);var d=Math.floor(1e3*p*s),g="M400000 "+(a=d)+" H0 L"+a/2+" 0 l65 45 L145 "+(a-80)+" H400000z",f=new W([new j("phase",g)],{width:"400em",height:N(d/1e3),viewBox:"0 0 400000 "+d,preserveAspectRatio:"xMinYMin slice"});(r=je(["hide-tail"],[f],t)).style.height=N(p),l=i.depth+m+u}else{/cancel/.test(o)?h||i.classes.push("cancel-pad"):"angl"===o?i.classes.push("anglpad"):i.classes.push("boxpad");var v=0,b=0,y=0;/box/.test(o)?(y=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness),b=v=t.fontMetrics().fboxsep+("colorbox"===o?0:y)):"angl"===o?(v=4*(y=Math.max(t.fontMetrics().defaultRuleThickness,t.minRuleThickness)),b=Math.max(0,.25-i.depth)):b=v=h?.2:0,r=function(e,t,r,a,n){var i,o=e.height+e.depth+r+a;if(/fbox|color|angl/.test(t)){if(i=We(["stretchy",t],[],n),"fbox"===t){var s=n.color&&n.getColor();s&&(i.style.borderColor=s)}}else{var l=[];/^[bx]cancel$/.test(t)&&l.push(new _({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(t)&&l.push(new _({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var h=new W(l,{width:"100%",height:N(o)});i=je([],[h],n)}return i.height=o,i.style.height=N(o),i}(i,o,v,b,t),/fbox|boxed|fcolorbox/.test(o)?(r.style.borderStyle="solid",r.style.borderWidth=N(y)):"angl"===o&&.049!==y&&(r.style.borderTopWidth=N(y),r.style.borderRightWidth=N(y)),l=i.depth+b,e.backgroundColor&&(r.style.backgroundColor=e.backgroundColor,e.borderColor&&(r.style.borderColor=e.borderColor))}if(e.backgroundColor)n=Ke({positionType:"individualShift",children:[{type:"elem",elem:r,shift:l},{type:"elem",elem:i,shift:0}]});else{var x=/cancel|phase/.test(o)?["svg-align"]:[];n=Ke({positionType:"individualShift",children:[{type:"elem",elem:i,shift:0},{type:"elem",elem:r,shift:l,wrapperClasses:x}]})}return/cancel/.test(o)&&(n.height=i.height,n.depth=i.depth),/cancel/.test(o)&&!h?We(["mord","cancel-lap"],[n],t):We(["mord"],[n],t)},$r=(e,t)=>{var r=0,a=new qt(e.label.includes("colorbox")?"mpadded":"menclose",[Ft(e.body,t)]);switch(e.label){case"\\cancel":a.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":a.setAttribute("notation","downdiagonalstrike");break;case"\\phase":a.setAttribute("notation","phasorangle");break;case"\\sout":a.setAttribute("notation","horizontalstrike");break;case"\\fbox":a.setAttribute("notation","box");break;case"\\angl":a.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,a.setAttribute("width","+"+2*r+"pt"),a.setAttribute("height","+"+2*r+"pt"),a.setAttribute("lspace",r+"pt"),a.setAttribute("voffset",r+"pt"),"\\fcolorbox"===e.label){var n=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);a.setAttribute("style","border: "+N(n)+" solid "+e.borderColor)}break;case"\\xcancel":a.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return e.backgroundColor&&a.setAttribute("mathbackground",e.backgroundColor),a};ct({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(e,t,r){var{parser:a,funcName:n}=e,i=Qt(t[0],"color-token").color,o=t[1];return{type:"enclose",mode:a.mode,label:n,backgroundColor:i,body:o}},htmlBuilder:_r,mathmlBuilder:$r}),ct({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(e,t,r){var{parser:a,funcName:n}=e,i=Qt(t[0],"color-token").color,o=Qt(t[1],"color-token").color,s=t[2];return{type:"enclose",mode:a.mode,label:n,backgroundColor:o,borderColor:i,body:s}},htmlBuilder:_r,mathmlBuilder:$r}),ct({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\fbox",body:t[0]}}}),ct({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\phase"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:a}=e,n=t[0];return{type:"enclose",mode:r.mode,label:a,body:n}},htmlBuilder:_r,mathmlBuilder:$r}),ct({type:"enclose",names:["\\sout"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r,funcName:a}=e;"math"===r.mode&&r.settings.reportNonstrict("mathVsSout","LaTeX's \\sout works only in text mode");var n=t[0];return{type:"enclose",mode:r.mode,label:a,body:n}},htmlBuilder:_r,mathmlBuilder:$r}),ct({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\angl",body:t[0]}}});var Zr={};function Kr(e){for(var{type:t,names:r,props:a,handler:n,htmlBuilder:i,mathmlBuilder:o}=e,s={type:t,numArgs:a.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:n},l=0;l<r.length;++l)Zr[r[l]]=s;i&&(ht[t]=i),o&&(mt[t]=o)}var Jr={};function Qr(e,t){Jr[e]=t}class ea{constructor(e,t,r){this.lexer=e,this.start=t,this.end=r}static range(e,t){return t?e&&e.loc&&t.loc&&e.loc.lexer===t.loc.lexer?new ea(e.loc.lexer,e.loc.start,t.loc.end):null:e&&e.loc}}class ta{constructor(e,t){this.text=e,this.loc=t}range(e,t){return new ta(t,ea.range(this,e))}}function ra(e){var t=[];e.consumeSpaces();var r=e.fetch().text;for("\\relax"===r&&(e.consume(),e.consumeSpaces(),r=e.fetch().text);"\\hline"===r||"\\hdashline"===r;)e.consume(),t.push("\\hdashline"===r),e.consumeSpaces(),r=e.fetch().text;return t}var aa=e=>{if(!e.parser.settings.displayMode)throw new a("{"+e.envName+"} can be used only in display mode.")},na=new Set(["gather","gather*"]);function ia(e){if(!e.includes("ed"))return!e.includes("*")}function oa(e,t,r){var{hskipBeforeAndAfter:n,addJot:i,cols:o,arraystretch:s,colSeparationType:l,autoTag:h,singleRow:m,emptySingleRow:c,maxNumCols:u,leqno:p}=t;if(e.gullet.beginGroup(),m||e.gullet.macros.set("\\cr","\\\\\\relax"),!s){var d=e.gullet.expandMacroAsText("\\arraystretch");if(null==d)s=1;else if(!(s=parseFloat(d))||s<0)throw new a("Invalid \\arraystretch: "+d)}e.gullet.beginGroup();var g=[],f=[g],v=[],b=[],y=null!=h?[]:void 0;function x(){h&&e.gullet.macros.set("\\@eqnsw","1",!0)}function w(){y&&(e.gullet.macros.get("\\df@tag")?(y.push(e.subparse([new ta("\\df@tag")])),e.gullet.macros.set("\\df@tag",void 0,!0)):y.push(Boolean(h)&&"1"===e.gullet.macros.get("\\@eqnsw")))}for(x(),b.push(ra(e));;){var k=e.parseExpression(!1,m?"\\end":"\\\\");e.gullet.endGroup(),e.gullet.beginGroup();var S={type:"ordgroup",mode:e.mode,body:k};r&&(S={type:"styling",mode:e.mode,style:r,body:[S]}),g.push(S);var z=e.fetch().text;if("&"===z){if(u&&g.length===u){if(m||l)throw new a("Too many tab characters: &",e.nextToken);e.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}e.consume()}else{if("\\end"===z){w(),1===g.length&&"styling"===S.type&&1===S.body.length&&"ordgroup"===S.body[0].type&&0===S.body[0].body.length&&(f.length>1||!c)&&f.pop(),b.length<f.length+1&&b.push([]);break}if("\\\\"!==z)throw new a("Expected & or \\\\ or \\cr or \\end",e.nextToken);e.consume();var M=void 0;" "!==e.gullet.future().text&&(M=e.parseSizeGroup(!0)),v.push(M?M.value:null),w(),b.push(ra(e)),g=[],f.push(g),x()}}return e.gullet.endGroup(),e.gullet.endGroup(),{type:"array",mode:e.mode,addJot:i,arraystretch:s,body:f,cols:o,rowGaps:v,hskipBeforeAndAfter:n,hLinesBeforeRow:b,colSeparationType:l,tags:y,leqno:p}}function sa(e){return"d"===e.slice(0,1)?"display":"text"}var la=function(e,t){var r,n,i=e.body.length,o=e.hLinesBeforeRow,s=0,l=new Array(i),h=[],m=Math.max(t.fontMetrics().arrayRuleWidth,t.minRuleThickness),c=1/t.fontMetrics().ptPerEm,u=5*c;e.colSeparationType&&"small"===e.colSeparationType&&(u=t.havingStyle(S.SCRIPT).sizeMultiplier/t.sizeMultiplier*.2778);var p="CD"===e.colSeparationType?E({number:3,unit:"ex"},t):12*c,d=3*c,g=e.arraystretch*p,f=.7*g,v=.3*g,b=0;function y(e){for(var t=0;t<e.length;++t)t>0&&(b+=.25),h.push({pos:b,isDashed:e[t]})}for(y(o[0]),r=0;r<e.body.length;++r){var x=e.body[r],w=f,k=v;s<x.length&&(s=x.length);var z=new Array(x.length);for(n=0;n<x.length;++n){var M=Mt(x[n],t);k<M.depth&&(k=M.depth),w<M.height&&(w=M.height),z[n]=M}var A=e.rowGaps[r],T=0;A&&(T=E(A,t))>0&&(k<(T+=v)&&(k=T),T=0),e.addJot&&r<e.body.length-1&&(k+=d),z.height=w,z.depth=k,b+=w,z.pos=b,b+=k+T,l[r]=z,y(o[r+1])}var B,q,C=b/2+t.fontMetrics().axisHeight,I=e.cols||[],R=[],H=[];if(e.tags&&e.tags.some(e=>e))for(r=0;r<i;++r){var O=l[r],D=O.pos-C,L=e.tags[r],P=void 0;(P=!0===L?We(["eqn-num"],[],t):We([],!1===L?[]:yt(L,t,!0),t)).depth=O.depth,P.height=O.height,H.push({type:"elem",elem:P,shift:D})}for(n=0,q=0;n<s||q<I.length;++n,++q){for(var F,V=I[q],G=!0;"separator"===(null==(U=V)?void 0:U.type);){var U;if(G||((B=We(["arraycolsep"],[])).style.width=N(t.fontMetrics().doubleRuleSep),R.push(B)),"|"!==V.separator&&":"!==V.separator)throw new a("Invalid separator type: "+V.separator);var X="|"===V.separator?"solid":"dashed",Y=We(["vertical-separator"],[],t);Y.style.height=N(b),Y.style.borderRightWidth=N(m),Y.style.borderRightStyle=X,Y.style.margin="0 "+N(-m/2);var W=b-C;W&&(Y.style.verticalAlign=N(-W)),R.push(Y),V=I[++q],G=!1}if(!(n>=s)){var j,_,$=void 0;if(n>0||e.hskipBeforeAndAfter)0!==($=null!=(j=null==(_=V)?void 0:_.pregap)?j:u)&&((B=We(["arraycolsep"],[])).style.width=N($),R.push(B));var Z=[];for(r=0;r<i;++r){var K=l[r],J=K[n];if(J){var Q=K.pos-C;J.depth=K.depth,J.height=K.height,Z.push({type:"elem",elem:J,shift:Q})}}var ee,te,re=Ke({positionType:"individualShift",children:Z}),ae=We(["col-align-"+((null==(F=V)?void 0:F.align)||"c")],[re]);if(R.push(ae),n<s-1||e.hskipBeforeAndAfter)0!==($=null!=(ee=null==(te=V)?void 0:te.postgap)?ee:u)&&((B=We(["arraycolsep"],[])).style.width=N($),R.push(B))}}var ne=We(["mtable"],R);if(h.length>0){for(var ie=_e("hline",t,m),oe=_e("hdashline",t,m),se=[{type:"elem",elem:ne,shift:0}];h.length>0;){var le=h.pop(),he=le.pos-C;le.isDashed?se.push({type:"elem",elem:oe,shift:he}):se.push({type:"elem",elem:ie,shift:he})}ne=Ke({positionType:"individualShift",children:se})}if(0===H.length)return We(["mord"],[ne],t);var me=Ke({positionType:"individualShift",children:H}),ce=We(["tag"],[me],t);return $e([ne,ce])},ha={c:"center ",l:"left ",r:"right "},ma=function(e,t){for(var r=[],a=new qt("mtd",[],["mtr-glue"]),n=new qt("mtd",[],["mml-eqn-num"]),i=0;i<e.body.length;i++){for(var o=e.body[i],s=[],l=0;l<o.length;l++)s.push(new qt("mtd",[Ft(o[l],t)]));e.tags&&e.tags[i]&&(s.unshift(a),s.push(a),e.leqno?s.unshift(n):s.push(n)),r.push(new qt("mtr",s))}var h=new qt("mtable",r),m=.5===e.arraystretch?.1:.16+e.arraystretch-1+(e.addJot?.09:0);h.setAttribute("rowspacing",N(m));var c="",u="";if(e.cols&&e.cols.length>0){var p=e.cols,d="",g=!1,f=0,v=p.length;"separator"===p[0].type&&(c+="top ",f=1),"separator"===p[p.length-1].type&&(c+="bottom ",v-=1);for(var b=f;b<v;b++){var y=p[b];"align"===y.type?(u+=ha[y.align],g&&(d+="none "),g=!0):"separator"===y.type&&g&&(d+="|"===y.separator?"solid ":"dashed ",g=!1)}h.setAttribute("columnalign",u.trim()),/[sd]/.test(d)&&h.setAttribute("columnlines",d.trim())}if("align"===e.colSeparationType){for(var x=e.cols||[],w="",k=1;k<x.length;k++)w+=k%2?"0em ":"1em ";h.setAttribute("columnspacing",w.trim())}else"alignat"===e.colSeparationType||"gather"===e.colSeparationType?h.setAttribute("columnspacing","0em"):"small"===e.colSeparationType?h.setAttribute("columnspacing","0.2778em"):"CD"===e.colSeparationType?h.setAttribute("columnspacing","0.5em"):h.setAttribute("columnspacing","1em");var S="",z=e.hLinesBeforeRow;c+=z[0].length>0?"left ":"",c+=z[z.length-1].length>0?"right ":"";for(var M=1;M<z.length-1;M++)S+=0===z[M].length?"none ":z[M][0]?"dashed ":"solid ";return/[sd]/.test(S)&&h.setAttribute("rowlines",S.trim()),""!==c&&(h=new qt("menclose",[h])).setAttribute("notation",c.trim()),e.arraystretch&&e.arraystretch<1&&(h=new qt("mstyle",[h])).setAttribute("scriptlevel","1"),h},ca=function(e,t){e.envName.includes("ed")||aa(e);var r=[],n=e.envName.includes("at")?"alignat":"align",i="split"===e.envName,o=oa(e.parser,{cols:r,addJot:!0,autoTag:i?void 0:ia(e.envName),emptySingleRow:!0,colSeparationType:n,maxNumCols:i?2:void 0,leqno:e.parser.settings.leqno},"display"),s=0,l=0,h={type:"ordgroup",mode:e.mode,body:[]};if(t[0]&&"ordgroup"===t[0].type){for(var m="",c=0;c<t[0].body.length;c++){m+=Qt(t[0].body[c],"textord").text}s=Number(m),l=2*s}var u=!l;o.body.forEach(function(e){for(var t=1;t<e.length;t+=2){var r=Qt(e[t],"styling");Qt(r.body[0],"ordgroup").body.unshift(h)}if(u)l<e.length&&(l=e.length);else{var n=e.length/2;if(s<n)throw new a("Too many math in a row: expected "+s+", but got "+n,e[0])}});for(var p=0;p<l;++p){var d="r",g=0;p%2==1?d="l":p>0&&u&&(g=1),r[p]={type:"align",align:d,pregap:g,postgap:0}}return o.colSeparationType=u?"align":"alignat",o};Kr({type:"array",names:["array","darray"],props:{numArgs:1},handler(e,t){var r=(tr(t[0])?[t[0]]:Qt(t[0],"ordgroup").body).map(function(e){var t=er(e).text;if("lcr".includes(t))return{type:"align",align:t};if("|"===t)return{type:"separator",separator:"|"};if(":"===t)return{type:"separator",separator:":"};throw new a("Unknown column alignment: "+t,e)}),n={cols:r,hskipBeforeAndAfter:!0,maxNumCols:r.length};return oa(e.parser,n,sa(e.envName))},htmlBuilder:la,mathmlBuilder:ma}),Kr({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName.replace("*","")],r="c",n={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if("*"===e.envName.charAt(e.envName.length-1)){var i=e.parser;if(i.consumeSpaces(),"["===i.fetch().text){if(i.consume(),i.consumeSpaces(),r=i.fetch().text,!"lcr".includes(r))throw new a("Expected l or c or r",i.nextToken);i.consume(),i.consumeSpaces(),i.expect("]"),i.consume(),n.cols=[{type:"align",align:r}]}}var o=oa(e.parser,n,sa(e.envName)),s=Math.max(0,...o.body.map(e=>e.length));return o.cols=new Array(s).fill({type:"align",align:r}),t?{type:"leftright",mode:e.mode,body:[o],left:t[0],right:t[1],rightColor:void 0}:o},htmlBuilder:la,mathmlBuilder:ma}),Kr({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(e){var t=oa(e.parser,{arraystretch:.5},"script");return t.colSeparationType="small",t},htmlBuilder:la,mathmlBuilder:ma}),Kr({type:"array",names:["subarray"],props:{numArgs:1},handler(e,t){var r=(tr(t[0])?[t[0]]:Qt(t[0],"ordgroup").body).map(function(e){var t=er(e).text;if("lc".includes(t))return{type:"align",align:t};throw new a("Unknown column alignment: "+t,e)});if(r.length>1)throw new a("{subarray} can contain only one column");var n={cols:r,hskipBeforeAndAfter:!1,arraystretch:.5},i=oa(e.parser,n,"script");if(i.body.length>0&&i.body[0].length>1)throw new a("{subarray} can contain only one column");return i},htmlBuilder:la,mathmlBuilder:ma}),Kr({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(e){var t=oa(e.parser,{arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},sa(e.envName));return{type:"leftright",mode:e.mode,body:[t],left:e.envName.includes("r")?".":"\\{",right:e.envName.includes("r")?"\\}":".",rightColor:void 0}},htmlBuilder:la,mathmlBuilder:ma}),Kr({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:ca,htmlBuilder:la,mathmlBuilder:ma}),Kr({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(e){na.has(e.envName)&&aa(e);var t={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:ia(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return oa(e.parser,t,"display")},htmlBuilder:la,mathmlBuilder:ma}),Kr({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:ca,htmlBuilder:la,mathmlBuilder:ma}),Kr({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(e){aa(e);var t={autoTag:ia(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:e.parser.settings.leqno};return oa(e.parser,t,"display")},htmlBuilder:la,mathmlBuilder:ma}),Kr({type:"array",names:["CD"],props:{numArgs:0},handler:e=>(aa(e),function(e){var t=[];for(e.gullet.beginGroup(),e.gullet.macros.set("\\cr","\\\\\\relax"),e.gullet.beginGroup();;){t.push(e.parseExpression(!1,"\\\\")),e.gullet.endGroup(),e.gullet.beginGroup();var r=e.fetch().text;if("&"!==r&&"\\\\"!==r){if("\\end"===r){0===t[t.length-1].length&&t.pop();break}throw new a("Expected \\\\ or \\cr or \\end",e.nextToken)}e.consume()}for(var n=[],i=[n],o=0;o<t.length;o++){for(var s=t[o],l=cr(),h=0;h<s.length;h++)if(ur(s[h])){n.push(l);var m=er(s[h+=1]).text,c=new Array(2);if(c[0]={type:"ordgroup",mode:"math",body:[]},c[1]={type:"ordgroup",mode:"math",body:[]},"=|.".includes(m));else{if(!"<>AV".includes(m))throw new a('Expected one of "<>AV=|." after @',s[h]);for(var u=0;u<2;u++){for(var p=!0,d=h+1;d<s.length;d++){if(pr(s[d],m)){p=!1,h=d;break}if(ur(s[d]))throw new a("Missing a "+m+" character to complete a CD arrow.",s[d]);c[u].body.push(s[d])}if(p)throw new a("Missing a "+m+" character to complete a CD arrow.",s[h])}}var g={type:"styling",body:[dr(m,c,e)],mode:"math",style:"display"};n.push(g),l=cr()}else l.body.push(s[h]);o%2==0?n.push(l):n.shift(),n=[],i.push(n)}return e.gullet.endGroup(),e.gullet.endGroup(),{type:"array",mode:"math",body:i,arraystretch:1,addJot:!0,rowGaps:[null],cols:new Array(i[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25}),colSeparationType:"CD",hLinesBeforeRow:new Array(i.length+1).fill([])}}(e.parser)),htmlBuilder:la,mathmlBuilder:ma}),Qr("\\nonumber","\\gdef\\@eqnsw{0}"),Qr("\\notag","\\nonumber"),ct({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(e,t){throw new a(e.funcName+" valid only within array environment")}});var ua=Zr;ct({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(e,t){var{parser:r,funcName:n}=e,i=t[0];if("ordgroup"!==i.type)throw new a("Invalid environment name",i);for(var o="",s=0;s<i.body.length;++s)o+=Qt(i.body[s],"textord").text;if("\\begin"===n){if(!ua.hasOwnProperty(o))throw new a("No such environment: "+o,i);var l=ua[o],{args:h,optArgs:m}=r.parseArguments("\\begin{"+o+"}",l),c={mode:r.mode,envName:o,parser:r},u=l.handler(c,h,m);r.expect("\\end",!1);var p=r.nextToken,d=Qt(r.parseFunction(),"environment");if(d.name!==o)throw new a("Mismatch: \\begin{"+o+"} matched by \\end{"+d.name+"}",p);return u}return{type:"environment",mode:r.mode,name:o,nameGroup:i}}});var pa=(e,t)=>{var r=e.font,a=t.withFont(r);return Mt(e.body,a)},da=(e,t)=>{var r=e.font,a=t.withFont(r);return Ft(e.body,a)},ga={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};ct({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=pt(t[0]),i=a;return i in ga&&(i=ga[i]),{type:"font",mode:r.mode,font:i.slice(1),body:n}},htmlBuilder:pa,mathmlBuilder:da}),ct({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(e,t)=>{var{parser:r}=e,a=t[0];return{type:"mclass",mode:r.mode,mclass:hr(a),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:a}],isCharacterBox:c(a)}}}),ct({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{var{parser:r,funcName:a,breakOnTokenText:n}=e,{mode:i}=r,o=r.parseExpression(!0,n);return{type:"font",mode:i,font:"math"+a.slice(1),body:{type:"ordgroup",mode:r.mode,body:o}}},htmlBuilder:pa,mathmlBuilder:da});var fa=(e,t)=>t?{type:"styling",mode:e.mode,style:t,body:[e]}:e;ct({type:"genfrac",names:["\\cfrac","\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(e,t)=>{var r,{parser:a,funcName:n}=e,i=t[0],o=t[1],s=null,l=null;switch(n){case"\\cfrac":case"\\dfrac":case"\\frac":case"\\tfrac":r=!0;break;case"\\\\atopfrac":r=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":r=!1,s="(",l=")";break;case"\\\\bracefrac":r=!1,s="\\{",l="\\}";break;case"\\\\brackfrac":r=!1,s="[",l="]";break;default:throw new Error("Unrecognized genfrac command")}var h="\\cfrac"===n,m=null;return h||n.startsWith("\\d")?m="display":n.startsWith("\\t")&&(m="text"),fa({type:"genfrac",mode:a.mode,numer:i,denom:o,continued:h,hasBarLine:r,leftDelim:s,rightDelim:l,barSize:null},m)},htmlBuilder:(e,t)=>{var r,a=t.style,n=a.fracNum(),i=a.fracDen();r=t.havingStyle(n);var o=Mt(e.numer,r,t);if(e.continued){var s=8.5/t.fontMetrics().ptPerEm,l=3.5/t.fontMetrics().ptPerEm;o.height=o.height<s?s:o.height,o.depth=o.depth<l?l:o.depth}r=t.havingStyle(i);var h,m,c,u,p,d,g,f,v,b,y=Mt(e.denom,r,t);if(e.hasBarLine?(e.barSize?(m=E(e.barSize,t),h=_e("frac-line",t,m)):h=_e("frac-line",t),m=h.height,c=h.height):(h=null,m=0,c=t.fontMetrics().defaultRuleThickness),a.size===S.DISPLAY.size?(u=t.fontMetrics().num1,p=m>0?3*c:7*c,d=t.fontMetrics().denom1):(m>0?(u=t.fontMetrics().num2,p=c):(u=t.fontMetrics().num3,p=3*c),d=t.fontMetrics().denom2),h){var x=t.fontMetrics().axisHeight;u-o.depth-(x+.5*m)<p&&(u+=p-(u-o.depth-(x+.5*m))),x-.5*m-(y.height-d)<p&&(d+=p-(x-.5*m-(y.height-d))),g=Ke({positionType:"individualShift",children:[{type:"elem",elem:y,shift:d},{type:"elem",elem:h,shift:-(x-.5*m)},{type:"elem",elem:o,shift:-u}]})}else{var w=u-o.depth-(y.height-d);w<p&&(u+=.5*(p-w),d+=.5*(p-w)),g=Ke({positionType:"individualShift",children:[{type:"elem",elem:y,shift:d},{type:"elem",elem:o,shift:-u}]})}return r=t.havingStyle(a),g.height*=r.sizeMultiplier/t.sizeMultiplier,g.depth*=r.sizeMultiplier/t.sizeMultiplier,f=a.size===S.DISPLAY.size?t.fontMetrics().delim1:a.size===S.SCRIPTSCRIPT.size?t.havingStyle(S.SCRIPT).fontMetrics().delim2:t.fontMetrics().delim2,v=null==e.leftDelim?zt(t,["mopen"]):Gr(e.leftDelim,f,!0,t.havingStyle(a),e.mode,["mopen"]),b=e.continued?We([]):null==e.rightDelim?zt(t,["mclose"]):Gr(e.rightDelim,f,!0,t.havingStyle(a),e.mode,["mclose"]),We(["mord"].concat(r.sizingClasses(t)),[v,We(["mfrac"],[g]),b],t)},mathmlBuilder:(e,t)=>{var r=new qt("mfrac",[Ft(e.numer,t),Ft(e.denom,t)]);if(e.hasBarLine){if(e.barSize){var a=E(e.barSize,t);r.setAttribute("linethickness",N(a))}}else r.setAttribute("linethickness","0px");if(null!=e.leftDelim||null!=e.rightDelim){var n=[];if(null!=e.leftDelim){var i=new qt("mo",[new Ct(e.leftDelim.replace("\\",""))]);i.setAttribute("fence","true"),n.push(i)}if(n.push(r),null!=e.rightDelim){var o=new qt("mo",[new Ct(e.rightDelim.replace("\\",""))]);o.setAttribute("fence","true"),n.push(o)}return Nt(n)}return r}}),ct({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(e){var t,{parser:r,funcName:a,token:n}=e;switch(a){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;case"\\atop":t="\\\\atopfrac";break;case"\\brace":t="\\\\bracefrac";break;case"\\brack":t="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:r.mode,replaceWith:t,token:n}}});var va=["display","text","script","scriptscript"],ba=function(e){var t=null;return e.length>0&&(t="."===(t=e)?null:t),t};ct({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(e,t){var r,{parser:a}=e,n=t[4],i=t[5],o=pt(t[0]),s="atom"===o.type&&"open"===o.family?ba(o.text):null,l=pt(t[1]),h="atom"===l.type&&"close"===l.family?ba(l.text):null,m=Qt(t[2],"size"),c=null;r=!!m.isBlank||(c=m.value).number>0;var u=null,p=t[3];if("ordgroup"===p.type){if(p.body.length>0){var d=Qt(p.body[0],"textord");u=va[Number(d.text)]}}else p=Qt(p,"textord"),u=va[Number(p.text)];return fa({type:"genfrac",mode:a.mode,numer:n,denom:i,continued:!1,hasBarLine:r,barSize:c,leftDelim:s,rightDelim:h},u)}}),ct({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(e,t){var{parser:r,funcName:a,token:n}=e;return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Qt(t[0],"size").value,token:n}}}),ct({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=t[0],i=Qt(t[1],"infix").size;if(!i)throw new Error("\\\\abovefrac expected size, but got "+String(i));var o=t[2],s=i.number>0;return{type:"genfrac",mode:r.mode,numer:n,denom:o,continued:!1,hasBarLine:s,barSize:i,leftDelim:null,rightDelim:null}}});var ya=(e,t)=>{var r,a,n=t.style;"supsub"===e.type?(r=e.sup?Mt(e.sup,t.havingStyle(n.sup()),t):Mt(e.sub,t.havingStyle(n.sub()),t),a=Qt(e.base,"horizBrace")):a=Qt(e,"horizBrace");var i,o=Mt(a.base,t.havingBaseStyle(S.DISPLAY)),s=Jt(a,t);if(a.isOver?(i=Ke({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"kern",size:.1},{type:"elem",elem:s}]})).children[0].children[0].children[1].classes.push("svg-align"):(i=Ke({positionType:"bottom",positionData:o.depth+.1+s.height,children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:o}]})).children[0].children[0].children[0].classes.push("svg-align"),r){var l=We(["minner",a.isOver?"mover":"munder"],[i],t);i=a.isOver?Ke({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:r}]}):Ke({positionType:"bottom",positionData:l.depth+.2+r.height+r.depth,children:[{type:"elem",elem:r},{type:"kern",size:.2},{type:"elem",elem:l}]})}return We(["minner",a.isOver?"mover":"munder"],[i],t)};ct({type:"horizBrace",names:["\\overbrace","\\underbrace","\\overbracket","\\underbracket"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:a}=e;return{type:"horizBrace",mode:r.mode,label:a,isOver:a.includes("\\over"),base:t[0]}},htmlBuilder:ya,mathmlBuilder:(e,t)=>{var r=$t(e.label);return new qt(e.isOver?"mover":"munder",[Ft(e.base,t),r])}}),ct({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,a=t[1],n=Qt(t[0],"url").url;return r.settings.isTrusted({command:"\\href",url:n})?{type:"href",mode:r.mode,href:n,body:dt(a)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:(e,t)=>{var r=yt(e.body,t,!1);return function(e,t,r,a){var n=new G(e,t,r,a);return Ye(n),n}(e.href,[],r,t)},mathmlBuilder:(e,t)=>{var r=Pt(e.body,t);return r instanceof qt||(r=new qt("mrow",[r])),r.setAttribute("href",e.href),r}}),ct({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,a=Qt(t[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:a}))return r.formatUnsupportedCmd("\\url");for(var n=[],i=0;i<a.length;i++){var o=a[i];"~"===o&&(o="\\textasciitilde"),n.push({type:"textord",mode:"text",text:o})}var s={type:"text",mode:r.mode,font:"\\texttt",body:n};return{type:"href",mode:r.mode,href:a,body:dt(s)}}}),ct({type:"hbox",names:["\\hbox"],props:{numArgs:1,argTypes:["text"],allowedInText:!0,primitive:!0},handler(e,t){var{parser:r}=e;return{type:"hbox",mode:r.mode,body:dt(t[0])}},htmlBuilder(e,t){var r=yt(e.body,t,!1);return $e(r)},mathmlBuilder:(e,t)=>new qt("mrow",Lt(e.body,t))}),ct({type:"html",names:["\\htmlClass","\\htmlId","\\htmlStyle","\\htmlData"],props:{numArgs:2,argTypes:["raw","original"],allowedInText:!0},handler:(e,t)=>{var r,{parser:n,funcName:i,token:o}=e,s=Qt(t[0],"raw").string,l=t[1];n.settings.strict&&n.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var h={};switch(i){case"\\htmlClass":h.class=s,r={command:"\\htmlClass",class:s};break;case"\\htmlId":h.id=s,r={command:"\\htmlId",id:s};break;case"\\htmlStyle":h.style=s,r={command:"\\htmlStyle",style:s};break;case"\\htmlData":for(var m=s.split(","),c=0;c<m.length;c++){var u=m[c],p=u.indexOf("=");if(p<0)throw new a("\\htmlData key/value '"+u+"' missing equals sign");var d=u.slice(0,p),g=u.slice(p+1);h["data-"+d.trim()]=g}r={command:"\\htmlData",attributes:h};break;default:throw new Error("Unrecognized html command")}return n.settings.isTrusted(r)?{type:"html",mode:n.mode,attributes:h,body:dt(l)}:n.formatUnsupportedCmd(i)},htmlBuilder:(e,t)=>{var r=yt(e.body,t,!1),a=["enclosing"];e.attributes.class&&a.push(...e.attributes.class.trim().split(/\s+/));var n=We(a,r,t);for(var i in e.attributes)"class"!==i&&e.attributes.hasOwnProperty(i)&&n.setAttribute(i,e.attributes[i]);return n},mathmlBuilder:(e,t)=>Pt(e.body,t)}),ct({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInArgument:!0,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e;return{type:"htmlmathml",mode:r.mode,html:dt(t[0]),mathml:dt(t[1])}},htmlBuilder:(e,t)=>{var r=yt(e.html,t,!1);return $e(r)},mathmlBuilder:(e,t)=>Pt(e.mathml,t)});var xa=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var t=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!t)throw new a("Invalid size: '"+e+"' in \\includegraphics");var r={number:+(t[1]+t[2]),unit:t[3]};if(!H(r))throw new a("Invalid unit: '"+r.unit+"' in \\includegraphics.");return r};ct({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(e,t,r)=>{var{parser:n}=e,i={number:0,unit:"em"},o={number:.9,unit:"em"},s={number:0,unit:"em"},l="";if(r[0])for(var h=Qt(r[0],"raw").string.split(","),m=0;m<h.length;m++){var c=h[m].split("=");if(2===c.length){var u=c[1].trim();switch(c[0].trim()){case"alt":l=u;break;case"width":i=xa(u);break;case"height":o=xa(u);break;case"totalheight":s=xa(u);break;default:throw new a("Invalid key: '"+c[0]+"' in \\includegraphics.")}}}var p=Qt(t[0],"url").url;return""===l&&(l=(l=(l=p).replace(/^.*[\\/]/,"")).substring(0,l.lastIndexOf("."))),n.settings.isTrusted({command:"\\includegraphics",url:p})?{type:"includegraphics",mode:n.mode,alt:l,width:i,height:o,totalheight:s,src:p}:n.formatUnsupportedCmd("\\includegraphics")},htmlBuilder:(e,t)=>{var r=E(e.height,t),a=0;e.totalheight.number>0&&(a=E(e.totalheight,t)-r);var n=0;e.width.number>0&&(n=E(e.width,t));var i={height:N(r+a)};n>0&&(i.width=N(n)),a>0&&(i.verticalAlign=N(-a));var o=new U(e.src,e.alt,i);return o.height=r,o.depth=a,o},mathmlBuilder:(e,t)=>{var r=new qt("mglyph",[]);r.setAttribute("alt",e.alt);var a=E(e.height,t),n=0;if(e.totalheight.number>0&&(n=E(e.totalheight,t)-a,r.setAttribute("valign",N(-n))),r.setAttribute("height",N(a+n)),e.width.number>0){var i=E(e.width,t);r.setAttribute("width",N(i))}return r.setAttribute("src",e.src),r}}),ct({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:a}=e,n=Qt(t[0],"size");if(r.settings.strict){var i="m"===a[1],o="mu"===n.value.unit;i?(o||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" supports only mu units, not "+n.value.unit+" units"),"math"!==r.mode&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" works only in math mode")):o&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:n.value}},htmlBuilder:(e,t)=>Je(e.dimension,t),mathmlBuilder(e,t){var r=E(e.dimension,t);return new It(r)}}),ct({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=t[0];return{type:"lap",mode:r.mode,alignment:a.slice(5),body:n}},htmlBuilder:(e,t)=>{var r;"clap"===e.alignment?(r=We([],[Mt(e.body,t)]),r=We(["inner"],[r],t)):r=We(["inner"],[Mt(e.body,t)]);var a=We(["fix"],[]),n=We([e.alignment],[r,a],t),i=We(["strut"]);return i.style.height=N(n.height+n.depth),n.depth&&(i.style.verticalAlign=N(-n.depth)),n.children.unshift(i),n=We(["thinbox"],[n],t),We(["mord","vbox"],[n],t)},mathmlBuilder:(e,t)=>{var r=new qt("mpadded",[Ft(e.body,t)]);if("rlap"!==e.alignment){var a="llap"===e.alignment?"-1":"-0.5";r.setAttribute("lspace",a+"width")}return r.setAttribute("width","0px"),r}}),ct({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){var{funcName:r,parser:a}=e,n=a.mode;a.switchMode("math");var i="\\("===r?"\\)":"$",o=a.parseExpression(!1,i);return a.expect(i),a.switchMode(n),{type:"styling",mode:a.mode,style:"text",body:o}}}),ct({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){throw new a("Mismatched "+e.funcName)}});var wa=(e,t)=>{switch(t.style.size){case S.DISPLAY.size:return e.display;case S.TEXT.size:return e.text;case S.SCRIPT.size:return e.script;case S.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}};ct({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(e,t)=>{var{parser:r}=e;return{type:"mathchoice",mode:r.mode,display:dt(t[0]),text:dt(t[1]),script:dt(t[2]),scriptscript:dt(t[3])}},htmlBuilder:(e,t)=>{var r=wa(e,t),a=yt(r,t,!1);return $e(a)},mathmlBuilder:(e,t)=>{var r=wa(e,t);return Pt(r,t)}});var ka=(e,t,r,a,n,i,o)=>{e=We([],[e]);var s,l,h,m=r&&c(r);if(t){var u=Mt(t,a.havingStyle(n.sup()),a);l={elem:u,kern:Math.max(a.fontMetrics().bigOpSpacing1,a.fontMetrics().bigOpSpacing3-u.depth)}}if(r){var p=Mt(r,a.havingStyle(n.sub()),a);s={elem:p,kern:Math.max(a.fontMetrics().bigOpSpacing2,a.fontMetrics().bigOpSpacing4-p.height)}}if(l&&s){var d=a.fontMetrics().bigOpSpacing5+s.elem.height+s.elem.depth+s.kern+e.depth+o;h=Ke({positionType:"bottom",positionData:d,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:N(-i)},{type:"kern",size:s.kern},{type:"elem",elem:e},{type:"kern",size:l.kern},{type:"elem",elem:l.elem,marginLeft:N(i)},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]})}else if(s){var g=e.height-o;h=Ke({positionType:"top",positionData:g,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:N(-i)},{type:"kern",size:s.kern},{type:"elem",elem:e}]})}else{if(!l)return e;var f=e.depth+o;h=Ke({positionType:"bottom",positionData:f,children:[{type:"elem",elem:e},{type:"kern",size:l.kern},{type:"elem",elem:l.elem,marginLeft:N(i)},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]})}var v=[h];if(s&&0!==i&&!m){var b=We(["mspace"],[],a);b.style.marginRight=N(i),v.unshift(b)}return We(["mop","op-limits"],v,a)},Sa=new Set(["\\smallint"]),za=(e,t)=>{var r,a,n,i=!1;"supsub"===e.type?(r=e.sup,a=e.sub,n=Qt(e.base,"op"),i=!0):n=Qt(e,"op");var o,s=t.style,l=!1;if(s.size===S.DISPLAY.size&&n.symbol&&!Sa.has(n.name)&&(l=!0),n.symbol){var h=l?"Size2-Regular":"Size1-Regular",m="";if("\\oiint"!==n.name&&"\\oiiint"!==n.name||(m=n.name.slice(1),n.name="oiint"===m?"\\iint":"\\iiint"),o=Fe(n.name,h,"math",t,["mop","op-symbol",l?"large-op":"small-op"]),m.length>0){var c=o.italic,u=rt(m+"Size"+(l?"2":"1"),t);o=Ke({positionType:"individualShift",children:[{type:"elem",elem:o,shift:0},{type:"elem",elem:u,shift:l?.08:0}]}),n.name="\\"+m,o.classes.unshift("mop"),o.italic=c}}else if(n.body){var p=yt(n.body,t,!0);1===p.length&&p[0]instanceof Y?(o=p[0]).classes[0]="mop":o=We(["mop"],p,t)}else{for(var d=[],g=1;g<n.name.length;g++)d.push(Ve(n.name[g],n.mode,t));o=We(["mop"],d,t)}var f=0,v=0;return(o instanceof Y||"\\oiint"===n.name||"\\oiiint"===n.name)&&!n.suppressBaseShift&&(f=(o.height-o.depth)/2-t.fontMetrics().axisHeight,v=o.italic||0),i?ka(o,r,a,t,s,v,f):(f&&(o.style.position="relative",o.style.top=N(f)),o)},Ma=(e,t)=>{var r;if(e.symbol)r=new qt("mo",[Et(e.name,e.mode)]),Sa.has(e.name)&&r.setAttribute("largeop","false");else if(e.body)r=new qt("mo",Lt(e.body,t));else{r=new qt("mi",[new Ct(e.name.slice(1))]);var a=new qt("mo",[Et("\u2061","text")]);r=e.parentIsSupSub?new qt("mrow",[r,a]):Bt([r,a])}return r},Aa={"\u220f":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22c0":"\\bigwedge","\u22c1":"\\bigvee","\u22c2":"\\bigcap","\u22c3":"\\bigcup","\u2a00":"\\bigodot","\u2a01":"\\bigoplus","\u2a02":"\\bigotimes","\u2a04":"\\biguplus","\u2a06":"\\bigsqcup"};ct({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","\u220f","\u2210","\u2211","\u22c0","\u22c1","\u22c2","\u22c3","\u2a00","\u2a01","\u2a02","\u2a04","\u2a06"],props:{numArgs:0},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=a;return 1===n.length&&(n=Aa[n]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:za,mathmlBuilder:Ma}),ct({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var{parser:r}=e,a=t[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:dt(a)}},htmlBuilder:za,mathmlBuilder:Ma});var Ta={"\u222b":"\\int","\u222c":"\\iint","\u222d":"\\iiint","\u222e":"\\oint","\u222f":"\\oiint","\u2230":"\\oiiint"};ct({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:za,mathmlBuilder:Ma}),ct({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:za,mathmlBuilder:Ma}),ct({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","\u222b","\u222c","\u222d","\u222e","\u222f","\u2230"],props:{numArgs:0,allowedInArgument:!0},handler(e){var{parser:t,funcName:r}=e,a=r;return 1===a.length&&(a=Ta[a]),{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:a}},htmlBuilder:za,mathmlBuilder:Ma});var Ba=(e,t)=>{var r,a,n,i,o=!1;if("supsub"===e.type?(r=e.sup,a=e.sub,n=Qt(e.base,"operatorname"),o=!0):n=Qt(e,"operatorname"),n.body.length>0){for(var s=(n.body.map(e=>{var t="text"in e?e.text:void 0;return"string"==typeof t?{type:"textord",mode:e.mode,text:t}:e})),l=yt(s,t.withFont("mathrm"),!0),h=0;h<l.length;h++){var m=l[h];m instanceof Y&&(m.text=m.text.replace(/\u2212/,"-").replace(/\u2217/,"*"))}i=We(["mop"],l,t)}else i=We(["mop"],[],t);return o?ka(i,r,a,t,t.style,0,0):i};function qa(e,t,r){for(var a=yt(e,t,!1),n=t.sizeMultiplier/r.sizeMultiplier,i=0;i<a.length;i++){var o=a[i].classes.indexOf("sizing");o<0?Array.prototype.push.apply(a[i].classes,t.sizingClasses(r)):a[i].classes[o+1]==="reset-size"+t.size&&(a[i].classes[o+1]="reset-size"+r.size),a[i].height*=n,a[i].depth*=n}return $e(a)}ct({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=t[0];return{type:"operatorname",mode:r.mode,body:dt(n),alwaysHandleSupSub:"\\operatornamewithlimits"===a,limits:!1,parentIsSupSub:!1}},htmlBuilder:Ba,mathmlBuilder:(e,t)=>{for(var r=Lt(e.body,t.withFont("mathrm")),a=!0,n=0;n<r.length;n++){var i=r[n];if(i instanceof It);else if(i instanceof qt)switch(i.type){case"mi":case"mn":case"mspace":case"mtext":break;case"mo":var o=i.children[0];1===i.children.length&&o instanceof Ct?o.text=o.text.replace(/\u2212/,"-").replace(/\u2217/,"*"):a=!1;break;default:a=!1}else a=!1}if(a){var s=r.map(e=>e.toText()).join("");r=[new Ct(s)]}var l=new qt("mi",r);l.setAttribute("mathvariant","normal");var h=new qt("mo",[Et("\u2061","text")]);return e.parentIsSupSub?new qt("mrow",[l,h]):Bt([l,h])}}),Qr("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@"),ut({type:"ordgroup",htmlBuilder:(e,t)=>e.semisimple?$e(yt(e.body,t,!1)):We(["mord"],yt(e.body,t,!0),t),mathmlBuilder:(e,t)=>Pt(e.body,t,!0)}),ct({type:"overline",names:["\\overline"],props:{numArgs:1},handler(e,t){var{parser:r}=e,a=t[0];return{type:"overline",mode:r.mode,body:a}},htmlBuilder(e,t){var r=Mt(e.body,t.havingCrampedStyle()),a=_e("overline-line",t),n=t.fontMetrics().defaultRuleThickness,i=Ke({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*n},{type:"elem",elem:a},{type:"kern",size:n}]});return We(["mord","overline"],[i],t)},mathmlBuilder(e,t){var r=new qt("mo",[new Ct("\u203e")]);r.setAttribute("stretchy","true");var a=new qt("mover",[Ft(e.body,t),r]);return a.setAttribute("accent","true"),a}}),ct({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,a=t[0];return{type:"phantom",mode:r.mode,body:dt(a)}},htmlBuilder:(e,t)=>{var r=yt(e.body,t.withPhantom(),!1);return $e(r)},mathmlBuilder:(e,t)=>{var r=Lt(e.body,t);return new qt("mphantom",r)}}),Qr("\\hphantom","\\smash{\\phantom{#1}}"),ct({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,a=t[0];return{type:"vphantom",mode:r.mode,body:a}},htmlBuilder:(e,t)=>{var r=We(["inner"],[Mt(e.body,t.withPhantom())]),a=We(["fix"],[]);return We(["mord","rlap"],[r,a],t)},mathmlBuilder:(e,t)=>{var r=Lt(dt(e.body),t),a=new qt("mphantom",r),n=new qt("mpadded",[a]);return n.setAttribute("width","0px"),n}}),ct({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e,a=Qt(t[0],"size").value,n=t[1];return{type:"raisebox",mode:r.mode,dy:a,body:n}},htmlBuilder(e,t){var r=Mt(e.body,t),a=E(e.dy,t);return Ke({positionType:"shift",positionData:-a,children:[{type:"elem",elem:r}]})},mathmlBuilder(e,t){var r=new qt("mpadded",[Ft(e.body,t)]),a=e.dy.number+e.dy.unit;return r.setAttribute("voffset",a),r}}),ct({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(e){var{parser:t}=e;return{type:"internal",mode:t.mode}}}),ct({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(e,t,r){var{parser:a}=e,n=r[0],i=Qt(t[0],"size"),o=Qt(t[1],"size");return{type:"rule",mode:a.mode,shift:n&&Qt(n,"size").value,width:i.value,height:o.value}},htmlBuilder(e,t){var r=We(["mord","rule"],[],t),a=E(e.width,t),n=E(e.height,t),i=e.shift?E(e.shift,t):0;return r.style.borderRightWidth=N(a),r.style.borderTopWidth=N(n),r.style.bottom=N(i),r.width=a,r.height=n+i,r.depth=-i,r.maxFontSize=1.125*n*t.sizeMultiplier,r},mathmlBuilder(e,t){var r=E(e.width,t),a=E(e.height,t),n=e.shift?E(e.shift,t):0,i=t.color&&t.getColor()||"black",o=new qt("mspace");o.setAttribute("mathbackground",i),o.setAttribute("width",N(r)),o.setAttribute("height",N(a));var s=new qt("mpadded",[o]);return n>=0?s.setAttribute("height",N(n)):(s.setAttribute("height",N(n)),s.setAttribute("depth",N(-n))),s.setAttribute("voffset",N(n)),s}});var Ca=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];ct({type:"sizing",names:Ca,props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{var{breakOnTokenText:r,funcName:a,parser:n}=e,i=n.parseExpression(!1,r);return{type:"sizing",mode:n.mode,size:Ca.indexOf(a)+1,body:i}},htmlBuilder:(e,t)=>{var r=t.havingSize(e.size);return qa(e.body,r,t)},mathmlBuilder:(e,t)=>{var r=t.havingSize(e.size),a=Lt(e.body,r),n=new qt("mstyle",a);return n.setAttribute("mathsize",N(r.sizeMultiplier)),n}}),ct({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(e,t,r)=>{var{parser:a}=e,n=!1,i=!1,o=r[0]&&Qt(r[0],"ordgroup");if(o)for(var s="",l=0;l<o.body.length;++l){if("t"===(s=er(o.body[l]).text))n=!0;else{if("b"!==s){n=!1,i=!1;break}i=!0}}else n=!0,i=!0;var h=t[0];return{type:"smash",mode:a.mode,body:h,smashHeight:n,smashDepth:i}},htmlBuilder:(e,t)=>{var r=We([],[Mt(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return r;if(e.smashHeight&&(r.height=0),e.smashDepth&&(r.depth=0),e.smashHeight&&e.smashDepth)return We(["mord","smash"],[r],t);if(r.children)for(var a=0;a<r.children.length;a++)e.smashHeight&&(r.children[a].height=0),e.smashDepth&&(r.children[a].depth=0);var n=Ke({positionType:"firstBaseline",children:[{type:"elem",elem:r}]});return We(["mord"],[n],t)},mathmlBuilder:(e,t)=>{var r=new qt("mpadded",[Ft(e.body,t)]);return e.smashHeight&&r.setAttribute("height","0px"),e.smashDepth&&r.setAttribute("depth","0px"),r}}),ct({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:a}=e,n=r[0],i=t[0];return{type:"sqrt",mode:a.mode,body:i,index:n}},htmlBuilder(e,t){var r=Mt(e.body,t.havingCrampedStyle());0===r.height&&(r.height=t.fontMetrics().xHeight),r=Ze(r,t);var a=t.fontMetrics().defaultRuleThickness,n=a;t.style.id<S.TEXT.id&&(n=t.fontMetrics().xHeight);var i=a+n/4,o=r.height+r.depth+i+a,{span:s,ruleWidth:l,advanceWidth:h}=function(e,t){var r,a,n=t.havingBaseSizing(),i=Vr("\\surd",e*n.sizeMultiplier,Pr,n),o=n.sizeMultiplier,s=Math.max(0,t.minRuleThickness-t.fontMetrics().sqrtRuleThickness),l=0,h=0,m=0;return"small"===i.type?(e<1?o=1:e<1.4&&(o=.7),h=(1+s)/o,(r=Ir("sqrtMain",l=(1+s+Cr)/o,m=1e3+1e3*s+80,s,t)).style.minWidth="0.853em",a=.833/o):"large"===i.type?(m=1080*Nr[i.size],h=(Nr[i.size]+s)/o,l=(Nr[i.size]+s+Cr)/o,(r=Ir("sqrtSize"+i.size,l,m,s,t)).style.minWidth="1.02em",a=1/o):(l=e+s+Cr,h=e+s,m=Math.floor(1e3*e+s)+80,(r=Ir("sqrtTall",l,m,s,t)).style.minWidth="0.742em",a=1.056),r.height=h,r.style.height=N(l),{span:r,advanceWidth:a,ruleWidth:(t.fontMetrics().sqrtRuleThickness+s)*o}}(o,t),m=s.height-l;m>r.height+r.depth+i&&(i=(i+m-r.height-r.depth)/2);var c=s.height-r.height-i-l;r.style.paddingLeft=N(h);var u=Ke({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+c)},{type:"elem",elem:s},{type:"kern",size:l}]});if(e.index){var p=t.havingStyle(S.SCRIPTSCRIPT),d=Mt(e.index,p,t),g=.6*(u.height-u.depth),f=Ke({positionType:"shift",positionData:-g,children:[{type:"elem",elem:d}]}),v=We(["root"],[f]);return We(["mord","sqrt"],[v,u],t)}return We(["mord","sqrt"],[u],t)},mathmlBuilder(e,t){var{body:r,index:a}=e;return a?new qt("mroot",[Ft(r,t),Ft(a,t)]):new qt("msqrt",[Ft(r,t)])}});var Ia={display:S.DISPLAY,text:S.TEXT,script:S.SCRIPT,scriptscript:S.SCRIPTSCRIPT};ct({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e,t){var{breakOnTokenText:r,funcName:a,parser:n}=e,i=n.parseExpression(!0,r),o=a.slice(1,a.length-5);return{type:"styling",mode:n.mode,style:o,body:i}},htmlBuilder(e,t){var r=Ia[e.style],a=t.havingStyle(r).withFont("");return qa(e.body,a,t)},mathmlBuilder(e,t){var r=Ia[e.style],a=t.havingStyle(r),n=Lt(e.body,a),i=new qt("mstyle",n),o={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[e.style];return i.setAttribute("scriptlevel",o[0]),i.setAttribute("displaystyle",o[1]),i}});ut({type:"supsub",htmlBuilder(e,t){var r=function(e,t){var r=e.base;return r?"op"===r.type?r.limits&&(t.style.size===S.DISPLAY.size||r.alwaysHandleSupSub)?za:null:"operatorname"===r.type?r.alwaysHandleSupSub&&(t.style.size===S.DISPLAY.size||r.limits)?Ba:null:"accent"===r.type?c(r.base)?ar:null:"horizBrace"===r.type&&!e.sub===r.isOver?ya:null:null}(e,t);if(r)return r(e,t);var a,n,i,{base:o,sup:s,sub:l}=e,h=Mt(o,t),m=t.fontMetrics(),u=0,p=0,d=o&&c(o);if(s){var g=t.havingStyle(t.style.sup());a=Mt(s,g,t),d||(u=h.height-g.fontMetrics().supDrop*g.sizeMultiplier/t.sizeMultiplier)}if(l){var f=t.havingStyle(t.style.sub());n=Mt(l,f,t),d||(p=h.depth+f.fontMetrics().subDrop*f.sizeMultiplier/t.sizeMultiplier)}i=t.style===S.DISPLAY?m.sup1:t.style.cramped?m.sup3:m.sup2;var v,b=t.sizeMultiplier,y=N(.5/m.ptPerEm/b),x=null;if(n){var w=e.base&&"op"===e.base.type&&e.base.name&&("\\oiint"===e.base.name||"\\oiiint"===e.base.name);(h instanceof Y||w)&&(x=N(-h.italic))}if(a&&n){u=Math.max(u,i,a.depth+.25*m.xHeight),p=Math.max(p,m.sub2);var k=4*m.defaultRuleThickness;if(u-a.depth-(n.height-p)<k){p=k-(u-a.depth)+n.height;var z=.8*m.xHeight-(u-a.depth);z>0&&(u+=z,p-=z)}v=Ke({positionType:"individualShift",children:[{type:"elem",elem:n,shift:p,marginRight:y,marginLeft:x},{type:"elem",elem:a,shift:-u,marginRight:y}]})}else if(n){p=Math.max(p,m.sub1,n.height-.8*m.xHeight),v=Ke({positionType:"shift",positionData:p,children:[{type:"elem",elem:n,marginLeft:x,marginRight:y}]})}else{if(!a)throw new Error("supsub must have either sup or sub.");u=Math.max(u,i,a.depth+.25*m.xHeight),v=Ke({positionType:"shift",positionData:-u,children:[{type:"elem",elem:a,marginRight:y}]})}var M=St(h,"right")||"mord";return We([M],[h,We(["msupsub"],[v])],t)},mathmlBuilder(e,t){var r,a=!1;e.base&&"horizBrace"===e.base.type&&!!e.sup===e.base.isOver&&(a=!0,r=e.base.isOver),!e.base||"op"!==e.base.type&&"operatorname"!==e.base.type||(e.base.parentIsSupSub=!0);var n,i=[Ft(e.base,t)];if(e.sub&&i.push(Ft(e.sub,t)),e.sup&&i.push(Ft(e.sup,t)),a)n=r?"mover":"munder";else if(e.sub)if(e.sup){var o=e.base;n=o&&"op"===o.type&&o.limits&&t.style===S.DISPLAY||o&&"operatorname"===o.type&&o.alwaysHandleSupSub&&(t.style===S.DISPLAY||o.limits)?"munderover":"msubsup"}else{var s=e.base;n=s&&"op"===s.type&&s.limits&&(t.style===S.DISPLAY||s.alwaysHandleSupSub)||s&&"operatorname"===s.type&&s.alwaysHandleSupSub&&(s.limits||t.style===S.DISPLAY)?"munder":"msub"}else{var l=e.base;n=l&&"op"===l.type&&l.limits&&(t.style===S.DISPLAY||l.alwaysHandleSupSub)||l&&"operatorname"===l.type&&l.alwaysHandleSupSub&&(l.limits||t.style===S.DISPLAY)?"mover":"msup"}return new qt(n,i)}}),ut({type:"atom",htmlBuilder:(e,t)=>Ve(e.text,e.mode,t,["m"+e.family]),mathmlBuilder(e,t){var r=new qt("mo",[Et(e.text,e.mode)]);if("bin"===e.family){var a=Ot(e,t);"bold-italic"===a&&r.setAttribute("mathvariant",a)}else"punct"===e.family?r.setAttribute("separator","true"):"open"!==e.family&&"close"!==e.family||r.setAttribute("stretchy","false");return r}});var Ra={mi:"italic",mn:"normal",mtext:"normal"};ut({type:"mathord",htmlBuilder:(e,t)=>Ge(e,t,"mathord"),mathmlBuilder(e,t){var r=new qt("mi",[Et(e.text,e.mode,t)]),a=Ot(e,t)||"italic";return a!==Ra[r.type]&&r.setAttribute("mathvariant",a),r}}),ut({type:"textord",htmlBuilder:(e,t)=>Ge(e,t,"textord"),mathmlBuilder(e,t){var r,a=Et(e.text,e.mode,t),n=Ot(e,t)||"normal";return r="text"===e.mode?new qt("mtext",[a]):/[0-9]/.test(e.text)?new qt("mn",[a]):"\\prime"===e.text?new qt("mo",[a]):new qt("mi",[a]),n!==Ra[r.type]&&r.setAttribute("mathvariant",n),r}});var Ha={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Ea={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};ut({type:"spacing",htmlBuilder(e,t){if(Ea.hasOwnProperty(e.text)){var r=Ea[e.text].className||"";if("text"===e.mode){var n=Ge(e,t,"textord");return n.classes.push(r),n}return We(["mspace",r],[Ve(e.text,e.mode,t)],t)}if(Ha.hasOwnProperty(e.text))return We(["mspace",Ha[e.text]],[],t);throw new a('Unknown type of space "'+e.text+'"')},mathmlBuilder(e,t){if(!Ea.hasOwnProperty(e.text)){if(Ha.hasOwnProperty(e.text))return new qt("mspace");throw new a('Unknown type of space "'+e.text+'"')}return new qt("mtext",[new Ct("\xa0")])}});var Na=()=>{var e=new qt("mtd",[]);return e.setAttribute("width","50%"),e};ut({type:"tag",mathmlBuilder(e,t){var r=new qt("mtable",[new qt("mtr",[Na(),new qt("mtd",[Pt(e.body,t)]),Na(),new qt("mtd",[Pt(e.tag,t)])])]);return r.setAttribute("width","100%"),r}});var Oa={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},Da={"\\textbf":"textbf","\\textmd":"textmd"},La={"\\textit":"textit","\\textup":"textup"},Pa=(e,t)=>{var r=e.font;return r?Oa[r]?t.withTextFontFamily(Oa[r]):Da[r]?t.withTextFontWeight(Da[r]):"\\emph"===r?"textit"===t.fontShape?t.withTextFontShape("textup"):t.withTextFontShape("textit"):t.withTextFontShape(La[r]):t};ct({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:a}=e,n=t[0];return{type:"text",mode:r.mode,body:dt(n),font:a}},htmlBuilder(e,t){var r=Pa(e,t),a=yt(e.body,r,!0);return We(["mord","text"],a,r)},mathmlBuilder(e,t){var r=Pa(e,t);return Pt(e.body,r)}}),ct({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"underline",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=Mt(e.body,t),a=_e("underline-line",t),n=t.fontMetrics().defaultRuleThickness,i=Ke({positionType:"top",positionData:r.height,children:[{type:"kern",size:n},{type:"elem",elem:a},{type:"kern",size:3*n},{type:"elem",elem:r}]});return We(["mord","underline"],[i],t)},mathmlBuilder(e,t){var r=new qt("mo",[new Ct("\u203e")]);r.setAttribute("stretchy","true");var a=new qt("munder",[Ft(e.body,t),r]);return a.setAttribute("accentunder","true"),a}}),ct({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"vcenter",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=Mt(e.body,t),a=t.fontMetrics().axisHeight,n=.5*(r.height-a-(r.depth+a));return Ke({positionType:"shift",positionData:n,children:[{type:"elem",elem:r}]})},mathmlBuilder(e,t){var r=new qt("mpadded",[Ft(e.body,t)],["vcenter"]);return new qt("mrow",[r])}}),ct({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(e,t,r){throw new a("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(e,t){for(var r=Fa(e),a=[],n=t.havingStyle(t.style.text()),i=0;i<r.length;i++){var o=r[i];"~"===o&&(o="\\textasciitilde"),a.push(Fe(o,"Typewriter-Regular",e.mode,n,["mord","texttt"]))}return We(["mord","text"].concat(n.sizingClasses(t)),Xe(a),n)},mathmlBuilder(e,t){var r=new Ct(Fa(e)),a=new qt("mtext",[r]);return a.setAttribute("mathvariant","monospace"),a}});var Fa=e=>e.body.replace(/ /g,e.star?"\u2423":"\xa0"),Va=lt,Ga="[ \r\n\t]",Ua="(\\\\[a-zA-Z@]+)"+Ga+"*",Xa="[\u0300-\u036f]",Ya=new RegExp(Xa+"+$"),Wa="("+Ga+"+)|\\\\(\n|[ \r\t]+\n?)[ \r\t]*|([!-\\[\\]-\u2027\u202a-\ud7ff\uf900-\uffff]"+Xa+"*|[\ud800-\udbff][\udc00-\udfff]"+Xa+"*|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5|"+Ua+"|\\\\[^\ud800-\udfff])";class ja{constructor(e,t){this.input=e,this.settings=t,this.tokenRegex=new RegExp(Wa,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,t){this.catcodes[e]=t}lex(){var e=this.input,t=this.tokenRegex.lastIndex;if(t===e.length)return new ta("EOF",new ea(this,t,t));var r=this.tokenRegex.exec(e);if(null===r||r.index!==t)throw new a("Unexpected character: '"+e[t]+"'",new ta(e[t],new ea(this,t,t+1)));var n=r[6]||r[3]||(r[2]?"\\ ":" ");if(14===this.catcodes[n]){var i=e.indexOf("\n",this.tokenRegex.lastIndex);return-1===i?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=i+1,this.lex()}return new ta(n,new ea(this,t,this.tokenRegex.lastIndex))}}class _a{constructor(e,t){void 0===e&&(e={}),void 0===t&&(t={}),this.current=t,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(0===this.undefStack.length)throw new a("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var t in e)e.hasOwnProperty(t)&&(null==e[t]?delete this.current[t]:this.current[t]=e[t])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,t,r){if(void 0===r&&(r=!1),r){for(var a=0;a<this.undefStack.length;a++)delete this.undefStack[a][e];this.undefStack.length>0&&(this.undefStack[this.undefStack.length-1][e]=t)}else{var n=this.undefStack[this.undefStack.length-1];n&&!n.hasOwnProperty(e)&&(n[e]=this.current[e])}null==t?delete this.current[e]:this.current[e]=t}}var $a=Jr;Qr("\\noexpand",function(e){var t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}}),Qr("\\expandafter",function(e){var t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}}),Qr("\\@firstoftwo",function(e){return{tokens:e.consumeArgs(2)[0],numArgs:0}}),Qr("\\@secondoftwo",function(e){return{tokens:e.consumeArgs(2)[1],numArgs:0}}),Qr("\\@ifnextchar",function(e){var t=e.consumeArgs(3);e.consumeSpaces();var r=e.future();return 1===t[0].length&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}}),Qr("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),Qr("\\TextOrMath",function(e){var t=e.consumeArgs(2);return"text"===e.mode?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}});var Za={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};Qr("\\char",function(e){var t,r=e.popToken(),n=0;if("'"===r.text)t=8,r=e.popToken();else if('"'===r.text)t=16,r=e.popToken();else if("`"===r.text)if("\\"===(r=e.popToken()).text[0])n=r.text.charCodeAt(1);else{if("EOF"===r.text)throw new a("\\char` missing argument");n=r.text.charCodeAt(0)}else t=10;if(t){if(null==(n=Za[r.text])||n>=t)throw new a("Invalid base-"+t+" digit "+r.text);for(var i;null!=(i=Za[e.future().text])&&i<t;)n*=t,n+=i,e.popToken()}return"\\@char{"+n+"}"});var Ka=(e,t,r,n)=>{var i=e.consumeArg().tokens;if(1!==i.length)throw new a("\\newcommand's first argument must be a macro name");var o=i[0].text,s=e.isDefined(o);if(s&&!t)throw new a("\\newcommand{"+o+"} attempting to redefine "+o+"; use \\renewcommand");if(!s&&!r)throw new a("\\renewcommand{"+o+"} when command "+o+" does not yet exist; use \\newcommand");var l=0;if(1===(i=e.consumeArg().tokens).length&&"["===i[0].text){for(var h="",m=e.expandNextToken();"]"!==m.text&&"EOF"!==m.text;)h+=m.text,m=e.expandNextToken();if(!h.match(/^\s*[0-9]+\s*$/))throw new a("Invalid number of arguments: "+h);l=parseInt(h),i=e.consumeArg().tokens}return s&&n||e.macros.set(o,{tokens:i,numArgs:l}),""};Qr("\\newcommand",e=>Ka(e,!1,!0,!1)),Qr("\\renewcommand",e=>Ka(e,!0,!1,!1)),Qr("\\providecommand",e=>Ka(e,!0,!0,!0)),Qr("\\message",e=>{var t=e.consumeArgs(1)[0];return console.log(t.reverse().map(e=>e.text).join("")),""}),Qr("\\errmessage",e=>{var t=e.consumeArgs(1)[0];return console.error(t.reverse().map(e=>e.text).join("")),""}),Qr("\\show",e=>{var t=e.popToken(),r=t.text;return console.log(t,e.macros.get(r),Va[r],re.math[r],re.text[r]),""}),Qr("\\bgroup","{"),Qr("\\egroup","}"),Qr("~","\\nobreakspace"),Qr("\\lq","`"),Qr("\\rq","'"),Qr("\\aa","\\r a"),Qr("\\AA","\\r A"),Qr("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xa9}"),Qr("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}"),Qr("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xae}"),Qr("\u212c","\\mathscr{B}"),Qr("\u2130","\\mathscr{E}"),Qr("\u2131","\\mathscr{F}"),Qr("\u210b","\\mathscr{H}"),Qr("\u2110","\\mathscr{I}"),Qr("\u2112","\\mathscr{L}"),Qr("\u2133","\\mathscr{M}"),Qr("\u211b","\\mathscr{R}"),Qr("\u212d","\\mathfrak{C}"),Qr("\u210c","\\mathfrak{H}"),Qr("\u2128","\\mathfrak{Z}"),Qr("\\Bbbk","\\Bbb{k}"),Qr("\\llap","\\mathllap{\\textrm{#1}}"),Qr("\\rlap","\\mathrlap{\\textrm{#1}}"),Qr("\\clap","\\mathclap{\\textrm{#1}}"),Qr("\\mathstrut","\\vphantom{(}"),Qr("\\underbar","\\underline{\\text{#1}}"),Qr("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}\\nobreak}{\\char"338}'),Qr("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}"),Qr("\\ne","\\neq"),Qr("\u2260","\\neq"),Qr("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}"),Qr("\u2209","\\notin"),Qr("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}"),Qr("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}"),Qr("\u225a","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225a}}"),Qr("\u225b","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225b}}"),Qr("\u225d","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225d}}"),Qr("\u225e","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225e}}"),Qr("\u225f","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225f}}"),Qr("\u27c2","\\perp"),Qr("\u203c","\\mathclose{!\\mkern-0.8mu!}"),Qr("\u220c","\\notni"),Qr("\u231c","\\ulcorner"),Qr("\u231d","\\urcorner"),Qr("\u231e","\\llcorner"),Qr("\u231f","\\lrcorner"),Qr("\xa9","\\copyright"),Qr("\xae","\\textregistered"),Qr("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}'),Qr("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}'),Qr("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}'),Qr("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}'),Qr("\\vdots","{\\varvdots\\rule{0pt}{15pt}}"),Qr("\u22ee","\\vdots"),Qr("\\varGamma","\\mathit{\\Gamma}"),Qr("\\varDelta","\\mathit{\\Delta}"),Qr("\\varTheta","\\mathit{\\Theta}"),Qr("\\varLambda","\\mathit{\\Lambda}"),Qr("\\varXi","\\mathit{\\Xi}"),Qr("\\varPi","\\mathit{\\Pi}"),Qr("\\varSigma","\\mathit{\\Sigma}"),Qr("\\varUpsilon","\\mathit{\\Upsilon}"),Qr("\\varPhi","\\mathit{\\Phi}"),Qr("\\varPsi","\\mathit{\\Psi}"),Qr("\\varOmega","\\mathit{\\Omega}"),Qr("\\substack","\\begin{subarray}{c}#1\\end{subarray}"),Qr("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax"),Qr("\\boxed","\\fbox{$\\displaystyle{#1}$}"),Qr("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;"),Qr("\\implies","\\DOTSB\\;\\Longrightarrow\\;"),Qr("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;"),Qr("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}"),Qr("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");var Ja={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"},Qa=new Set(["bin","rel"]);Qr("\\dots",function(e){var t="\\dotso",r=e.expandAfterFuture().text;return r in Ja?t=Ja[r]:("\\not"===r.slice(0,4)||r in re.math&&Qa.has(re.math[r].group))&&(t="\\dotsb"),t});var en={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};Qr("\\dotso",function(e){return e.future().text in en?"\\ldots\\,":"\\ldots"}),Qr("\\dotsc",function(e){var t=e.future().text;return t in en&&","!==t?"\\ldots\\,":"\\ldots"}),Qr("\\cdots",function(e){return e.future().text in en?"\\@cdots\\,":"\\@cdots"}),Qr("\\dotsb","\\cdots"),Qr("\\dotsm","\\cdots"),Qr("\\dotsi","\\!\\cdots"),Qr("\\dotsx","\\ldots\\,"),Qr("\\DOTSI","\\relax"),Qr("\\DOTSB","\\relax"),Qr("\\DOTSX","\\relax"),Qr("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),Qr("\\,","\\tmspace+{3mu}{.1667em}"),Qr("\\thinspace","\\,"),Qr("\\>","\\mskip{4mu}"),Qr("\\:","\\tmspace+{4mu}{.2222em}"),Qr("\\medspace","\\:"),Qr("\\;","\\tmspace+{5mu}{.2777em}"),Qr("\\thickspace","\\;"),Qr("\\!","\\tmspace-{3mu}{.1667em}"),Qr("\\negthinspace","\\!"),Qr("\\negmedspace","\\tmspace-{4mu}{.2222em}"),Qr("\\negthickspace","\\tmspace-{5mu}{.277em}"),Qr("\\enspace","\\kern.5em "),Qr("\\enskip","\\hskip.5em\\relax"),Qr("\\quad","\\hskip1em\\relax"),Qr("\\qquad","\\hskip2em\\relax"),Qr("\\tag","\\@ifstar\\tag@literal\\tag@paren"),Qr("\\tag@paren","\\tag@literal{({#1})}"),Qr("\\tag@literal",e=>{if(e.macros.get("\\df@tag"))throw new a("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"}),Qr("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),Qr("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),Qr("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),Qr("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),Qr("\\newline","\\\\\\relax"),Qr("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var tn=N($["Main-Regular"]["T".charCodeAt(0)][1]-.7*$["Main-Regular"]["A".charCodeAt(0)][1]);Qr("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+tn+"}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"),Qr("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+tn+"}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"),Qr("\\hspace","\\@ifstar\\@hspacer\\@hspace"),Qr("\\@hspace","\\hskip #1\\relax"),Qr("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),Qr("\\ordinarycolon",":"),Qr("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),Qr("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),Qr("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),Qr("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),Qr("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),Qr("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),Qr("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),Qr("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),Qr("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),Qr("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),Qr("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),Qr("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),Qr("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),Qr("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),Qr("\u2237","\\dblcolon"),Qr("\u2239","\\eqcolon"),Qr("\u2254","\\coloneqq"),Qr("\u2255","\\eqqcolon"),Qr("\u2a74","\\Coloneqq"),Qr("\\ratio","\\vcentcolon"),Qr("\\coloncolon","\\dblcolon"),Qr("\\colonequals","\\coloneqq"),Qr("\\coloncolonequals","\\Coloneqq"),Qr("\\equalscolon","\\eqqcolon"),Qr("\\equalscoloncolon","\\Eqqcolon"),Qr("\\colonminus","\\coloneq"),Qr("\\coloncolonminus","\\Coloneq"),Qr("\\minuscolon","\\eqcolon"),Qr("\\minuscoloncolon","\\Eqcolon"),Qr("\\coloncolonapprox","\\Colonapprox"),Qr("\\coloncolonsim","\\Colonsim"),Qr("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),Qr("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),Qr("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),Qr("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),Qr("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220c}}"),Qr("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),Qr("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),Qr("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}"),Qr("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}"),Qr("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}"),Qr("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}"),Qr("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}"),Qr("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}"),Qr("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}"),Qr("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}"),Qr("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}"),Qr("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}"),Qr("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}"),Qr("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}"),Qr("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}"),Qr("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}"),Qr("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}"),Qr("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}"),Qr("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228a}"),Qr("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2acb}"),Qr("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228b}"),Qr("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2acc}"),Qr("\\imath","\\html@mathml{\\@imath}{\u0131}"),Qr("\\jmath","\\html@mathml{\\@jmath}{\u0237}"),Qr("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27e6}}"),Qr("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27e7}}"),Qr("\u27e6","\\llbracket"),Qr("\u27e7","\\rrbracket"),Qr("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}"),Qr("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}"),Qr("\u2983","\\lBrace"),Qr("\u2984","\\rBrace"),Qr("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29b5}}"),Qr("\u29b5","\\minuso"),Qr("\\darr","\\downarrow"),Qr("\\dArr","\\Downarrow"),Qr("\\Darr","\\Downarrow"),Qr("\\lang","\\langle"),Qr("\\rang","\\rangle"),Qr("\\uarr","\\uparrow"),Qr("\\uArr","\\Uparrow"),Qr("\\Uarr","\\Uparrow"),Qr("\\N","\\mathbb{N}"),Qr("\\R","\\mathbb{R}"),Qr("\\Z","\\mathbb{Z}"),Qr("\\alef","\\aleph"),Qr("\\alefsym","\\aleph"),Qr("\\Alpha","\\mathrm{A}"),Qr("\\Beta","\\mathrm{B}"),Qr("\\bull","\\bullet"),Qr("\\Chi","\\mathrm{X}"),Qr("\\clubs","\\clubsuit"),Qr("\\cnums","\\mathbb{C}"),Qr("\\Complex","\\mathbb{C}"),Qr("\\Dagger","\\ddagger"),Qr("\\diamonds","\\diamondsuit"),Qr("\\empty","\\emptyset"),Qr("\\Epsilon","\\mathrm{E}"),Qr("\\Eta","\\mathrm{H}"),Qr("\\exist","\\exists"),Qr("\\harr","\\leftrightarrow"),Qr("\\hArr","\\Leftrightarrow"),Qr("\\Harr","\\Leftrightarrow"),Qr("\\hearts","\\heartsuit"),Qr("\\image","\\Im"),Qr("\\infin","\\infty"),Qr("\\Iota","\\mathrm{I}"),Qr("\\isin","\\in"),Qr("\\Kappa","\\mathrm{K}"),Qr("\\larr","\\leftarrow"),Qr("\\lArr","\\Leftarrow"),Qr("\\Larr","\\Leftarrow"),Qr("\\lrarr","\\leftrightarrow"),Qr("\\lrArr","\\Leftrightarrow"),Qr("\\Lrarr","\\Leftrightarrow"),Qr("\\Mu","\\mathrm{M}"),Qr("\\natnums","\\mathbb{N}"),Qr("\\Nu","\\mathrm{N}"),Qr("\\Omicron","\\mathrm{O}"),Qr("\\plusmn","\\pm"),Qr("\\rarr","\\rightarrow"),Qr("\\rArr","\\Rightarrow"),Qr("\\Rarr","\\Rightarrow"),Qr("\\real","\\Re"),Qr("\\reals","\\mathbb{R}"),Qr("\\Reals","\\mathbb{R}"),Qr("\\Rho","\\mathrm{P}"),Qr("\\sdot","\\cdot"),Qr("\\sect","\\S"),Qr("\\spades","\\spadesuit"),Qr("\\sub","\\subset"),Qr("\\sube","\\subseteq"),Qr("\\supe","\\supseteq"),Qr("\\Tau","\\mathrm{T}"),Qr("\\thetasym","\\vartheta"),Qr("\\weierp","\\wp"),Qr("\\Zeta","\\mathrm{Z}"),Qr("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),Qr("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),Qr("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),Qr("\\bra","\\mathinner{\\langle{#1}|}"),Qr("\\ket","\\mathinner{|{#1}\\rangle}"),Qr("\\braket","\\mathinner{\\langle{#1}\\rangle}"),Qr("\\Bra","\\left\\langle#1\\right|"),Qr("\\Ket","\\left|#1\\right\\rangle");var rn=e=>t=>{var r=t.consumeArg().tokens,a=t.consumeArg().tokens,n=t.consumeArg().tokens,i=t.consumeArg().tokens,o=t.macros.get("|"),s=t.macros.get("\\|");t.macros.beginGroup();var l=t=>r=>{e&&(r.macros.set("|",o),n.length&&r.macros.set("\\|",s));var i=t;!t&&n.length&&("|"===r.future().text&&(r.popToken(),i=!0));return{tokens:i?n:a,numArgs:0}};t.macros.set("|",l(!1)),n.length&&t.macros.set("\\|",l(!0));var h=t.consumeArg().tokens,m=t.expandTokens([...i,...h,...r]);return t.macros.endGroup(),{tokens:m.reverse(),numArgs:0}};Qr("\\bra@ket",rn(!1)),Qr("\\bra@set",rn(!0)),Qr("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}"),Qr("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}"),Qr("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}"),Qr("\\angln","{\\angl n}"),Qr("\\blue","\\textcolor{##6495ed}{#1}"),Qr("\\orange","\\textcolor{##ffa500}{#1}"),Qr("\\pink","\\textcolor{##ff00af}{#1}"),Qr("\\red","\\textcolor{##df0030}{#1}"),Qr("\\green","\\textcolor{##28ae7b}{#1}"),Qr("\\gray","\\textcolor{gray}{#1}"),Qr("\\purple","\\textcolor{##9d38bd}{#1}"),Qr("\\blueA","\\textcolor{##ccfaff}{#1}"),Qr("\\blueB","\\textcolor{##80f6ff}{#1}"),Qr("\\blueC","\\textcolor{##63d9ea}{#1}"),Qr("\\blueD","\\textcolor{##11accd}{#1}"),Qr("\\blueE","\\textcolor{##0c7f99}{#1}"),Qr("\\tealA","\\textcolor{##94fff5}{#1}"),Qr("\\tealB","\\textcolor{##26edd5}{#1}"),Qr("\\tealC","\\textcolor{##01d1c1}{#1}"),Qr("\\tealD","\\textcolor{##01a995}{#1}"),Qr("\\tealE","\\textcolor{##208170}{#1}"),Qr("\\greenA","\\textcolor{##b6ffb0}{#1}"),Qr("\\greenB","\\textcolor{##8af281}{#1}"),Qr("\\greenC","\\textcolor{##74cf70}{#1}"),Qr("\\greenD","\\textcolor{##1fab54}{#1}"),Qr("\\greenE","\\textcolor{##0d923f}{#1}"),Qr("\\goldA","\\textcolor{##ffd0a9}{#1}"),Qr("\\goldB","\\textcolor{##ffbb71}{#1}"),Qr("\\goldC","\\textcolor{##ff9c39}{#1}"),Qr("\\goldD","\\textcolor{##e07d10}{#1}"),Qr("\\goldE","\\textcolor{##a75a05}{#1}"),Qr("\\redA","\\textcolor{##fca9a9}{#1}"),Qr("\\redB","\\textcolor{##ff8482}{#1}"),Qr("\\redC","\\textcolor{##f9685d}{#1}"),Qr("\\redD","\\textcolor{##e84d39}{#1}"),Qr("\\redE","\\textcolor{##bc2612}{#1}"),Qr("\\maroonA","\\textcolor{##ffbde0}{#1}"),Qr("\\maroonB","\\textcolor{##ff92c6}{#1}"),Qr("\\maroonC","\\textcolor{##ed5fa6}{#1}"),Qr("\\maroonD","\\textcolor{##ca337c}{#1}"),Qr("\\maroonE","\\textcolor{##9e034e}{#1}"),Qr("\\purpleA","\\textcolor{##ddd7ff}{#1}"),Qr("\\purpleB","\\textcolor{##c6b9fc}{#1}"),Qr("\\purpleC","\\textcolor{##aa87ff}{#1}"),Qr("\\purpleD","\\textcolor{##7854ab}{#1}"),Qr("\\purpleE","\\textcolor{##543b78}{#1}"),Qr("\\mintA","\\textcolor{##f5f9e8}{#1}"),Qr("\\mintB","\\textcolor{##edf2df}{#1}"),Qr("\\mintC","\\textcolor{##e0e5cc}{#1}"),Qr("\\grayA","\\textcolor{##f6f7f7}{#1}"),Qr("\\grayB","\\textcolor{##f0f1f2}{#1}"),Qr("\\grayC","\\textcolor{##e3e5e6}{#1}"),Qr("\\grayD","\\textcolor{##d6d8da}{#1}"),Qr("\\grayE","\\textcolor{##babec2}{#1}"),Qr("\\grayF","\\textcolor{##888d93}{#1}"),Qr("\\grayG","\\textcolor{##626569}{#1}"),Qr("\\grayH","\\textcolor{##3b3e40}{#1}"),Qr("\\grayI","\\textcolor{##21242c}{#1}"),Qr("\\kaBlue","\\textcolor{##314453}{#1}"),Qr("\\kaGreen","\\textcolor{##71B307}{#1}");var an={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class nn{constructor(e,t,r){this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new _a($a,t.macros),this.mode=r,this.stack=[]}feed(e){this.lexer=new ja(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){var t,r,a;if(e){if(this.consumeSpaces(),"["!==this.future().text)return null;t=this.popToken(),({tokens:a,end:r}=this.consumeArg(["]"]))}else({tokens:a,start:t,end:r}=this.consumeArg());return this.pushToken(new ta("EOF",r.loc)),this.pushTokens(a),new ta("",ea.range(t,r))}consumeSpaces(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}}consumeArg(e){var t=[],r=e&&e.length>0;r||this.consumeSpaces();var n,i=this.future(),o=0,s=0;do{if(n=this.popToken(),t.push(n),"{"===n.text)++o;else if("}"===n.text){if(-1===--o)throw new a("Extra }",n)}else if("EOF"===n.text)throw new a("Unexpected end of input in a macro argument, expected '"+(e&&r?e[s]:"}")+"'",n);if(e&&r)if((0===o||1===o&&"{"===e[s])&&n.text===e[s]){if(++s===e.length){t.splice(-s,s);break}}else s=0}while(0!==o||r);return"{"===i.text&&"}"===t[t.length-1].text&&(t.pop(),t.shift()),t.reverse(),{tokens:t,start:i,end:n}}consumeArgs(e,t){if(t){if(t.length!==e+1)throw new a("The length of delimiters doesn't match the number of args!");for(var r=t[0],n=0;n<r.length;n++){var i=this.popToken();if(r[n]!==i.text)throw new a("Use of the macro doesn't match its definition",i)}}for(var o=[],s=0;s<e;s++)o.push(this.consumeArg(t&&t[s+1]).tokens);return o}countExpansion(e){if(this.expansionCount+=e,this.expansionCount>this.settings.maxExpand)throw new a("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var t=this.popToken(),r=t.text,n=t.noexpand?null:this._getExpansion(r);if(null==n||e&&n.unexpandable){if(e&&null==n&&"\\"===r[0]&&!this.isDefined(r))throw new a("Undefined control sequence: "+r);return this.pushToken(t),!1}this.countExpansion(1);var i=n.tokens,o=this.consumeArgs(n.numArgs,n.delimiters);if(n.numArgs)for(var s=(i=i.slice()).length-1;s>=0;--s){var l=i[s];if("#"===l.text){if(0===s)throw new a("Incomplete placeholder at end of macro body",l);if("#"===(l=i[--s]).text)i.splice(s+1,1);else{if(!/^[1-9]$/.test(l.text))throw new a("Not a valid argument number",l);i.splice(s,2,...o[+l.text-1])}}}return this.pushTokens(i),i.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(!1===this.expandOnce()){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}}expandMacro(e){return this.macros.has(e)?this.expandTokens([new ta(e)]):void 0}expandTokens(e){var t=[],r=this.stack.length;for(this.pushTokens(e);this.stack.length>r;)if(!1===this.expandOnce(!0)){var a=this.stack.pop();a.treatAsRelax&&(a.noexpand=!1,a.treatAsRelax=!1),t.push(a)}return this.countExpansion(t.length),t}expandMacroAsText(e){var t=this.expandMacro(e);return t?t.map(e=>e.text).join(""):t}_getExpansion(e){var t=this.macros.get(e);if(null==t)return t;if(1===e.length){var r=this.lexer.catcodes[e];if(null!=r&&13!==r)return}var a="function"==typeof t?t(this):t;if("string"==typeof a){var n=0;if(a.includes("#"))for(var i=a.replace(/##/g,"");i.includes("#"+(n+1));)++n;for(var o=new ja(a,this.settings),s=[],l=o.lex();"EOF"!==l.text;)s.push(l),l=o.lex();return s.reverse(),{tokens:s,numArgs:n}}return a}isDefined(e){return this.macros.has(e)||Va.hasOwnProperty(e)||re.math.hasOwnProperty(e)||re.text.hasOwnProperty(e)||an.hasOwnProperty(e)}isExpandable(e){var t=this.macros.get(e);return null!=t?"string"==typeof t||"function"==typeof t||!t.unexpandable:Va.hasOwnProperty(e)&&!Va[e].primitive}}var on=/^[\u208a\u208b\u208c\u208d\u208e\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089\u2090\u2091\u2095\u1d62\u2c7c\u2096\u2097\u2098\u2099\u2092\u209a\u1d63\u209b\u209c\u1d64\u1d65\u2093\u1d66\u1d67\u1d68\u1d69\u1d6a]/,sn=Object.freeze({"\u208a":"+","\u208b":"-","\u208c":"=","\u208d":"(","\u208e":")","\u2080":"0","\u2081":"1","\u2082":"2","\u2083":"3","\u2084":"4","\u2085":"5","\u2086":"6","\u2087":"7","\u2088":"8","\u2089":"9","\u2090":"a","\u2091":"e","\u2095":"h","\u1d62":"i","\u2c7c":"j","\u2096":"k","\u2097":"l","\u2098":"m","\u2099":"n","\u2092":"o","\u209a":"p","\u1d63":"r","\u209b":"s","\u209c":"t","\u1d64":"u","\u1d65":"v","\u2093":"x","\u1d66":"\u03b2","\u1d67":"\u03b3","\u1d68":"\u03c1","\u1d69":"\u03d5","\u1d6a":"\u03c7","\u207a":"+","\u207b":"-","\u207c":"=","\u207d":"(","\u207e":")","\u2070":"0","\xb9":"1","\xb2":"2","\xb3":"3","\u2074":"4","\u2075":"5","\u2076":"6","\u2077":"7","\u2078":"8","\u2079":"9","\u1d2c":"A","\u1d2e":"B","\u1d30":"D","\u1d31":"E","\u1d33":"G","\u1d34":"H","\u1d35":"I","\u1d36":"J","\u1d37":"K","\u1d38":"L","\u1d39":"M","\u1d3a":"N","\u1d3c":"O","\u1d3e":"P","\u1d3f":"R","\u1d40":"T","\u1d41":"U","\u2c7d":"V","\u1d42":"W","\u1d43":"a","\u1d47":"b","\u1d9c":"c","\u1d48":"d","\u1d49":"e","\u1da0":"f","\u1d4d":"g","\u02b0":"h","\u2071":"i","\u02b2":"j","\u1d4f":"k","\u02e1":"l","\u1d50":"m","\u207f":"n","\u1d52":"o","\u1d56":"p","\u02b3":"r","\u02e2":"s","\u1d57":"t","\u1d58":"u","\u1d5b":"v","\u02b7":"w","\u02e3":"x","\u02b8":"y","\u1dbb":"z","\u1d5d":"\u03b2","\u1d5e":"\u03b3","\u1d5f":"\u03b4","\u1d60":"\u03d5","\u1d61":"\u03c7","\u1dbf":"\u03b8"}),ln={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030c":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030a":{text:"\\r",math:"\\mathring"},"\u030b":{text:"\\H"},"\u0327":{text:"\\c"}},hn={"\xe1":"a\u0301","\xe0":"a\u0300","\xe4":"a\u0308","\u01df":"a\u0308\u0304","\xe3":"a\u0303","\u0101":"a\u0304","\u0103":"a\u0306","\u1eaf":"a\u0306\u0301","\u1eb1":"a\u0306\u0300","\u1eb5":"a\u0306\u0303","\u01ce":"a\u030c","\xe2":"a\u0302","\u1ea5":"a\u0302\u0301","\u1ea7":"a\u0302\u0300","\u1eab":"a\u0302\u0303","\u0227":"a\u0307","\u01e1":"a\u0307\u0304","\xe5":"a\u030a","\u01fb":"a\u030a\u0301","\u1e03":"b\u0307","\u0107":"c\u0301","\u1e09":"c\u0327\u0301","\u010d":"c\u030c","\u0109":"c\u0302","\u010b":"c\u0307","\xe7":"c\u0327","\u010f":"d\u030c","\u1e0b":"d\u0307","\u1e11":"d\u0327","\xe9":"e\u0301","\xe8":"e\u0300","\xeb":"e\u0308","\u1ebd":"e\u0303","\u0113":"e\u0304","\u1e17":"e\u0304\u0301","\u1e15":"e\u0304\u0300","\u0115":"e\u0306","\u1e1d":"e\u0327\u0306","\u011b":"e\u030c","\xea":"e\u0302","\u1ebf":"e\u0302\u0301","\u1ec1":"e\u0302\u0300","\u1ec5":"e\u0302\u0303","\u0117":"e\u0307","\u0229":"e\u0327","\u1e1f":"f\u0307","\u01f5":"g\u0301","\u1e21":"g\u0304","\u011f":"g\u0306","\u01e7":"g\u030c","\u011d":"g\u0302","\u0121":"g\u0307","\u0123":"g\u0327","\u1e27":"h\u0308","\u021f":"h\u030c","\u0125":"h\u0302","\u1e23":"h\u0307","\u1e29":"h\u0327","\xed":"i\u0301","\xec":"i\u0300","\xef":"i\u0308","\u1e2f":"i\u0308\u0301","\u0129":"i\u0303","\u012b":"i\u0304","\u012d":"i\u0306","\u01d0":"i\u030c","\xee":"i\u0302","\u01f0":"j\u030c","\u0135":"j\u0302","\u1e31":"k\u0301","\u01e9":"k\u030c","\u0137":"k\u0327","\u013a":"l\u0301","\u013e":"l\u030c","\u013c":"l\u0327","\u1e3f":"m\u0301","\u1e41":"m\u0307","\u0144":"n\u0301","\u01f9":"n\u0300","\xf1":"n\u0303","\u0148":"n\u030c","\u1e45":"n\u0307","\u0146":"n\u0327","\xf3":"o\u0301","\xf2":"o\u0300","\xf6":"o\u0308","\u022b":"o\u0308\u0304","\xf5":"o\u0303","\u1e4d":"o\u0303\u0301","\u1e4f":"o\u0303\u0308","\u022d":"o\u0303\u0304","\u014d":"o\u0304","\u1e53":"o\u0304\u0301","\u1e51":"o\u0304\u0300","\u014f":"o\u0306","\u01d2":"o\u030c","\xf4":"o\u0302","\u1ed1":"o\u0302\u0301","\u1ed3":"o\u0302\u0300","\u1ed7":"o\u0302\u0303","\u022f":"o\u0307","\u0231":"o\u0307\u0304","\u0151":"o\u030b","\u1e55":"p\u0301","\u1e57":"p\u0307","\u0155":"r\u0301","\u0159":"r\u030c","\u1e59":"r\u0307","\u0157":"r\u0327","\u015b":"s\u0301","\u1e65":"s\u0301\u0307","\u0161":"s\u030c","\u1e67":"s\u030c\u0307","\u015d":"s\u0302","\u1e61":"s\u0307","\u015f":"s\u0327","\u1e97":"t\u0308","\u0165":"t\u030c","\u1e6b":"t\u0307","\u0163":"t\u0327","\xfa":"u\u0301","\xf9":"u\u0300","\xfc":"u\u0308","\u01d8":"u\u0308\u0301","\u01dc":"u\u0308\u0300","\u01d6":"u\u0308\u0304","\u01da":"u\u0308\u030c","\u0169":"u\u0303","\u1e79":"u\u0303\u0301","\u016b":"u\u0304","\u1e7b":"u\u0304\u0308","\u016d":"u\u0306","\u01d4":"u\u030c","\xfb":"u\u0302","\u016f":"u\u030a","\u0171":"u\u030b","\u1e7d":"v\u0303","\u1e83":"w\u0301","\u1e81":"w\u0300","\u1e85":"w\u0308","\u0175":"w\u0302","\u1e87":"w\u0307","\u1e98":"w\u030a","\u1e8d":"x\u0308","\u1e8b":"x\u0307","\xfd":"y\u0301","\u1ef3":"y\u0300","\xff":"y\u0308","\u1ef9":"y\u0303","\u0233":"y\u0304","\u0177":"y\u0302","\u1e8f":"y\u0307","\u1e99":"y\u030a","\u017a":"z\u0301","\u017e":"z\u030c","\u1e91":"z\u0302","\u017c":"z\u0307","\xc1":"A\u0301","\xc0":"A\u0300","\xc4":"A\u0308","\u01de":"A\u0308\u0304","\xc3":"A\u0303","\u0100":"A\u0304","\u0102":"A\u0306","\u1eae":"A\u0306\u0301","\u1eb0":"A\u0306\u0300","\u1eb4":"A\u0306\u0303","\u01cd":"A\u030c","\xc2":"A\u0302","\u1ea4":"A\u0302\u0301","\u1ea6":"A\u0302\u0300","\u1eaa":"A\u0302\u0303","\u0226":"A\u0307","\u01e0":"A\u0307\u0304","\xc5":"A\u030a","\u01fa":"A\u030a\u0301","\u1e02":"B\u0307","\u0106":"C\u0301","\u1e08":"C\u0327\u0301","\u010c":"C\u030c","\u0108":"C\u0302","\u010a":"C\u0307","\xc7":"C\u0327","\u010e":"D\u030c","\u1e0a":"D\u0307","\u1e10":"D\u0327","\xc9":"E\u0301","\xc8":"E\u0300","\xcb":"E\u0308","\u1ebc":"E\u0303","\u0112":"E\u0304","\u1e16":"E\u0304\u0301","\u1e14":"E\u0304\u0300","\u0114":"E\u0306","\u1e1c":"E\u0327\u0306","\u011a":"E\u030c","\xca":"E\u0302","\u1ebe":"E\u0302\u0301","\u1ec0":"E\u0302\u0300","\u1ec4":"E\u0302\u0303","\u0116":"E\u0307","\u0228":"E\u0327","\u1e1e":"F\u0307","\u01f4":"G\u0301","\u1e20":"G\u0304","\u011e":"G\u0306","\u01e6":"G\u030c","\u011c":"G\u0302","\u0120":"G\u0307","\u0122":"G\u0327","\u1e26":"H\u0308","\u021e":"H\u030c","\u0124":"H\u0302","\u1e22":"H\u0307","\u1e28":"H\u0327","\xcd":"I\u0301","\xcc":"I\u0300","\xcf":"I\u0308","\u1e2e":"I\u0308\u0301","\u0128":"I\u0303","\u012a":"I\u0304","\u012c":"I\u0306","\u01cf":"I\u030c","\xce":"I\u0302","\u0130":"I\u0307","\u0134":"J\u0302","\u1e30":"K\u0301","\u01e8":"K\u030c","\u0136":"K\u0327","\u0139":"L\u0301","\u013d":"L\u030c","\u013b":"L\u0327","\u1e3e":"M\u0301","\u1e40":"M\u0307","\u0143":"N\u0301","\u01f8":"N\u0300","\xd1":"N\u0303","\u0147":"N\u030c","\u1e44":"N\u0307","\u0145":"N\u0327","\xd3":"O\u0301","\xd2":"O\u0300","\xd6":"O\u0308","\u022a":"O\u0308\u0304","\xd5":"O\u0303","\u1e4c":"O\u0303\u0301","\u1e4e":"O\u0303\u0308","\u022c":"O\u0303\u0304","\u014c":"O\u0304","\u1e52":"O\u0304\u0301","\u1e50":"O\u0304\u0300","\u014e":"O\u0306","\u01d1":"O\u030c","\xd4":"O\u0302","\u1ed0":"O\u0302\u0301","\u1ed2":"O\u0302\u0300","\u1ed6":"O\u0302\u0303","\u022e":"O\u0307","\u0230":"O\u0307\u0304","\u0150":"O\u030b","\u1e54":"P\u0301","\u1e56":"P\u0307","\u0154":"R\u0301","\u0158":"R\u030c","\u1e58":"R\u0307","\u0156":"R\u0327","\u015a":"S\u0301","\u1e64":"S\u0301\u0307","\u0160":"S\u030c","\u1e66":"S\u030c\u0307","\u015c":"S\u0302","\u1e60":"S\u0307","\u015e":"S\u0327","\u0164":"T\u030c","\u1e6a":"T\u0307","\u0162":"T\u0327","\xda":"U\u0301","\xd9":"U\u0300","\xdc":"U\u0308","\u01d7":"U\u0308\u0301","\u01db":"U\u0308\u0300","\u01d5":"U\u0308\u0304","\u01d9":"U\u0308\u030c","\u0168":"U\u0303","\u1e78":"U\u0303\u0301","\u016a":"U\u0304","\u1e7a":"U\u0304\u0308","\u016c":"U\u0306","\u01d3":"U\u030c","\xdb":"U\u0302","\u016e":"U\u030a","\u0170":"U\u030b","\u1e7c":"V\u0303","\u1e82":"W\u0301","\u1e80":"W\u0300","\u1e84":"W\u0308","\u0174":"W\u0302","\u1e86":"W\u0307","\u1e8c":"X\u0308","\u1e8a":"X\u0307","\xdd":"Y\u0301","\u1ef2":"Y\u0300","\u0178":"Y\u0308","\u1ef8":"Y\u0303","\u0232":"Y\u0304","\u0176":"Y\u0302","\u1e8e":"Y\u0307","\u0179":"Z\u0301","\u017d":"Z\u030c","\u1e90":"Z\u0302","\u017b":"Z\u0307","\u03ac":"\u03b1\u0301","\u1f70":"\u03b1\u0300","\u1fb1":"\u03b1\u0304","\u1fb0":"\u03b1\u0306","\u03ad":"\u03b5\u0301","\u1f72":"\u03b5\u0300","\u03ae":"\u03b7\u0301","\u1f74":"\u03b7\u0300","\u03af":"\u03b9\u0301","\u1f76":"\u03b9\u0300","\u03ca":"\u03b9\u0308","\u0390":"\u03b9\u0308\u0301","\u1fd2":"\u03b9\u0308\u0300","\u1fd1":"\u03b9\u0304","\u1fd0":"\u03b9\u0306","\u03cc":"\u03bf\u0301","\u1f78":"\u03bf\u0300","\u03cd":"\u03c5\u0301","\u1f7a":"\u03c5\u0300","\u03cb":"\u03c5\u0308","\u03b0":"\u03c5\u0308\u0301","\u1fe2":"\u03c5\u0308\u0300","\u1fe1":"\u03c5\u0304","\u1fe0":"\u03c5\u0306","\u03ce":"\u03c9\u0301","\u1f7c":"\u03c9\u0300","\u038e":"\u03a5\u0301","\u1fea":"\u03a5\u0300","\u03ab":"\u03a5\u0308","\u1fe9":"\u03a5\u0304","\u1fe8":"\u03a5\u0306","\u038f":"\u03a9\u0301","\u1ffa":"\u03a9\u0300"};class mn{constructor(e,t){this.mode="math",this.gullet=new nn(e,t,this.mode),this.settings=t,this.leftrightDepth=0,this.nextToken=null}expect(e,t){if(void 0===t&&(t=!0),this.fetch().text!==e)throw new a("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());t&&this.consume()}consume(){this.nextToken=null}fetch(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){var t=this.nextToken;this.consume(),this.gullet.pushToken(new ta("}")),this.gullet.pushTokens(e);var r=this.parseExpression(!1);return this.expect("}"),this.nextToken=t,r}parseExpression(e,t){for(var r=[];;){"math"===this.mode&&this.consumeSpaces();var a=this.fetch();if(mn.endOfExpression.has(a.text))break;if(t&&a.text===t)break;if(e&&Va[a.text]&&Va[a.text].infix)break;var n=this.parseAtom(t);if(!n)break;"internal"!==n.type&&r.push(n)}return"text"===this.mode&&this.formLigatures(r),this.handleInfixNodes(r)}handleInfixNodes(e){for(var t,r=-1,n=0;n<e.length;n++){var i=e[n];if("infix"===i.type){if(-1!==r)throw new a("only one infix operator per group",i.token);r=n,t=i.replaceWith}}if(-1!==r&&t){var o,s,l=e.slice(0,r),h=e.slice(r+1);return o=1===l.length&&"ordgroup"===l[0].type?l[0]:{type:"ordgroup",mode:this.mode,body:l},s=1===h.length&&"ordgroup"===h[0].type?h[0]:{type:"ordgroup",mode:this.mode,body:h},["\\\\abovefrac"===t?this.callFunction(t,[o,e[r],s],[]):this.callFunction(t,[o,s],[])]}return e}handleSupSubscript(e){var t,r=this.fetch(),n=r.text;this.consume(),this.consumeSpaces();do{var i;t=this.parseGroup(e)}while("internal"===(null==(i=t)?void 0:i.type));if(!t)throw new a("Expected group after '"+n+"'",r);return t}formatUnsupportedCmd(e){for(var t=[],r=0;r<e.length;r++)t.push({type:"textord",mode:"text",text:e[r]});var a={type:"text",mode:this.mode,body:t};return{type:"color",mode:this.mode,color:this.settings.errorColor,body:[a]}}parseAtom(e){var t,r,n=this.parseGroup("atom",e);if("internal"===(null==n?void 0:n.type))return n;if("text"===this.mode)return n;for(;;){this.consumeSpaces();var i=this.fetch();if("\\limits"===i.text||"\\nolimits"===i.text){if(n&&"op"===n.type){var o="\\limits"===i.text;n.limits=o,n.alwaysHandleSupSub=!0}else{if(!n||"operatorname"!==n.type)throw new a("Limit controls must follow a math operator",i);n.alwaysHandleSupSub&&(n.limits="\\limits"===i.text)}this.consume()}else if("^"===i.text){if(t)throw new a("Double superscript",i);t=this.handleSupSubscript("superscript")}else if("_"===i.text){if(r)throw new a("Double subscript",i);r=this.handleSupSubscript("subscript")}else if("'"===i.text){if(t)throw new a("Double superscript",i);var s={type:"textord",mode:this.mode,text:"\\prime"},l=[s];for(this.consume();"'"===this.fetch().text;)l.push(s),this.consume();"^"===this.fetch().text&&l.push(this.handleSupSubscript("superscript")),t={type:"ordgroup",mode:this.mode,body:l}}else{if(!sn[i.text])break;var h=on.test(i.text),m=[];for(m.push(new ta(sn[i.text])),this.consume();;){var c=this.fetch().text;if(!sn[c])break;if(on.test(c)!==h)break;m.unshift(new ta(sn[c])),this.consume()}var u=this.subparse(m);h?r={type:"ordgroup",mode:"math",body:u}:t={type:"ordgroup",mode:"math",body:u}}}return t||r?{type:"supsub",mode:this.mode,base:n,sup:t,sub:r}:n}parseFunction(e,t){var r=this.fetch(),n=r.text,i=Va[n];if(!i)return null;if(this.consume(),t&&"atom"!==t&&!i.allowedInArgument)throw new a("Got function '"+n+"' with no arguments"+(t?" as "+t:""),r);if("text"===this.mode&&!i.allowedInText)throw new a("Can't use function '"+n+"' in text mode",r);if("math"===this.mode&&!1===i.allowedInMath)throw new a("Can't use function '"+n+"' in math mode",r);var{args:o,optArgs:s}=this.parseArguments(n,i);return this.callFunction(n,o,s,r,e)}callFunction(e,t,r,n,i){var o={funcName:e,parser:this,token:n,breakOnTokenText:i},s=Va[e];if(s&&s.handler)return s.handler(o,t,r);throw new a("No function handler for "+e)}parseArguments(e,t){var r=t.numArgs+t.numOptionalArgs;if(0===r)return{args:[],optArgs:[]};for(var n=[],i=[],o=0;o<r;o++){var s=t.argTypes&&t.argTypes[o],l=o<t.numOptionalArgs;("primitive"in t&&t.primitive&&null==s||"sqrt"===t.type&&1===o&&null==i[0])&&(s="primitive");var h=this.parseGroupOfType("argument to '"+e+"'",s,l);if(l)i.push(h);else{if(null==h)throw new a("Null argument, please report this as a bug");n.push(h)}}return{args:n,optArgs:i}}parseGroupOfType(e,t,r){switch(t){case"color":return this.parseColorGroup(r);case"size":return this.parseSizeGroup(r);case"url":return this.parseUrlGroup(r);case"math":case"text":return this.parseArgumentGroup(r,t);case"hbox":var n=this.parseArgumentGroup(r,"text");return null!=n?{type:"styling",mode:n.mode,body:[n],style:"text"}:null;case"raw":var i=this.parseStringGroup("raw",r);return null!=i?{type:"raw",mode:"text",string:i.text}:null;case"primitive":if(r)throw new a("A primitive argument cannot be optional");var o=this.parseGroup(e);if(null==o)throw new a("Expected group as "+e,this.fetch());return o;case"original":case null:case void 0:return this.parseArgumentGroup(r);default:throw new a("Unknown group type as "+e,this.fetch())}}consumeSpaces(){for(;" "===this.fetch().text;)this.consume()}parseStringGroup(e,t){var r=this.gullet.scanArgument(t);if(null==r)return null;for(var a,n="";"EOF"!==(a=this.fetch()).text;)n+=a.text,this.consume();return this.consume(),r.text=n,r}parseRegexGroup(e,t){for(var r,n=this.fetch(),i=n,o="";"EOF"!==(r=this.fetch()).text&&e.test(o+r.text);)o+=(i=r).text,this.consume();if(""===o)throw new a("Invalid "+t+": '"+n.text+"'",n);return n.range(i,o)}parseColorGroup(e){var t=this.parseStringGroup("color",e);if(null==t)return null;var r=/^(#[a-f0-9]{3,4}|#[a-f0-9]{6}|#[a-f0-9]{8}|[a-f0-9]{6}|[a-z]+)$/i.exec(t.text);if(!r)throw new a("Invalid color: '"+t.text+"'",t);var n=r[0];return/^[0-9a-f]{6}$/i.test(n)&&(n="#"+n),{type:"color-token",mode:this.mode,color:n}}parseSizeGroup(e){var t,r=!1;if(this.gullet.consumeSpaces(),!(t=e||"{"===this.gullet.future().text?this.parseStringGroup("size",e):this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size")))return null;e||0!==t.text.length||(t.text="0pt",r=!0);var n=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t.text);if(!n)throw new a("Invalid size: '"+t.text+"'",t);var i={number:+(n[1]+n[2]),unit:n[3]};if(!H(i))throw new a("Invalid unit: '"+i.unit+"'",t);return{type:"size",mode:this.mode,value:i,isBlank:r}}parseUrlGroup(e){this.gullet.lexer.setCatcode("%",13),this.gullet.lexer.setCatcode("~",12);var t=this.parseStringGroup("url",e);if(this.gullet.lexer.setCatcode("%",14),this.gullet.lexer.setCatcode("~",13),null==t)return null;var r=t.text.replace(/\\([#$%&~_^{}])/g,"$1");return{type:"url",mode:this.mode,url:r}}parseArgumentGroup(e,t){var r=this.gullet.scanArgument(e);if(null==r)return null;var a=this.mode;t&&this.switchMode(t),this.gullet.beginGroup();var n=this.parseExpression(!1,"EOF");this.expect("EOF"),this.gullet.endGroup();var i={type:"ordgroup",mode:this.mode,loc:r.loc,body:n};return t&&this.switchMode(a),i}parseGroup(e,t){var r,n=this.fetch(),i=n.text;if("{"===i||"\\begingroup"===i){this.consume();var o="{"===i?"}":"\\endgroup";this.gullet.beginGroup();var s=this.parseExpression(!1,o),l=this.fetch();this.expect(o),this.gullet.endGroup(),r={type:"ordgroup",mode:this.mode,loc:ea.range(n,l),body:s,semisimple:"\\begingroup"===i||void 0}}else if(null==(r=this.parseFunction(t,e)||this.parseSymbol())&&"\\"===i[0]&&!an.hasOwnProperty(i)){if(this.settings.throwOnError)throw new a("Undefined control sequence: "+i,n);r=this.formatUnsupportedCmd(i),this.consume()}return r}formLigatures(e){for(var t=e.length-1,r=0;r<t;++r){var a=e[r];if("textord"===a.type){var n=a.text,i=e[r+1];if(i&&"textord"===i.type){if("-"===n&&"-"===i.text){var o=e[r+2];r+1<t&&o&&"textord"===o.type&&"-"===o.text?(e.splice(r,3,{type:"textord",mode:"text",loc:ea.range(a,o),text:"---"}),t-=2):(e.splice(r,2,{type:"textord",mode:"text",loc:ea.range(a,i),text:"--"}),t-=1)}"'"!==n&&"`"!==n||i.text!==n||(e.splice(r,2,{type:"textord",mode:"text",loc:ea.range(a,i),text:n+n}),t-=1)}}}}parseSymbol(){var e=this.fetch(),t=e.text;if(/^\\verb[^a-zA-Z]/.test(t)){this.consume();var r=t.slice(5),n="*"===r.charAt(0);if(n&&(r=r.slice(1)),r.length<2||r.charAt(0)!==r.slice(-1))throw new a("\\verb assertion failed --\n please report what input caused this bug");return{type:"verb",mode:"text",body:r=r.slice(1,-1),star:n}}hn.hasOwnProperty(t[0])&&!re[this.mode][t[0]]&&(this.settings.strict&&"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Accented Unicode text character "'+t[0]+'" used in math mode',e),t=hn[t[0]]+t.slice(1));var i,o=Ya.exec(t);if(o&&("i"===(t=t.substring(0,o.index))?t="\u0131":"j"===t&&(t="\u0237")),re[this.mode][t]){this.settings.strict&&"math"===this.mode&&Ee.includes(t)&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+t[0]+'" used in math mode',e);var s,l=re[this.mode][t].group,h=ea.range(e);if(ee.hasOwnProperty(l)){var m=l;s={type:"atom",mode:this.mode,family:m,loc:h,text:t}}else s={type:l,mode:this.mode,loc:h,text:t};i=s}else{if(!(t.charCodeAt(0)>=128))return null;this.settings.strict&&(A(t.charCodeAt(0))?"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+t[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+t[0]+'" ('+t.charCodeAt(0)+")",e)),i={type:"textord",mode:"text",loc:ea.range(e),text:t}}if(this.consume(),o)for(var c=0;c<o[0].length;c++){var u=o[0][c];if(!ln[u])throw new a("Unknown accent ' "+u+"'",e);var p=ln[u][this.mode]||ln[u].text;if(!p)throw new a("Accent "+u+" unsupported in "+this.mode+" mode",e);i={type:"accent",mode:this.mode,loc:ea.range(e),label:p,isStretchy:!1,isShifty:!0,base:i}}return i}}mn.endOfExpression=new Set(["}","\\endgroup","\\end","\\right","&"]);var cn=function(e,t){if(!("string"==typeof e||e instanceof String))throw new TypeError("KaTeX can only parse string typed expression");var r=new mn(e,t);delete r.gullet.macros.current["\\df@tag"];var n=r.parse();if(delete r.gullet.macros.current["\\current@color"],delete r.gullet.macros.current["\\color"],r.gullet.macros.get("\\df@tag")){if(!t.displayMode)throw new a("\\tag works only in display equations");n=[{type:"tag",mode:"text",body:n,tag:r.subparse([new ta("\\df@tag")])}]}return n},un=function(e,t,r){t.textContent="";var a=dn(e,r).toNode();t.appendChild(a)};"undefined"!=typeof document&&"CSS1Compat"!==document.compatMode&&("undefined"!=typeof console&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype."),un=function(){throw new a("KaTeX doesn't work in quirks mode.")});var pn=function(e,t,r){if(r.throwOnError||!(e instanceof a))throw e;var n=We(["katex-error"],[new Y(t)]);return n.setAttribute("title",e.toString()),n.setAttribute("style","color:"+r.errorColor),n},dn=function(e,t){var r=new d(t);try{return function(e,t,r){var a,n=Wt(r);if("mathml"===r.output)return Vt(e,t,n,r.displayMode,!0);if("html"===r.output){var i=Tt(e,n);a=We(["katex"],[i])}else{var o=Vt(e,t,n,r.displayMode,!1),s=Tt(e,n);a=We(["katex"],[o,s])}return jt(a,r)}(cn(e,r),e,r)}catch(a){return pn(a,e,r)}},gn={version:"0.16.45",render:un,renderToString:function(e,t){return dn(e,t).toMarkup()},ParseError:a,SETTINGS_SCHEMA:u,__parse:function(e,t){var r=new d(t);return cn(e,r)},__renderToDomTree:dn,__renderToHTMLTree:function(e,t){var r=new d(t);try{return function(e,t,r){var a=Tt(e,Wt(r)),n=We(["katex"],[a]);return jt(n,r)}(cn(e,r),0,r)}catch(a){return pn(a,e,r)}},__setFontMetrics:function(e,t){$[e]=t},__defineSymbol:ae,__defineFunction:ct,__defineMacro:Qr,__domTree:{Span:V,Anchor:G,SymbolNode:Y,SvgNode:W,PathNode:j,LineNode:_}}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/2237.a578a662.js b/docs/build/assets/js/2237.a578a662.js deleted file mode 100644 index 62b08ebb1..000000000 --- a/docs/build/assets/js/2237.a578a662.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[2237],{1107(e,i,n){n.d(i,{A:()=>l});n(6540);var t=n(8215),a=n(1312),o=n(3535),r=n(8774),s=n(3427),c=n(4848);function l({as:e,id:i,...n}){const l=(0,s.A)(),d=(0,o.v)(i);if("h1"===e||!i)return(0,c.jsx)(e,{...n,id:void 0});l.collectAnchor(i);const h=(0,a.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof n.children?n.children:i});return(0,c.jsxs)(e,{...n,className:(0,t.A)("anchor",d,n.className),id:i,children:[n.children,(0,c.jsx)(r.A,{className:"hash-link",to:`#${i}`,"aria-label":h,title:h,translate:"no",children:"\u200b"})]})}},3363(e,i,n){n.d(i,{A:()=>s});n(6540);var t=n(8215),a=n(1312),o=n(1107),r=n(4848);function s({className:e}){return(0,r.jsx)("main",{className:(0,t.A)("container margin-vert--xl",e),children:(0,r.jsx)("div",{className:"row",children:(0,r.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,r.jsx)(o.A,{as:"h1",className:"hero__title",children:(0,r.jsx)(a.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,r.jsx)("p",{children:(0,r.jsx)(a.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,r.jsx)("p",{children:(0,r.jsx)(a.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}},2237(e,i,n){n.r(i),n.d(i,{default:()=>c});n(6540);var t=n(1312),a=n(5500),o=n(1827),r=n(3363),s=n(4848);function c(){const e=(0,t.T)({id:"theme.NotFound.title",message:"Page Not Found"});return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(a.be,{title:e}),(0,s.jsx)(o.A,{children:(0,s.jsx)(r.A,{})})]})}},3535(e,i,n){n.d(i,{v:()=>r});var t=n(6342);const a="anchorTargetStickyNavbar_Vzrq",o="anchorTargetHideOnScrollNavbar_vjPI";function r(e){const{navbar:{hideOnScroll:i}}=(0,t.p)();if(void 0!==e)return i?o:a}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/2438.17b7ef55.js b/docs/build/assets/js/2438.17b7ef55.js deleted file mode 100644 index 27e7c7b01..000000000 --- a/docs/build/assets/js/2438.17b7ef55.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[2438],{2438(r,s,a){a.d(s,{diagram:()=>i});var e=a(4787),t=(a(2501),a(8343),a(9625),a(4345),a(3848),a(6615),a(1334),a(273),a(5105),a(8013),a(5739),a(8515),a(3706),a(797)),i={parser:e._$,get db(){return new e.NM},renderer:e.Lh,styles:e.tM,init:(0,t.K2)(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/253.d8f5fb6d.js b/docs/build/assets/js/253.d8f5fb6d.js deleted file mode 100644 index 35e102e85..000000000 --- a/docs/build/assets/js/253.d8f5fb6d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[253],{5937(t,e,s){s.d(e,{A:()=>r});var i=s(2453),n=s(4886);const r=(t,e)=>i.A.lang.round(n.A.parse(t)[e])},2634(t,e,s){s.d(e,{diagram:()=>k});var i=s(9625),n=s(4345),r=s(3848),a=(s(6615),s(1334),s(273),s(5105),s(8013),s(5739),s(8515)),o=s(3706),c=s(797),l=s(451),h=s(3201),u=s(5937),d=function(){var t=(0,c.K2)(function(t,e,s,i){for(s=s||{},i=t.length;i--;s[t[i]]=e);return s},"o"),e=[6,8,10,22,24,26,28,33,34,35,36,37,40,43,44,48,50,51,52],s=[1,10],i=[1,11],n=[1,12],r=[1,13],a=[1,23],o=[1,24],l=[1,25],h=[1,26],u=[1,27],d=[1,19],y=[1,28],p=[1,29],_=[1,20],g=[1,18],b=[1,21],m=[1,22],f=[1,36],E=[1,37],k=[1,38],T=[1,39],O=[1,40],S=[6,8,10,13,15,17,20,21,22,24,26,28,33,34,35,36,37,40,43,44,48,50,51,52,65,66,67,68,69],A=[1,45],N=[1,46],R=[1,55],I=[40,48,50,51,52,70,71],C=[1,66],$=[1,64],x=[1,61],D=[1,65],v=[1,67],L=[6,8,10,13,17,22,24,26,28,33,34,35,36,37,40,41,42,43,44,48,49,50,51,52,65,66,67,68,69],K=[65,66,67,68,69],w=[1,84],M=[1,83],B=[1,81],F=[1,82],Y=[6,10,42,47],P=[6,10,13,41,42,47,48,49],z=[1,92],U=[1,91],G=[1,90],Z=[19,58],j=[1,101],W=[1,100],X=[19,58,60,62],Q={trace:(0,c.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,COLON:13,role:14,STYLE_SEPARATOR:15,idList:16,BLOCK_START:17,attributes:18,BLOCK_STOP:19,SQS:20,SQE:21,title:22,title_value:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,direction:29,classDefStatement:30,classStatement:31,styleStatement:32,direction_tb:33,direction_bt:34,direction_rl:35,direction_lr:36,CLASSDEF:37,stylesOpt:38,separator:39,UNICODE_TEXT:40,STYLE_TEXT:41,COMMA:42,CLASS:43,STYLE:44,style:45,styleComponent:46,SEMI:47,NUM:48,BRKT:49,ENTITY_NAME:50,DECIMAL_NUM:51,ENTITY_ONE:52,attribute:53,attributeType:54,attributeName:55,attributeKeyTypeList:56,attributeComment:57,ATTRIBUTE_WORD:58,attributeKeyType:59,",":60,ATTRIBUTE_KEY:61,COMMENT:62,cardinality:63,relType:64,ZERO_OR_ONE:65,ZERO_OR_MORE:66,ONE_OR_MORE:67,ONLY_ONE:68,MD_PARENT:69,NON_IDENTIFYING:70,IDENTIFYING:71,WORD:72,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:"COLON",15:"STYLE_SEPARATOR",17:"BLOCK_START",19:"BLOCK_STOP",20:"SQS",21:"SQE",22:"title",23:"title_value",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"direction_tb",34:"direction_bt",35:"direction_rl",36:"direction_lr",37:"CLASSDEF",40:"UNICODE_TEXT",41:"STYLE_TEXT",42:"COMMA",43:"CLASS",44:"STYLE",47:"SEMI",48:"NUM",49:"BRKT",50:"ENTITY_NAME",51:"DECIMAL_NUM",52:"ENTITY_ONE",58:"ATTRIBUTE_WORD",60:",",61:"ATTRIBUTE_KEY",62:"COMMENT",65:"ZERO_OR_ONE",66:"ZERO_OR_MORE",67:"ONE_OR_MORE",68:"ONLY_ONE",69:"MD_PARENT",70:"NON_IDENTIFYING",71:"IDENTIFYING",72:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,9],[9,7],[9,7],[9,4],[9,6],[9,3],[9,5],[9,1],[9,3],[9,7],[9,9],[9,6],[9,8],[9,4],[9,6],[9,2],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[9,1],[29,1],[29,1],[29,1],[29,1],[30,4],[16,1],[16,1],[16,3],[16,3],[31,3],[32,4],[38,1],[38,3],[45,1],[45,2],[39,1],[39,1],[39,1],[46,1],[46,1],[46,1],[46,1],[11,1],[11,1],[11,1],[11,1],[11,1],[18,1],[18,2],[53,2],[53,3],[53,3],[53,4],[54,1],[55,1],[56,1],[56,3],[59,1],[57,1],[12,3],[63,1],[63,1],[63,1],[63,1],[63,1],[64,1],[64,1],[14,1],[14,1],[14,1]],performAction:(0,c.K2)(function(t,e,s,i,n,r,a){var o=r.length-1;switch(n){case 1:break;case 2:case 6:case 7:this.$=[];break;case 3:r[o-1].push(r[o]),this.$=r[o-1];break;case 4:case 5:case 55:case 56:case 57:case 58:case 81:case 65:case 66:case 69:this.$=r[o];break;case 8:i.addEntity(r[o-4]),i.addEntity(r[o-2]),i.addRelationship(r[o-4],r[o],r[o-2],r[o-3]);break;case 9:i.addEntity(r[o-8]),i.addEntity(r[o-4]),i.addRelationship(r[o-8],r[o],r[o-4],r[o-5]),i.setClass([r[o-8]],r[o-6]),i.setClass([r[o-4]],r[o-2]);break;case 10:i.addEntity(r[o-6]),i.addEntity(r[o-2]),i.addRelationship(r[o-6],r[o],r[o-2],r[o-3]),i.setClass([r[o-6]],r[o-4]);break;case 11:i.addEntity(r[o-6]),i.addEntity(r[o-4]),i.addRelationship(r[o-6],r[o],r[o-4],r[o-5]),i.setClass([r[o-4]],r[o-2]);break;case 12:i.addEntity(r[o-3]),i.addAttributes(r[o-3],r[o-1]);break;case 13:i.addEntity(r[o-5]),i.addAttributes(r[o-5],r[o-1]),i.setClass([r[o-5]],r[o-3]);break;case 14:i.addEntity(r[o-2]);break;case 15:i.addEntity(r[o-4]),i.setClass([r[o-4]],r[o-2]);break;case 16:i.addEntity(r[o]);break;case 17:i.addEntity(r[o-2]),i.setClass([r[o-2]],r[o]);break;case 18:i.addEntity(r[o-6],r[o-4]),i.addAttributes(r[o-6],r[o-1]);break;case 19:i.addEntity(r[o-8],r[o-6]),i.addAttributes(r[o-8],r[o-1]),i.setClass([r[o-8]],r[o-3]);break;case 20:i.addEntity(r[o-5],r[o-3]);break;case 21:i.addEntity(r[o-7],r[o-5]),i.setClass([r[o-7]],r[o-2]);break;case 22:i.addEntity(r[o-3],r[o-1]);break;case 23:i.addEntity(r[o-5],r[o-3]),i.setClass([r[o-5]],r[o]);break;case 24:case 25:this.$=r[o].trim(),i.setAccTitle(this.$);break;case 26:case 27:this.$=r[o].trim(),i.setAccDescription(this.$);break;case 32:i.setDirection("TB");break;case 33:i.setDirection("BT");break;case 34:i.setDirection("RL");break;case 35:i.setDirection("LR");break;case 36:this.$=r[o-3],i.addClass(r[o-2],r[o-1]);break;case 37:case 38:case 59:case 67:case 43:this.$=[r[o]];break;case 39:case 40:this.$=r[o-2].concat([r[o]]);break;case 41:this.$=r[o-2],i.setClass(r[o-1],r[o]);break;case 42:this.$=r[o-3],i.addCssStyles(r[o-2],r[o-1]);break;case 44:case 68:r[o-2].push(r[o]),this.$=r[o-2];break;case 46:this.$=r[o-1]+r[o];break;case 54:case 79:case 80:case 70:this.$=r[o].replace(/"/g,"");break;case 60:r[o].push(r[o-1]),this.$=r[o];break;case 61:this.$={type:r[o-1],name:r[o]};break;case 62:this.$={type:r[o-2],name:r[o-1],keys:r[o]};break;case 63:this.$={type:r[o-2],name:r[o-1],comment:r[o]};break;case 64:this.$={type:r[o-3],name:r[o-2],keys:r[o-1],comment:r[o]};break;case 71:this.$={cardA:r[o],relType:r[o-1],cardB:r[o-2]};break;case 72:this.$=i.Cardinality.ZERO_OR_ONE;break;case 73:this.$=i.Cardinality.ZERO_OR_MORE;break;case 74:this.$=i.Cardinality.ONE_OR_MORE;break;case 75:this.$=i.Cardinality.ONLY_ONE;break;case 76:this.$=i.Cardinality.MD_PARENT;break;case 77:this.$=i.Identification.NON_IDENTIFYING;break;case 78:this.$=i.Identification.IDENTIFYING}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,22:s,24:i,26:n,28:r,29:14,30:15,31:16,32:17,33:a,34:o,35:l,36:h,37:u,40:d,43:y,44:p,48:_,50:g,51:b,52:m},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:30,11:9,22:s,24:i,26:n,28:r,29:14,30:15,31:16,32:17,33:a,34:o,35:l,36:h,37:u,40:d,43:y,44:p,48:_,50:g,51:b,52:m},t(e,[2,5]),t(e,[2,6]),t(e,[2,16],{12:31,63:35,15:[1,32],17:[1,33],20:[1,34],65:f,66:E,67:k,68:T,69:O}),{23:[1,41]},{25:[1,42]},{27:[1,43]},t(e,[2,27]),t(e,[2,28]),t(e,[2,29]),t(e,[2,30]),t(e,[2,31]),t(S,[2,54]),t(S,[2,55]),t(S,[2,56]),t(S,[2,57]),t(S,[2,58]),t(e,[2,32]),t(e,[2,33]),t(e,[2,34]),t(e,[2,35]),{16:44,40:A,41:N},{16:47,40:A,41:N},{16:48,40:A,41:N},t(e,[2,4]),{11:49,40:d,48:_,50:g,51:b,52:m},{16:50,40:A,41:N},{18:51,19:[1,52],53:53,54:54,58:R},{11:56,40:d,48:_,50:g,51:b,52:m},{64:57,70:[1,58],71:[1,59]},t(I,[2,72]),t(I,[2,73]),t(I,[2,74]),t(I,[2,75]),t(I,[2,76]),t(e,[2,24]),t(e,[2,25]),t(e,[2,26]),{13:C,38:60,41:$,42:x,45:62,46:63,48:D,49:v},t(L,[2,37]),t(L,[2,38]),{16:68,40:A,41:N,42:x},{13:C,38:69,41:$,42:x,45:62,46:63,48:D,49:v},{13:[1,70],15:[1,71]},t(e,[2,17],{63:35,12:72,17:[1,73],42:x,65:f,66:E,67:k,68:T,69:O}),{19:[1,74]},t(e,[2,14]),{18:75,19:[2,59],53:53,54:54,58:R},{55:76,58:[1,77]},{58:[2,65]},{21:[1,78]},{63:79,65:f,66:E,67:k,68:T,69:O},t(K,[2,77]),t(K,[2,78]),{6:w,10:M,39:80,42:B,47:F},{40:[1,85],41:[1,86]},t(Y,[2,43],{46:87,13:C,41:$,48:D,49:v}),t(P,[2,45]),t(P,[2,50]),t(P,[2,51]),t(P,[2,52]),t(P,[2,53]),t(e,[2,41],{42:x}),{6:w,10:M,39:88,42:B,47:F},{14:89,40:z,50:U,72:G},{16:93,40:A,41:N},{11:94,40:d,48:_,50:g,51:b,52:m},{18:95,19:[1,96],53:53,54:54,58:R},t(e,[2,12]),{19:[2,60]},t(Z,[2,61],{56:97,57:98,59:99,61:j,62:W}),t([19,58,61,62],[2,66]),t(e,[2,22],{15:[1,103],17:[1,102]}),t([40,48,50,51,52],[2,71]),t(e,[2,36]),{13:C,41:$,45:104,46:63,48:D,49:v},t(e,[2,47]),t(e,[2,48]),t(e,[2,49]),t(L,[2,39]),t(L,[2,40]),t(P,[2,46]),t(e,[2,42]),t(e,[2,8]),t(e,[2,79]),t(e,[2,80]),t(e,[2,81]),{13:[1,105],42:x},{13:[1,107],15:[1,106]},{19:[1,108]},t(e,[2,15]),t(Z,[2,62],{57:109,60:[1,110],62:W}),t(Z,[2,63]),t(X,[2,67]),t(Z,[2,70]),t(X,[2,69]),{18:111,19:[1,112],53:53,54:54,58:R},{16:113,40:A,41:N},t(Y,[2,44],{46:87,13:C,41:$,48:D,49:v}),{14:114,40:z,50:U,72:G},{16:115,40:A,41:N},{14:116,40:z,50:U,72:G},t(e,[2,13]),t(Z,[2,64]),{59:117,61:j},{19:[1,118]},t(e,[2,20]),t(e,[2,23],{17:[1,119],42:x}),t(e,[2,11]),{13:[1,120],42:x},t(e,[2,10]),t(X,[2,68]),t(e,[2,18]),{18:121,19:[1,122],53:53,54:54,58:R},{14:123,40:z,50:U,72:G},{19:[1,124]},t(e,[2,21]),t(e,[2,9]),t(e,[2,19])],defaultActions:{55:[2,65],75:[2,60]},parseError:(0,c.K2)(function(t,e){if(!e.recoverable){var s=new Error(t);throw s.hash=e,s}this.trace(t)},"parseError"),parse:(0,c.K2)(function(t){var e=this,s=[0],i=[],n=[null],r=[],a=this.table,o="",l=0,h=0,u=0,d=r.slice.call(arguments,1),y=Object.create(this.lexer),p={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(p.yy[_]=this.yy[_]);y.setInput(t,p.yy),p.yy.lexer=y,p.yy.parser=this,void 0===y.yylloc&&(y.yylloc={});var g=y.yylloc;r.push(g);var b=y.options&&y.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||y.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,c.K2)(function(t){s.length=s.length-2*t,n.length=n.length-t,r.length=r.length-t},"popStack"),(0,c.K2)(m,"lex");for(var f,E,k,T,O,S,A,N,R,I={};;){if(k=s[s.length-1],this.defaultActions[k]?T=this.defaultActions[k]:(null==f&&(f=m()),T=a[k]&&a[k][f]),void 0===T||!T.length||!T[0]){var C="";for(S in R=[],a[k])this.terminals_[S]&&S>2&&R.push("'"+this.terminals_[S]+"'");C=y.showPosition?"Parse error on line "+(l+1)+":\n"+y.showPosition()+"\nExpecting "+R.join(", ")+", got '"+(this.terminals_[f]||f)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==f?"end of input":"'"+(this.terminals_[f]||f)+"'"),this.parseError(C,{text:y.match,token:this.terminals_[f]||f,line:y.yylineno,loc:g,expected:R})}if(T[0]instanceof Array&&T.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+f);switch(T[0]){case 1:s.push(f),n.push(y.yytext),r.push(y.yylloc),s.push(T[1]),f=null,E?(f=E,E=null):(h=y.yyleng,o=y.yytext,l=y.yylineno,g=y.yylloc,u>0&&u--);break;case 2:if(A=this.productions_[T[1]][1],I.$=n[n.length-A],I._$={first_line:r[r.length-(A||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(A||1)].first_column,last_column:r[r.length-1].last_column},b&&(I._$.range=[r[r.length-(A||1)].range[0],r[r.length-1].range[1]]),void 0!==(O=this.performAction.apply(I,[o,h,l,p.yy,T[1],n,r].concat(d))))return O;A&&(s=s.slice(0,-1*A*2),n=n.slice(0,-1*A),r=r.slice(0,-1*A)),s.push(this.productions_[T[1]][0]),n.push(I.$),r.push(I._$),N=a[s[s.length-2]][s[s.length-1]],s.push(N);break;case 3:return!0}}return!0},"parse")},V=function(){return{EOF:1,parseError:(0,c.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,c.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,c.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,c.K2)(function(t){var e=t.length,s=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,c.K2)(function(){return this._more=!0,this},"more"),reject:(0,c.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,c.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,c.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,c.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,c.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,c.K2)(function(t,e){var s,i,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],s=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var r in n)this[r]=n[r];return!1}return!1},"test_match"),next:(0,c.K2)(function(){if(this.done)return this.EOF;var t,e,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;r<n.length;r++)if((s=this._input.match(this.rules[n[r]]))&&(!e||s[0].length>e[0].length)){if(e=s,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(s,n[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,c.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,c.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,c.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,c.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,c.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,c.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,c.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,c.K2)(function(t,e,s,i){switch(s){case 0:return this.begin("acc_title"),24;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),26;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 33;case 8:return 34;case 9:return 35;case 10:return 36;case 11:return 10;case 12:case 23:case 28:case 35:break;case 13:return 8;case 14:return 50;case 15:return 72;case 16:return 4;case 17:return this.begin("block"),17;case 18:case 19:case 38:return 49;case 20:case 37:return 42;case 21:return 15;case 22:case 36:return 13;case 24:return 61;case 25:case 26:return 58;case 27:return 62;case 29:return this.popState(),19;case 30:case 77:return e.yytext[0];case 31:return 20;case 32:return 21;case 33:return this.begin("style"),44;case 34:return this.popState(),10;case 39:return this.begin("style"),37;case 40:return 43;case 41:case 45:case 46:case 64:return 65;case 42:case 43:case 44:case 52:case 54:case 66:return 67;case 47:case 48:case 49:case 50:case 51:case 53:case 65:return 66;case 55:case 56:case 58:case 59:case 60:case 63:return 68;case 57:return 51;case 61:return 52;case 62:return 48;case 67:return 69;case 68:case 71:case 72:case 73:return 70;case 69:case 70:return 71;case 74:return 41;case 75:return 47;case 76:return 40;case 78:return 6}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:#)/i,/^(?:#)/i,/^(?:,)/i,/^(?::::)/i,/^(?::)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:([^\s]*)[~].*[~]([^\s]*))/i,/^(?:([\*A-Za-z_\u00C0-\uFFFF][A-Za-z0-9\-\_\[\]\(\)\u00C0-\uFFFF\*]*))/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:style\b)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?::)/i,/^(?:,)/i,/^(?:#)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:[0-9]+\.[0-9]+)/i,/^(?:1(?=\s+[A-Za-z_"']))/i,/^(?:1(?=\s+[0-9]))/i,/^(?:1(?=(--|\.\.|\.-|-\.)))/i,/^(?:1\b)/i,/^(?:[0-9]+)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:u(?=[\.\-\|]))/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:;)/i,/^(?:([^\x00-\x7F]|\w|-|\*|\.)+)/i,/^(?:.)/i,/^(?:$)/i],conditions:{style:{rules:[34,35,36,37,38,74,75],inclusive:!1},acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block:{rules:[23,24,25,26,27,28,29,30],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,31,32,33,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,76,77,78],inclusive:!0}}}}();function q(){this.yy={}}return Q.lexer=V,(0,c.K2)(q,"Parser"),q.prototype=Q,Q.Parser=q,new q}();d.parser=d;var y=d,p=class{constructor(){this.entities=new Map,this.relationships=[],this.classes=new Map,this.direction="TB",this.Cardinality={ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE",MD_PARENT:"MD_PARENT"},this.Identification={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},this.setAccTitle=o.SV,this.getAccTitle=o.iN,this.setAccDescription=o.EI,this.getAccDescription=o.m7,this.setDiagramTitle=o.ke,this.getDiagramTitle=o.ab,this.getConfig=(0,c.K2)(()=>(0,o.D7)().er,"getConfig"),this.clear(),this.addEntity=this.addEntity.bind(this),this.addAttributes=this.addAttributes.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setDirection=this.setDirection.bind(this),this.addCssStyles=this.addCssStyles.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{(0,c.K2)(this,"ErDB")}addEntity(t,e=""){return this.entities.has(t)?!this.entities.get(t)?.alias&&e&&(this.entities.get(t).alias=e,c.Rm.info(`Add alias '${e}' to entity '${t}'`)):(this.entities.set(t,{id:`entity-${t}-${this.entities.size}`,label:t,attributes:[],alias:e,shape:"erBox",look:(0,o.D7)().look??"default",cssClasses:"default",cssStyles:[],labelType:"markdown"}),c.Rm.info("Added new entity :",t)),this.entities.get(t)}getEntity(t){return this.entities.get(t)}getEntities(){return this.entities}getClasses(){return this.classes}addAttributes(t,e){const s=this.addEntity(t);let i;for(i=e.length-1;i>=0;i--)e[i].keys||(e[i].keys=[]),e[i].comment||(e[i].comment=""),s.attributes.push(e[i]),c.Rm.debug("Added attribute ",e[i].name)}addRelationship(t,e,s,i){const n=this.entities.get(t),r=this.entities.get(s);if(!n||!r)return;const a={entityA:n.id,roleA:e,entityB:r.id,relSpec:i};this.relationships.push(a),c.Rm.debug("Added new relationship :",a)}getRelationships(){return this.relationships}getDirection(){return this.direction}setDirection(t){this.direction=t}getCompiledStyles(t){let e=[];for(const s of t){const t=this.classes.get(s);t?.styles&&(e=[...e,...t.styles??[]].map(t=>t.trim())),t?.textStyles&&(e=[...e,...t.textStyles??[]].map(t=>t.trim()))}return e}addCssStyles(t,e){for(const s of t){const t=this.entities.get(s);if(!e||!t)return;for(const s of e)t.cssStyles.push(s)}}addClass(t,e){t.forEach(t=>{let s=this.classes.get(t);void 0===s&&(s={id:t,styles:[],textStyles:[]},this.classes.set(t,s)),e&&e.forEach(function(t){if(/color/.exec(t)){const e=t.replace("fill","bgFill");s.textStyles.push(e)}s.styles.push(t)})})}setClass(t,e){for(const s of t){const t=this.entities.get(s);if(t)for(const s of e)t.cssClasses+=" "+s}}clear(){this.entities=new Map,this.classes=new Map,this.relationships=[],(0,o.IU)()}getData(){const t=[],e=[],s=(0,o.D7)();let i=0;for(const r of this.entities.keys()){const e=this.entities.get(r);e&&(e.cssCompiledStyles=this.getCompiledStyles(e.cssClasses.split(" ")),e.colorIndex=i++,t.push(e))}let n=0;for(const r of this.relationships){const t={id:(0,a.rY)(r.entityA,r.entityB,{prefix:"id",counter:n++}),type:"normal",curve:"basis",start:r.entityA,end:r.entityB,label:r.roleA,labelpos:"c",thickness:"normal",classes:"relationshipLine",arrowTypeStart:r.relSpec.cardB.toLowerCase(),arrowTypeEnd:r.relSpec.cardA.toLowerCase(),pattern:"IDENTIFYING"==r.relSpec.relType?"solid":"dashed",look:s.look,labelType:"markdown"};e.push(t)}return{nodes:t,edges:e,other:{},config:s,direction:"TB"}}},_={};(0,c.VA)(_,{draw:()=>g});var g=(0,c.K2)(async function(t,e,s,h){c.Rm.info("REF0:"),c.Rm.info("Drawing er diagram (unified)",e);const{securityLevel:u,er:d,layout:y}=(0,o.D7)(),p=h.db.getData(),_=(0,i.A)(e,u);p.type=h.type,p.layoutAlgorithm=(0,r.q7)(y),p.config.flowchart.nodeSpacing=d?.nodeSpacing||140,p.config.flowchart.rankSpacing=d?.rankSpacing||80,p.direction=h.db.getDirection();const{config:g}=p,{look:b}=g;p.markers="neo"===b?["only_one_neo","zero_or_one_neo","one_or_more_neo","zero_or_more_neo"]:["only_one","zero_or_one","one_or_more","zero_or_more"],p.diagramId=e,await(0,r.XX)(p,_),"elk"===p.layoutAlgorithm&&_.select(".edges").lower();const m=_.selectAll('[id*="-background"]');Array.from(m).length>0&&m.each(function(){const t=(0,l.Ltv)(this),e=t.attr("id").replace("-background",""),s=_.select(`#${CSS.escape(e)}`);if(!s.empty()){const e=s.attr("transform");t.attr("transform",e)}});a._K.insertTitle(_,"erDiagramTitleText",d?.titleTopMargin??25,h.db.getDiagramTitle()),(0,n.P)(_,8,"erDiagram",d?.useMaxWidth??!0)},"draw"),b=(0,c.K2)((t,e)=>{const s=u.A,i=s(t,"r"),n=s(t,"g"),r=s(t,"b");return h.A(i,n,r,e)},"fade"),m=new Set(["redux-color","redux-dark-color"]),f=(0,c.K2)(t=>{const{theme:e,look:s,bkgColorArray:i,borderColorArray:n}=t;if(!m.has(e))return"";const r=i?.length>0;let a="";for(let o=0;o<t.THEME_COLOR_LIMIT;o++)a+=`\n\n [data-look="${s}"][data-color-id="color-${o}"].node path {\n stroke: ${n[o]};\n ${r?`fill: ${i[o]};`:""}\n }\n\n [data-look="${s}"][data-color-id="color-${o}"].node rect {\n stroke: ${n[o]};\n ${r?`fill: ${i[o]};`:""}\n }\n `;return a},"genColor"),E=(0,c.K2)(t=>{const{look:e,theme:s,erEdgeLabelBackground:i,strokeWidth:n}=t;return`\n ${f(t)}\n .entityBox {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n }\n\n .relationshipLabelBox {\n fill: ${t.tertiaryColor};\n opacity: 0.7;\n background-color: ${t.tertiaryColor};\n rect {\n opacity: 0.5;\n }\n }\n\n .labelBkg {\n background-color: ${m.has(s)&&i?i:b(t.tertiaryColor,.5)};\n }\n\n .edgeLabel {\n background-color: ${m.has(s)&&i?i:t.edgeLabelBackground};\n }\n .edgeLabel .label rect {\n fill: ${m.has(s)&&i?i:t.edgeLabelBackground};\n }\n .edgeLabel .label text {\n fill: ${t.textColor};\n }\n\n .edgeLabel .label {\n fill: ${t.nodeBorder};\n font-size: 14px;\n }\n\n .label {\n font-family: ${t.fontFamily};\n color: ${t.nodeTextColor||t.textColor};\n }\n\n .edge-pattern-dashed {\n stroke-dasharray: 8,8;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon\n {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: ${"neo"===e?n:"1px"};\n }\n\n .relationshipLine {\n stroke: ${t.lineColor};\n stroke-width: ${"neo"===e?n:"1px"};\n fill: none;\n }\n\n .marker {\n fill: none !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n }\n [data-look=neo].labelBkg {\n background-color: ${b(t.tertiaryColor,.5)};\n }\n`},"getStyles"),k={parser:y,get db(){return new p},renderer:_,styles:E}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/2555.3c26d2ab.js b/docs/build/assets/js/2555.3c26d2ab.js deleted file mode 100644 index 3b37b4d0c..000000000 --- a/docs/build/assets/js/2555.3c26d2ab.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[2555],{2555(a,e,s){s.d(e,{createWardleyServices:()=>c.J});var c=s(4837);s(9302)}}]); \ No newline at end of file diff --git a/docs/build/assets/js/2665.7c31be5b.js b/docs/build/assets/js/2665.7c31be5b.js deleted file mode 100644 index bf37870fc..000000000 --- a/docs/build/assets/js/2665.7c31be5b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[2665],{2665(t,e,a){a.d(e,{diagram:()=>B});var r=a(8213),n=a(5871),o=a(8515),i=a(3706),s=a(797),l=a(8731),d=(0,s.K2)((t,e)=>{const a=t<=1?100*t:t;if(a<0||a>100)throw new Error(`${e} must be between 0-1 (decimal) or 0-100 (percentage). Received: ${t}`);return a},"toPercent"),c=(0,s.K2)((t,e,a)=>({x:d(e,`${a} evolution`),y:d(t,`${a} visibility`)}),"toCoordinates"),p=(0,s.K2)(t=>{if(t)return"+<>"===t?"bidirectional":"+<"===t?"backward":"+>"===t?"forward":void 0},"getFlowFromPort"),h=(0,s.K2)(t=>{if(!t?.startsWith("+"))return{};const e=/^\+'([^']*)'/.exec(t),a=e?.[1];return t.includes("<>")?{flow:"bidirectional",label:a}:t.includes("<")?{flow:"backward",label:a}:t.includes(">")?{flow:"forward",label:a}:{label:a}},"extractFlowFromArrow"),x=(0,s.K2)((t,e)=>{if((0,n.S)(t,e),t.size&&e.setSize(t.size.width,t.size.height),t.evolution){const a=t.evolution.stages.map(t=>t.secondName?`${t.name.trim()} / ${t.secondName.trim()}`:t.name.trim()),r=t.evolution.stages.filter(t=>void 0!==t.boundary).map(t=>t.boundary);e.updateAxes({stages:a,stageBoundaries:r})}if(t.anchors.forEach(t=>{const a=c(t.visibility,t.evolution,`Anchor "${t.name}"`);e.addNode(t.name,t.name,a.x,a.y,"anchor")}),t.components.forEach(t=>{const a=c(t.visibility,t.evolution,`Component "${t.name}"`),r=t.label?(t.label.negX?-1:1)*t.label.offsetX:void 0,n=t.label?(t.label.negY?-1:1)*t.label.offsetY:void 0,o=t.decorator?.strategy;e.addNode(t.name,t.name,a.x,a.y,"component",r,n,t.inertia,o)}),t.notes.forEach(t=>{const a=c(t.visibility,t.evolution,`Note "${t.text}"`);e.addNote(t.text,a.x,a.y)}),t.pipelines.forEach(t=>{const a=e.getNode(t.parent);if(!a||"number"!=typeof a.y)throw new Error(`Pipeline "${t.parent}" must reference an existing component with coordinates.`);const r=a.y;e.startPipeline(t.parent),t.components.forEach(a=>{const n=`${t.parent}_${a.name}`,o=a.label?(a.label.negX?-1:1)*a.label.offsetX:void 0,i=a.label?(a.label.negY?-1:1)*a.label.offsetY:void 0,s=d(a.evolution,`Pipeline component "${a.name}" evolution`);e.addNode(n,a.name,s,r,"pipeline-component",o,i),e.addPipelineComponent(t.parent,n)})}),t.links.forEach(t=>{const a=!!t.arrow&&(t.arrow.includes("-.->")||t.arrow.includes(".-."));let r=p(t.fromPort)??p(t.toPort);const{flow:n,label:o}=h(t.arrow);!r&&n&&(r=n);const i=t.linkLabel,s=o??i;e.addLink(e.resolveNodeId(t.from),e.resolveNodeId(t.to),a,s,r)}),t.evolves.forEach(t=>{const a=e.getNode(t.component);if(void 0!==a?.y){const r=d(t.target,`Evolve target for "${t.component}"`);e.addTrend(t.component,r,a.y)}}),t.annotations.length>0){const a=t.annotations[0],r=c(a.x,a.y,"Annotations box");e.setAnnotationsBox(r.x,r.y)}t.annotation.forEach(t=>{const a=c(t.x,t.y,`Annotation ${t.number}`);e.addAnnotation(t.number,[{x:a.x,y:a.y}],t.text)}),t.accelerators.forEach(t=>{const a=c(t.x,t.y,`Accelerator "${t.name}"`);e.addAccelerator(t.name,a.x,a.y)}),t.deaccelerators.forEach(t=>{const a=c(t.x,t.y,`Deaccelerator "${t.name}"`);e.addDeaccelerator(t.name,a.x,a.y)})},"populateDb"),y={parser:{yy:void 0},parse:(0,s.K2)(async t=>{const e=await(0,l.qg)("wardley",t);s.Rm.debug(e);const a=y.parser?.yy;if(!a||"function"!=typeof a.addNode)throw new Error("parser.parser?.yy was not a WardleyDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");x(e,a)},"parse")},g=new class{constructor(){this.nodes=new Map,this.links=[],this.trends=new Map,this.pipelines=new Map,this.annotations=[],this.notes=[],this.accelerators=[],this.deaccelerators=[],this.axes={}}static{(0,s.K2)(this,"WardleyBuilder")}addNode(t){const e=this.nodes.get(t.id)??{id:t.id,label:t.label},a={...e,...t,className:t.className??e.className,labelOffsetX:t.labelOffsetX??e.labelOffsetX,labelOffsetY:t.labelOffsetY??e.labelOffsetY};this.nodes.set(t.id,a)}addLink(t){this.links.push(t)}addTrend(t){this.trends.set(t.nodeId,t)}startPipeline(t){this.pipelines.set(t,{nodeId:t,componentIds:[]});const e=this.nodes.get(t);e&&(e.isPipelineParent=!0)}addPipelineComponent(t,e){const a=this.pipelines.get(t);a&&a.componentIds.push(e);const r=this.nodes.get(e);r&&(r.inPipeline=!0)}addAnnotation(t){this.annotations.push(t)}addNote(t){this.notes.push(t)}addAccelerator(t){this.accelerators.push(t)}addDeaccelerator(t){this.deaccelerators.push(t)}setAnnotationsBox(t,e){this.annotationsBox={x:t,y:e}}setAxes(t){this.axes={...this.axes,...t}}setSize(t,e){this.size={width:t,height:e}}getNode(t){return this.nodes.get(t)}resolveNodeId(t){if(this.nodes.has(t))return t;for(const[e,a]of this.nodes)if(a.label===t)return e;return t}build(){const t=[];for(const e of this.nodes.values()){if("number"!=typeof e.x||"number"!=typeof e.y)throw new Error(`Node "${e.label}" is missing coordinates`);t.push(e)}return{nodes:t,links:[...this.links],trends:[...this.trends.values()],pipelines:[...this.pipelines.values()],annotations:[...this.annotations],notes:[...this.notes],accelerators:[...this.accelerators],deaccelerators:[...this.deaccelerators],annotationsBox:this.annotationsBox,axes:{...this.axes},size:this.size}}clear(){this.nodes.clear(),this.links=[],this.trends.clear(),this.pipelines.clear(),this.annotations=[],this.notes=[],this.accelerators=[],this.deaccelerators=[],this.annotationsBox=void 0,this.axes={},this.size=void 0}};function f(){return(0,i.D7)()["wardley-beta"]}function u(t,e,a,r,n,o,i,s,l){g.addNode({id:t,label:e,x:a,y:r,className:n,labelOffsetX:o,labelOffsetY:i,inertia:s,sourceStrategy:l})}function w(t,e,a=!1,r,n){g.addLink({source:t,target:e,dashed:a,label:r,flow:n})}function m(t,e,a){g.addTrend({nodeId:t,targetX:e,targetY:a})}function k(t,e,a){g.addAnnotation({number:t,coordinates:e,text:a})}function b(t,e,a){g.addNote({text:t,x:e,y:a})}function $(t,e,a){g.addAccelerator({name:t,x:e,y:a})}function S(t,e,a){g.addDeaccelerator({name:t,x:e,y:a})}function v(t,e){g.setAnnotationsBox(t,e)}function C(t,e){g.setSize(t,e)}function M(t){g.startPipeline(t)}function P(t,e){g.addPipelineComponent(t,e)}function N(t){g.setAxes(t)}function z(t){return g.getNode(t)}function T(t){return g.resolveNodeId(t)}function L(){return g.build()}function A(){g.clear(),(0,i.IU)()}(0,s.K2)(f,"getConfig"),(0,s.K2)(u,"addNode"),(0,s.K2)(w,"addLink"),(0,s.K2)(m,"addTrend"),(0,s.K2)(k,"addAnnotation"),(0,s.K2)(b,"addNote"),(0,s.K2)($,"addAccelerator"),(0,s.K2)(S,"addDeaccelerator"),(0,s.K2)(v,"setAnnotationsBox"),(0,s.K2)(C,"setSize"),(0,s.K2)(M,"startPipeline"),(0,s.K2)(P,"addPipelineComponent"),(0,s.K2)(N,"updateAxes"),(0,s.K2)(z,"getNode"),(0,s.K2)(T,"resolveNodeId"),(0,s.K2)(L,"getWardleyData"),(0,s.K2)(A,"clear");var I={getConfig:f,addNode:u,addLink:w,addTrend:m,addAnnotation:k,addNote:b,addAccelerator:$,addDeaccelerator:S,setAnnotationsBox:v,setSize:C,startPipeline:M,addPipelineComponent:P,updateAxes:N,getNode:z,resolveNodeId:T,getWardleyData:L,clear:A,setAccTitle:i.SV,getAccTitle:i.iN,setDiagramTitle:i.ke,getDiagramTitle:i.ab,getAccDescription:i.m7,setAccDescription:i.EI},E=["Genesis","Custom Built","Product","Commodity"],K=(0,s.K2)(()=>{const{themeVariables:t}=(0,i.D7)();return{backgroundColor:t.wardley?.backgroundColor??t.background??"#fff",axisColor:t.wardley?.axisColor??"#000",axisTextColor:t.wardley?.axisTextColor??t.primaryTextColor??"#222",gridColor:t.wardley?.gridColor??"rgba(100, 100, 100, 0.2)",componentFill:t.wardley?.componentFill??"#fff",componentStroke:t.wardley?.componentStroke??"#000",componentLabelColor:t.wardley?.componentLabelColor??t.primaryTextColor??"#222",linkStroke:t.wardley?.linkStroke??"#000",evolutionStroke:t.wardley?.evolutionStroke??"#dc3545",annotationStroke:t.wardley?.annotationStroke??"#000",annotationTextColor:t.wardley?.annotationTextColor??t.primaryTextColor??"#222",annotationFill:t.wardley?.annotationFill??t.background??"#fff"}},"getTheme"),R=(0,s.K2)(()=>{const t=(0,i.D7)()["wardley-beta"];return{width:t?.width??900,height:t?.height??600,padding:t?.padding??48,nodeRadius:t?.nodeRadius??6,nodeLabelOffset:t?.nodeLabelOffset??8,axisFontSize:t?.axisFontSize??12,labelFontSize:t?.labelFontSize??10,showGrid:t?.showGrid??!1,useMaxWidth:t?.useMaxWidth??!0}},"getConfigValues"),B={parser:y,db:I,renderer:{draw:(0,s.K2)((t,e,a,n)=>{s.Rm.debug("Rendering Wardley map\n"+t);const o=R(),l=K(),d=1.6*o.nodeRadius,c=n.db,p=c.getWardleyData(),h=c.getDiagramTitle(),x=p.size?.width??o.width,y=p.size?.height??o.height,g=(0,r.D)(e);g.selectAll("*").remove(),(0,i.a$)(g,y,x,o.useMaxWidth),g.attr("viewBox",`0 0 ${x} ${y}`);const f=g.append("g").attr("class","wardley-map"),u=g.append("defs");u.append("marker").attr("id",`arrow-${e}`).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerWidth",6).attr("markerHeight",6).attr("orient","auto-start-reverse").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("fill",l.evolutionStroke).attr("stroke","none"),u.append("marker").attr("id",`link-arrow-end-${e}`).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerWidth",5).attr("markerHeight",5).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("fill",l.linkStroke).attr("stroke","none"),u.append("marker").attr("id",`link-arrow-start-${e}`).attr("viewBox","0 0 10 10").attr("refX",1).attr("refY",5).attr("markerWidth",5).attr("markerHeight",5).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z").attr("fill",l.linkStroke).attr("stroke","none"),f.append("rect").attr("class","wardley-background").attr("width",x).attr("height",y).attr("fill",l.backgroundColor);const w=x-2*o.padding,m=y-2*o.padding;h&&f.append("text").attr("class","wardley-title").attr("x",x/2).attr("y",o.padding/2).attr("fill",l.axisTextColor).attr("font-size",1.05*o.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").attr("dominant-baseline","middle").text(h);const k=(0,s.K2)(t=>o.padding+t/100*w,"projectX"),b=(0,s.K2)(t=>y-o.padding-t/100*m,"projectY"),$=f.append("g").attr("class","wardley-axes");$.append("line").attr("x1",o.padding).attr("x2",x-o.padding).attr("y1",y-o.padding).attr("y2",y-o.padding).attr("stroke",l.axisColor).attr("stroke-width",1),$.append("line").attr("x1",o.padding).attr("x2",o.padding).attr("y1",o.padding).attr("y2",y-o.padding).attr("stroke",l.axisColor).attr("stroke-width",1);const S=p.axes.xLabel??"Evolution",v=p.axes.yLabel??"Visibility";$.append("text").attr("class","wardley-axis-label wardley-axis-label-x").attr("x",o.padding+w/2).attr("y",y-o.padding/4).attr("fill",l.axisTextColor).attr("font-size",o.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").text(S),$.append("text").attr("class","wardley-axis-label wardley-axis-label-y").attr("x",o.padding/3).attr("y",o.padding+m/2).attr("fill",l.axisTextColor).attr("font-size",o.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").attr("transform",`rotate(-90 ${o.padding/3} ${o.padding+m/2})`).text(v);const C=p.axes.stages&&p.axes.stages.length>0?p.axes.stages:E;if(C.length>0){const t=f.append("g").attr("class","wardley-stages"),e=p.axes.stageBoundaries,a=[];if(e&&e.length===C.length){let t=0;e.forEach(e=>{a.push({start:t,end:e}),t=e})}else{const t=1/C.length;C.forEach((e,r)=>{a.push({start:r*t,end:(r+1)*t})})}C.forEach((e,r)=>{const n=a[r],i=o.padding+n.start*w,s=(i+(o.padding+n.end*w))/2;r>0&&t.append("line").attr("x1",i).attr("x2",i).attr("y1",o.padding).attr("y2",y-o.padding).attr("stroke","#000").attr("stroke-width",1).attr("stroke-dasharray","5 5").attr("opacity",.8),t.append("text").attr("class","wardley-stage-label").attr("x",s).attr("y",y-o.padding/1.5).attr("fill",l.axisTextColor).attr("font-size",o.axisFontSize-2).attr("text-anchor","middle").text(e)})}if(o.showGrid){const t=f.append("g").attr("class","wardley-grid");for(let e=1;e<4;e++){const a=e/4,r=o.padding+w*a;t.append("line").attr("x1",r).attr("x2",r).attr("y1",o.padding).attr("y2",y-o.padding).attr("stroke",l.gridColor).attr("stroke-dasharray","2 6"),t.append("line").attr("x1",o.padding).attr("x2",x-o.padding).attr("y1",y-o.padding-m*a).attr("y2",y-o.padding-m*a).attr("stroke",l.gridColor).attr("stroke-dasharray","2 6")}}const M=new Map;if(p.nodes.forEach(t=>{M.set(t.id,{x:k(t.x),y:b(t.y),node:t})}),p.pipelines.length>0){const t=f.append("g").attr("class","wardley-pipelines"),e=f.append("g").attr("class","wardley-pipeline-links");p.pipelines.forEach(a=>{if(0===a.componentIds.length)return;const r=a.componentIds.map(t=>({id:t,pos:M.get(t),node:p.nodes.find(e=>e.id===t)})).filter(t=>t.pos&&t.node).sort((t,e)=>t.node.x-e.node.x);for(let t=0;t<r.length-1;t++){const a=r[t],n=r[t+1];e.append("line").attr("class","wardley-pipeline-evolution-link").attr("x1",a.pos.x).attr("y1",a.pos.y).attr("x2",n.pos.x).attr("y2",n.pos.y).attr("stroke",l.linkStroke).attr("stroke-width",1).attr("stroke-dasharray","4 4")}let n=1/0,i=-1/0,s=0;if(a.componentIds.forEach(t=>{const e=M.get(t);e&&(n=Math.min(n,e.x),i=Math.max(i,e.x),s=e.y)}),n!==1/0&&i!==-1/0){const e=15,r=4*o.nodeRadius,c=s-r/2,p=M.get(a.nodeId);if(p){const t=(n+i)/2;p.x=t,p.y=c-d/6}t.append("rect").attr("class","wardley-pipeline-box").attr("x",n-e).attr("y",c).attr("width",i-n+2*e).attr("height",r).attr("fill","none").attr("stroke",l.axisColor).attr("stroke-width",1.5).attr("rx",4).attr("ry",4)}})}const P=f.append("g").attr("class","wardley-links"),N=new Map;p.pipelines.forEach(t=>{N.set(t.nodeId,new Set(t.componentIds))});const z=p.links.filter(t=>{if(!M.has(t.source)||!M.has(t.target))return!1;const e=N.get(t.target);return!e?.has(t.source)});P.selectAll("line").data(z).enter().append("line").attr("class",t=>"wardley-link"+(t.dashed?" wardley-link--dashed":"")).attr("x1",t=>{const e=M.get(t.source),a=M.get(t.target),r=p.nodes.find(e=>e.id===t.source).isPipelineParent?d/Math.sqrt(2):o.nodeRadius,n=a.x-e.x,i=a.y-e.y,s=Math.sqrt(n*n+i*i);return e.x+n/s*r}).attr("y1",t=>{const e=M.get(t.source),a=M.get(t.target),r=p.nodes.find(e=>e.id===t.source).isPipelineParent?d/Math.sqrt(2):o.nodeRadius,n=a.x-e.x,i=a.y-e.y,s=Math.sqrt(n*n+i*i);return e.y+i/s*r}).attr("x2",t=>{const e=M.get(t.source),a=M.get(t.target),r=p.nodes.find(e=>e.id===t.target).isPipelineParent?d/Math.sqrt(2):o.nodeRadius,n=e.x-a.x,i=e.y-a.y,s=Math.sqrt(n*n+i*i);return a.x+n/s*r}).attr("y2",t=>{const e=M.get(t.source),a=M.get(t.target),r=p.nodes.find(e=>e.id===t.target).isPipelineParent?d/Math.sqrt(2):o.nodeRadius,n=e.x-a.x,i=e.y-a.y,s=Math.sqrt(n*n+i*i);return a.y+i/s*r}).attr("stroke",l.linkStroke).attr("stroke-width",1).attr("stroke-dasharray",t=>t.dashed?"6 6":null).attr("marker-end",t=>"forward"===t.flow||"bidirectional"===t.flow?`url(#link-arrow-end-${e})`:null).attr("marker-start",t=>"backward"===t.flow||"bidirectional"===t.flow?`url(#link-arrow-start-${e})`:null),P.selectAll("text").data(z.filter(t=>t.label)).enter().append("text").attr("class","wardley-link-label").attr("x",t=>{const e=M.get(t.source),a=M.get(t.target),r=(e.x+a.x)/2,n=a.y-e.y,o=a.x-e.x;return r+8*(n/Math.sqrt(o*o+n*n))}).attr("y",t=>{const e=M.get(t.source),a=M.get(t.target),r=(e.y+a.y)/2,n=a.x-e.x,o=a.y-e.y;return r+8*(-n/Math.sqrt(n*n+o*o))}).attr("fill",l.axisTextColor).attr("font-size",o.labelFontSize).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("transform",t=>{const e=M.get(t.source),a=M.get(t.target),r=(e.x+a.x)/2,n=(e.y+a.y)/2,o=a.x-e.x,i=a.y-e.y,s=Math.sqrt(o*o+i*i),l=r+8*(i/s),d=n+8*(-o/s);let c=180*Math.atan2(i,o)/Math.PI;return(c>90||c<-90)&&(c+=180),`rotate(${c} ${l} ${d})`}).text(t=>t.label);const T=f.append("g").attr("class","wardley-trends"),L=p.trends.map(t=>{const e=M.get(t.nodeId);if(!e)return null;const a=k(t.targetX),r=b(t.targetY),n=a-e.x,i=r-e.y,s=Math.sqrt(n*n+i*i),l=o.nodeRadius+2;return{origin:e,targetX:a,targetY:r,adjustedX2:s>l?a-n/s*l:a,adjustedY2:s>l?r-i/s*l:r}}).filter(t=>null!==t);T.selectAll("line").data(L).enter().append("line").attr("class","wardley-trend").attr("x1",t=>t.origin.x).attr("y1",t=>t.origin.y).attr("x2",t=>t.adjustedX2).attr("y2",t=>t.adjustedY2).attr("stroke",l.evolutionStroke).attr("stroke-width",1).attr("stroke-dasharray","4 4").attr("marker-end",`url(#arrow-${e})`);const A=f.append("g").attr("class","wardley-nodes").selectAll("g").data(p.nodes).enter().append("g").attr("class",t=>["wardley-node",t.className?`wardley-node--${t.className}`:""].filter(Boolean).join(" "));A.filter(t=>"outsource"===t.sourceStrategy).append("circle").attr("class","wardley-outsource-overlay").attr("cx",t=>M.get(t.id).x).attr("cy",t=>M.get(t.id).y).attr("r",2*o.nodeRadius).attr("fill","#666").attr("stroke",l.componentStroke).attr("stroke-width",1),A.filter(t=>"buy"===t.sourceStrategy).append("circle").attr("class","wardley-buy-overlay").attr("cx",t=>M.get(t.id).x).attr("cy",t=>M.get(t.id).y).attr("r",2*o.nodeRadius).attr("fill","#ccc").attr("stroke",l.componentStroke).attr("stroke-width",1),A.filter(t=>"build"===t.sourceStrategy).append("circle").attr("class","wardley-build-overlay").attr("cx",t=>M.get(t.id).x).attr("cy",t=>M.get(t.id).y).attr("r",2*o.nodeRadius).attr("fill","#eee").attr("stroke","#000").attr("stroke-width",1);const I=A.filter(t=>"market"===t.sourceStrategy);I.append("circle").attr("class","wardley-market-overlay").attr("cx",t=>M.get(t.id).x).attr("cy",t=>M.get(t.id).y).attr("r",2*o.nodeRadius).attr("fill","white").attr("stroke",l.componentStroke).attr("stroke-width",1),A.filter(t=>!t.isPipelineParent&&"market"!==t.sourceStrategy&&"anchor"!==t.className).append("circle").attr("cx",t=>M.get(t.id).x).attr("cy",t=>M.get(t.id).y).attr("r",o.nodeRadius).attr("fill",l.componentFill).attr("stroke",l.componentStroke).attr("stroke-width",1);const B=.7*o.nodeRadius,F=1.2*o.nodeRadius;if(I.append("line").attr("class","wardley-market-line").attr("x1",t=>M.get(t.id).x).attr("y1",t=>M.get(t.id).y-F).attr("x2",t=>M.get(t.id).x-F*Math.cos(Math.PI/6)).attr("y2",t=>M.get(t.id).y+F*Math.sin(Math.PI/6)).attr("stroke",l.componentStroke).attr("stroke-width",1),I.append("line").attr("class","wardley-market-line").attr("x1",t=>M.get(t.id).x-F*Math.cos(Math.PI/6)).attr("y1",t=>M.get(t.id).y+F*Math.sin(Math.PI/6)).attr("x2",t=>M.get(t.id).x+F*Math.cos(Math.PI/6)).attr("y2",t=>M.get(t.id).y+F*Math.sin(Math.PI/6)).attr("stroke",l.componentStroke).attr("stroke-width",1),I.append("line").attr("class","wardley-market-line").attr("x1",t=>M.get(t.id).x+F*Math.cos(Math.PI/6)).attr("y1",t=>M.get(t.id).y+F*Math.sin(Math.PI/6)).attr("x2",t=>M.get(t.id).x).attr("y2",t=>M.get(t.id).y-F).attr("stroke",l.componentStroke).attr("stroke-width",1),I.append("circle").attr("class","wardley-market-dot").attr("cx",t=>M.get(t.id).x).attr("cy",t=>M.get(t.id).y-F).attr("r",B).attr("fill","white").attr("stroke",l.componentStroke).attr("stroke-width",2),I.append("circle").attr("class","wardley-market-dot").attr("cx",t=>M.get(t.id).x-F*Math.cos(Math.PI/6)).attr("cy",t=>M.get(t.id).y+F*Math.sin(Math.PI/6)).attr("r",B).attr("fill","white").attr("stroke",l.componentStroke).attr("stroke-width",2),I.append("circle").attr("class","wardley-market-dot").attr("cx",t=>M.get(t.id).x+F*Math.cos(Math.PI/6)).attr("cy",t=>M.get(t.id).y+F*Math.sin(Math.PI/6)).attr("r",B).attr("fill","white").attr("stroke",l.componentStroke).attr("stroke-width",2),A.filter(t=>!0===t.isPipelineParent).append("rect").attr("x",t=>M.get(t.id).x-d/2).attr("y",t=>M.get(t.id).y-d/2).attr("width",d).attr("height",d).attr("fill",l.componentFill).attr("stroke",l.componentStroke).attr("stroke-width",1),A.filter(t=>!0===t.inertia).append("line").attr("class","wardley-inertia").attr("x1",t=>{const e=M.get(t.id);let a=t.isPipelineParent?d/2+15:o.nodeRadius+15;return t.sourceStrategy&&(a+=o.nodeRadius+10),e.x+a}).attr("y1",t=>{const e=M.get(t.id),a=t.isPipelineParent?d:2*o.nodeRadius;return e.y-a/2}).attr("x2",t=>{const e=M.get(t.id);let a=t.isPipelineParent?d/2+15:o.nodeRadius+15;return t.sourceStrategy&&(a+=o.nodeRadius+10),e.x+a}).attr("y2",t=>{const e=M.get(t.id),a=t.isPipelineParent?d:2*o.nodeRadius;return e.y+a/2}).attr("stroke",l.componentStroke).attr("stroke-width",6),A.append("text").attr("x",t=>{const e=M.get(t.id);if("anchor"===t.className)return void 0!==t.labelOffsetX?e.x+t.labelOffsetX:e.x;let a=o.nodeLabelOffset;t.sourceStrategy&&void 0===t.labelOffsetX&&(a+=10);const r=t.labelOffsetX??a;return e.x+r}).attr("y",t=>{const e=M.get(t.id);if("anchor"===t.className)return void 0!==t.labelOffsetY?e.y+t.labelOffsetY:e.y-3;let a=-o.nodeLabelOffset;t.sourceStrategy&&void 0===t.labelOffsetY&&(a-=10);const r=t.labelOffsetY??a;return e.y+r}).attr("class","wardley-node-label").attr("fill",t=>"evolved"===t.className?l.evolutionStroke:"anchor"===t.className?"#000":l.componentLabelColor).attr("font-size",o.labelFontSize).attr("font-weight",t=>"anchor"===t.className?"bold":"normal").attr("text-anchor",t=>"anchor"===t.className?"middle":"start").attr("dominant-baseline",t=>"anchor"===t.className?"middle":"auto").text(t=>t.label),p.annotations.length>0){const t=f.append("g").attr("class","wardley-annotations");if(p.annotations.forEach(e=>{const a=e.coordinates.map(t=>({x:k(t.x),y:b(t.y)}));if(a.length>1)for(let r=0;r<a.length-1;r++)t.append("line").attr("class","wardley-annotation-line").attr("x1",a[r].x).attr("y1",a[r].y).attr("x2",a[r+1].x).attr("y2",a[r+1].y).attr("stroke",l.axisColor).attr("stroke-width",1.5).attr("stroke-dasharray","4 4");a.forEach(a=>{const r=t.append("g").attr("class","wardley-annotation");r.append("circle").attr("cx",a.x).attr("cy",a.y).attr("r",10).attr("fill","white").attr("stroke",l.axisColor).attr("stroke-width",1.5),r.append("text").attr("x",a.x).attr("y",a.y).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",10).attr("fill",l.axisTextColor).attr("font-weight","bold").text(e.number)})}),p.annotationsBox){let e=k(p.annotationsBox.x),a=b(p.annotationsBox.y);const r=10,n=16,i=11,s=t.append("g").attr("class","wardley-annotations-box"),d=[...p.annotations].filter(t=>t.text).sort((t,e)=>t.number-e.number),c=[];if(d.forEach((t,o)=>{const d=s.append("text").attr("x",e+r).attr("y",a+r+(o+1)*n).attr("font-size",i).attr("fill",l.axisTextColor).attr("text-anchor","start").attr("dominant-baseline","middle").text(`${t.number}. ${t.text}`);c.push(d)}),c.length>0){let t=0,i=0;c.forEach(e=>{const a=e.node(),r=a.getComputedTextLength();t=Math.max(t,r);const n=a.getBBox();i=Math.max(i,n.height)});const p=t+2*r+105,h=d.length*n+2*r+i/2,g=o.padding,f=x-o.padding-p,u=o.padding,w=y-o.padding-h;e=Math.max(g,Math.min(e,f)),a=Math.max(u,Math.min(a,w)),c.forEach((t,o)=>{t.attr("x",e+r).attr("y",a+r+(o+1)*n)}),s.insert("rect","text").attr("x",e).attr("y",a).attr("width",p).attr("height",h).attr("fill","white").attr("stroke",l.axisColor).attr("stroke-width",1.5).attr("rx",4).attr("ry",4)}}}if(p.notes.length>0){const t=f.append("g").attr("class","wardley-notes");p.notes.forEach(e=>{const a=k(e.x),r=b(e.y);t.append("text").attr("x",a).attr("y",r).attr("text-anchor","start").attr("font-size",11).attr("fill",l.axisTextColor).attr("font-weight","bold").text(e.text)})}if(p.accelerators.length>0){const t=f.append("g").attr("class","wardley-accelerators");p.accelerators.forEach(e=>{const a=k(e.x),r=b(e.y),n=60,o=`\n M ${a} ${r-15}\n L ${a+n-20} ${r-15}\n L ${a+n-20} ${r-15-8}\n L ${a+n} ${r}\n L ${a+n-20} ${r+15+8}\n L ${a+n-20} ${r+15}\n L ${a} ${r+15}\n Z\n `;t.append("path").attr("d",o).attr("fill","white").attr("stroke",l.componentStroke).attr("stroke-width",1),t.append("text").attr("x",a+30).attr("y",r+15+15).attr("text-anchor","middle").attr("font-size",10).attr("fill",l.axisTextColor).attr("font-weight","bold").text(e.name)})}if(p.deaccelerators.length>0){const t=f.append("g").attr("class","wardley-deaccelerators");p.deaccelerators.forEach(e=>{const a=k(e.x),r=b(e.y),n=`\n M ${a+60} ${r-15}\n L ${a+20} ${r-15}\n L ${a+20} ${r-15-8}\n L ${a} ${r}\n L ${a+20} ${r+15+8}\n L ${a+20} ${r+15}\n L ${a+60} ${r+15}\n Z\n `;t.append("path").attr("d",n).attr("fill","white").attr("stroke",l.componentStroke).attr("stroke-width",1),t.append("text").attr("x",a+30).attr("y",r+15+15).attr("text-anchor","middle").attr("font-size",10).attr("fill",l.axisTextColor).attr("font-weight","bold").text(e.name)})}},"draw")},styles:(0,s.K2)(({wardley:t}={})=>{const e=(0,i.P$)(),a=(0,i.zj)(),r=(0,o.$t)(e,a.themeVariables),n=(0,o.$t)(r.wardley,t);return`\n .wardley-background {\n fill: ${n.backgroundColor};\n }\n .wardley-axes line, .wardley-axes path {\n stroke: ${n.axisColor};\n }\n .wardley-axis-label {\n fill: ${n.axisTextColor};\n }\n .wardley-stage-label {\n fill: ${n.axisTextColor};\n }\n .wardley-grid line {\n stroke: ${n.gridColor};\n }\n .wardley-node circle {\n fill: ${n.componentFill};\n stroke: ${n.componentStroke};\n }\n .wardley-node-label {\n fill: ${n.componentLabelColor};\n }\n .wardley-link {\n stroke: ${n.linkStroke};\n }\n .wardley-link--dashed {\n stroke-dasharray: 4 4;\n }\n .wardley-link-label {\n fill: ${n.axisTextColor};\n }\n .wardley-trend line {\n stroke: ${n.evolutionStroke};\n }\n .wardley-annotation-line {\n stroke: ${n.annotationStroke};\n }\n .wardley-annotation circle {\n fill: ${n.annotationFill};\n stroke: ${n.annotationStroke};\n }\n .wardley-annotation text {\n fill: ${n.annotationTextColor};\n }\n .wardley-annotations-box rect {\n fill: ${n.annotationFill};\n stroke: ${n.annotationStroke};\n }\n .wardley-annotations-box text {\n fill: ${n.annotationTextColor};\n }\n .wardley-pipeline-box {\n stroke: ${n.componentStroke};\n }\n .wardley-notes text {\n fill: ${n.axisTextColor};\n }\n `},"styles")}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/2e5b4b03.fe9dff7a.js b/docs/build/assets/js/2e5b4b03.fe9dff7a.js deleted file mode 100644 index 7dfb3fee7..000000000 --- a/docs/build/assets/js/2e5b4b03.fe9dff7a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[5680],{7535(e,t,r){r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"intro","title":"Doriath","description":"An encrypted secrets manager for Nextcloud \u2014 password manager and key store for users and applications.","source":"@site/intro.md","sourceDirName":".","slug":"/intro","permalink":"/docs/intro","draft":false,"unlisted":false,"editUrl":"https://github.com/ConductionNL/doriath/tree/development/docs/intro.md","tags":[],"version":"current","sidebarPosition":1,"frontMatter":{"sidebar_position":1},"sidebar":"tutorialSidebar","next":{"title":"Tutorials","permalink":"/docs/category/tutorials"}}');var n=r(4848),a=r(8453);const i={sidebar_position:1},o="Doriath",d={},c=[{value:"What is Doriath?",id:"what-is-doriath",level:2},{value:"Getting Started",id:"getting-started",level:2}];function l(e){const t={a:"a",blockquote:"blockquote",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"doriath",children:"Doriath"})}),"\n",(0,n.jsx)(t.p,{children:"An encrypted secrets manager for Nextcloud \u2014 password manager and key store for users and applications."}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Status: in development."})," This documentation site is up so the\nbrand surface and the eventual journeydoc tutorials have a stable\nhome. Real walkthroughs and screenshots land as the UI lands. Watch\nthe ",(0,n.jsx)(t.a,{href:"https://github.com/ConductionNL/doriath",children:"GitHub repository"})," for\nmilestones."]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"what-is-doriath",children:"What is Doriath?"}),"\n",(0,n.jsx)(t.p,{children:"Doriath is an encrypted vault built natively into Nextcloud. It stores secrets \u2014 passwords, API keys, tokens, SSH keys, certificates, and database credentials \u2014 encrypted at rest using RSA-4096 public-key cryptography. Private keys are protected by AES-256 encryption derived from a user's master password, ensuring zero-knowledge security: not even the server administrator can read your secrets."}),"\n",(0,n.jsx)(t.p,{children:"Unlike standalone password managers (Bitwarden, 1Password) or infrastructure secret engines (HashiCorp Vault), Doriath lives where your team already works. It leverages Nextcloud's identity layer, group management, unified search, and notification system \u2014 so sharing a secret is as natural as sharing a file. A built-in private Certificate Authority (root + intermediate) signs all user and application certificates, enabling enterprise patterns like write-without-read secret requests and CSR-based application onboarding."}),"\n",(0,n.jsx)(t.h2,{id:"getting-started",children:"Getting Started"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"./ARCHITECTURE",children:"Architecture & Data Model"})," \u2014 Standards research, encryption architecture, entity definitions"]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"./FEATURES",children:"Feature Analysis"})," \u2014 Competitive landscape, 90-feature roadmap, and strategic positioning"]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"./DESIGN-REFERENCES",children:"Design References"})," \u2014 Wireframes, UX patterns, and design inspiration"]}),"\n"]}),"\n",(0,n.jsxs)(t.p,{children:["Free and open source under the EUPL-1.2 license. For support, contact ",(0,n.jsx)(t.a,{href:"mailto:support@conduction.nl",children:"support@conduction.nl"}),"."]})]})}function h(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/3049.85912d79.js b/docs/build/assets/js/3049.85912d79.js deleted file mode 100644 index caea8e0c0..000000000 --- a/docs/build/assets/js/3049.85912d79.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[3049],{3049(t,e,n){n.d(e,{diagram:()=>lt});var i=n(8213),r=n(8515),a=n(3706),s=n(797),o=n(451),c=n(3219),l=n(8041),h=n(5263),d=function(){var t=(0,s.K2)(function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},"o"),e=[6,11,13,14,15,17,19,20,23,24],n=[1,12],i=[1,13],r=[1,14],a=[1,15],o=[1,16],c=[1,19],l=[1,20],h={trace:(0,s.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,timeline_header:4,document:5,EOF:6,timeline:7,timeline_lr:8,timeline_td:9,line:10,SPACE:11,statement:12,NEWLINE:13,title:14,acc_title:15,acc_title_value:16,acc_descr:17,acc_descr_value:18,acc_descr_multiline_value:19,section:20,period_statement:21,event_statement:22,period:23,event:24,$accept:0,$end:1},terminals_:{2:"error",6:"EOF",7:"timeline",8:"timeline_lr",9:"timeline_td",11:"SPACE",13:"NEWLINE",14:"title",15:"acc_title",16:"acc_title_value",17:"acc_descr",18:"acc_descr_value",19:"acc_descr_multiline_value",20:"section",23:"period",24:"event"},productions_:[0,[3,3],[4,1],[4,1],[4,1],[5,0],[5,2],[10,2],[10,1],[10,1],[10,1],[12,1],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[21,1],[22,1]],performAction:(0,s.K2)(function(t,e,n,i,r,a,s){var o=a.length-1;switch(r){case 1:return a[o-1];case 3:i.setDirection("LR");break;case 4:i.setDirection("TD");break;case 5:case 9:case 10:this.$=[];break;case 6:a[o-1].push(a[o]),this.$=a[o-1];break;case 7:case 8:this.$=a[o];break;case 11:i.getCommonDb().setDiagramTitle(a[o].substr(6)),this.$=a[o].substr(6);break;case 12:this.$=a[o].trim(),i.getCommonDb().setAccTitle(this.$);break;case 13:case 14:this.$=a[o].trim(),i.getCommonDb().setAccDescription(this.$);break;case 15:i.addSection(a[o].substr(8)),this.$=a[o].substr(8);break;case 18:i.addTask(a[o],0,""),this.$=a[o];break;case 19:i.addEvent(a[o].substr(2)),this.$=a[o]}},"anonymous"),table:[{3:1,4:2,7:[1,3],8:[1,4],9:[1,5]},{1:[3]},t(e,[2,5],{5:6}),t(e,[2,2]),t(e,[2,3]),t(e,[2,4]),{6:[1,7],10:8,11:[1,9],12:10,13:[1,11],14:n,15:i,17:r,19:a,20:o,21:17,22:18,23:c,24:l},t(e,[2,10],{1:[2,1]}),t(e,[2,6]),{12:21,14:n,15:i,17:r,19:a,20:o,21:17,22:18,23:c,24:l},t(e,[2,8]),t(e,[2,9]),t(e,[2,11]),{16:[1,22]},{18:[1,23]},t(e,[2,14]),t(e,[2,15]),t(e,[2,16]),t(e,[2,17]),t(e,[2,18]),t(e,[2,19]),t(e,[2,7]),t(e,[2,12]),t(e,[2,13])],defaultActions:{},parseError:(0,s.K2)(function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},"parseError"),parse:(0,s.K2)(function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,c="",l=0,h=0,d=0,u=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var f=p.yylloc;a.push(f);var m=p.options&&p.options.ranges;function x(){var t;return"number"!=typeof(t=i.pop()||p.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,s.K2)(function(t){n.length=n.length-2*t,r.length=r.length-t,a.length=a.length-t},"popStack"),(0,s.K2)(x,"lex");for(var b,k,w,_,v,$,K,S,E,R={};;){if(w=n[n.length-1],this.defaultActions[w]?_=this.defaultActions[w]:(null==b&&(b=x()),_=o[w]&&o[w][b]),void 0===_||!_.length||!_[0]){var T="";for($ in E=[],o[w])this.terminals_[$]&&$>2&&E.push("'"+this.terminals_[$]+"'");T=p.showPosition?"Parse error on line "+(l+1)+":\n"+p.showPosition()+"\nExpecting "+E.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==b?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(T,{text:p.match,token:this.terminals_[b]||b,line:p.yylineno,loc:f,expected:E})}if(_[0]instanceof Array&&_.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+b);switch(_[0]){case 1:n.push(b),r.push(p.yytext),a.push(p.yylloc),n.push(_[1]),b=null,k?(b=k,k=null):(h=p.yyleng,c=p.yytext,l=p.yylineno,f=p.yylloc,d>0&&d--);break;case 2:if(K=this.productions_[_[1]][1],R.$=r[r.length-K],R._$={first_line:a[a.length-(K||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(K||1)].first_column,last_column:a[a.length-1].last_column},m&&(R._$.range=[a[a.length-(K||1)].range[0],a[a.length-1].range[1]]),void 0!==(v=this.performAction.apply(R,[c,h,l,g.yy,_[1],r,a].concat(u))))return v;K&&(n=n.slice(0,-1*K*2),r=r.slice(0,-1*K),a=a.slice(0,-1*K)),n.push(this.productions_[_[1]][0]),r.push(R.$),a.push(R._$),S=o[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0},"parse")},d=function(){return{EOF:1,parseError:(0,s.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,s.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,s.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,s.K2)(function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,s.K2)(function(){return this._more=!0,this},"more"),reject:(0,s.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,s.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,s.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,s.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,s.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,s.K2)(function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},"test_match"),next:(0,s.K2)(function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;a<r.length;a++)if((n=this._input.match(this.rules[r[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,s.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,s.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,s.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,s.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,s.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,s.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,s.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,s.K2)(function(t,e,n,i){switch(n){case 0:case 1:case 3:case 4:break;case 2:return 13;case 5:return 8;case 6:return 9;case 7:return 7;case 8:return 14;case 9:return this.begin("acc_title"),15;case 10:return this.popState(),"acc_title_value";case 11:return this.begin("acc_descr"),17;case 12:return this.popState(),"acc_descr_value";case 13:this.begin("acc_descr_multiline");break;case 14:this.popState();break;case 15:return"acc_descr_multiline_value";case 16:return 20;case 17:return 24;case 18:return 23;case 19:return 6;case 20:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:timeline[ \t]+LR\b)/i,/^(?:timeline[ \t]+TD\b)/i,/^(?:timeline\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^:\n]+)/i,/^(?::\s(?:[^:\n]|:(?!\s))+)/i,/^(?:[^#:\n]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[14,15],inclusive:!1},acc_descr:{rules:[12],inclusive:!1},acc_title:{rules:[10],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,11,13,16,17,18,19,20],inclusive:!0}}}}();function u(){this.yy={}}return h.lexer=d,(0,s.K2)(u,"Parser"),u.prototype=h,h.Parser=u,new u}();d.parser=d;var u=d,p={};(0,s.VA)(p,{addEvent:()=>R,addSection:()=>$,addTask:()=>E,addTaskOrg:()=>T,clear:()=>w,default:()=>M,getCommonDb:()=>k,getDirection:()=>v,getSections:()=>K,getTasks:()=>S,setDirection:()=>_});var g="",y=0,f="LR",m=[],x=[],b=[],k=(0,s.K2)(()=>a.Wt,"getCommonDb"),w=(0,s.K2)(function(){m.length=0,x.length=0,g="",b.length=0,f="LR",(0,a.IU)()},"clear"),_=(0,s.K2)(function(t){f=t},"setDirection"),v=(0,s.K2)(function(){return f},"getDirection"),$=(0,s.K2)(function(t){g=t,m.push(t)},"addSection"),K=(0,s.K2)(function(){return m},"getSections"),S=(0,s.K2)(function(){let t=I();let e=0;for(;!t&&e<100;)t=I(),e++;return x.push(...b),x},"getTasks"),E=(0,s.K2)(function(t,e,n){const i={id:y++,section:g,type:g,task:t,score:e||0,events:n?[n]:[]};b.push(i)},"addTask"),R=(0,s.K2)(function(t){b.find(t=>t.id===y-1).events.push(t)},"addEvent"),T=(0,s.K2)(function(t){const e={section:g,type:g,description:t,task:t,classes:[]};x.push(e)},"addTaskOrg"),I=(0,s.K2)(function(){const t=(0,s.K2)(function(t){return b[t].processed},"compileTask");let e=!0;for(const[n,i]of b.entries())t(n),e=e&&i.processed;return e},"compileTasks"),M={clear:w,getCommonDb:k,getDirection:v,setDirection:_,addSection:$,getSections:K,getTasks:S,addTask:E,addTaskOrg:T,addEvent:R},L=0,H=(0,s.K2)(function(t,e){const n=t.append("rect");return n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),n.attr("rx",e.rx),n.attr("ry",e.ry),void 0!==e.class&&n.attr("class",e.class),n},"drawRect"),C=(0,s.K2)(function(t,e){const n=15,i=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",n).attr("stroke-width",2).attr("overflow","visible"),r=t.append("g");function a(t){const i=(0,o.JLW)().startAngle(Math.PI/2).endAngle(Math.PI/2*3).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",i).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}function c(t){const i=(0,o.JLW)().startAngle(3*Math.PI/2).endAngle(Math.PI/2*5).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",i).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}function l(t){t.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return r.append("circle").attr("cx",e.cx-5).attr("cy",e.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),r.append("circle").attr("cx",e.cx+5).attr("cy",e.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),(0,s.K2)(a,"smile"),(0,s.K2)(c,"sad"),(0,s.K2)(l,"ambivalent"),e.score>3?a(r):e.score<3?c(r):l(r),i},"drawFace"),N=(0,s.K2)(function(t,e){const n=t.append("circle");return n.attr("cx",e.cx),n.attr("cy",e.cy),n.attr("class","actor-"+e.pos),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("r",e.r),void 0!==n.class&&n.attr("class",n.class),void 0!==e.title&&n.append("title").text(e.title),n},"drawCircle"),D=(0,s.K2)(function(t,e){const n=e.text.replace(/<br\s*\/?>/gi," "),i=t.append("text");i.attr("x",e.x),i.attr("y",e.y),i.attr("class","legend"),i.style("text-anchor",e.anchor),void 0!==e.class&&i.attr("class",e.class);const r=i.append("tspan");return r.attr("x",e.x+2*e.textMargin),r.text(n),i},"drawText"),A=(0,s.K2)(function(t,e){function n(t,e,n,i,r){return t+","+e+" "+(t+n)+","+e+" "+(t+n)+","+(e+i-r)+" "+(t+n-1.2*r)+","+(e+i)+" "+t+","+(e+i)}(0,s.K2)(n,"genPoints");const i=t.append("polygon");i.attr("points",n(e.x,e.y,50,20,7)),i.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,D(t,e)},"drawLabel"),O=(0,s.K2)(function(t,e,n){const i=t.append("g"),r=z();r.x=e.x,r.y=e.y,r.fill=e.fill,r.width=n.width,r.height=n.height,r.class="journey-section section-type-"+e.num,r.rx=3,r.ry=3,H(i,r),F(n)(e.text,i,r.x,r.y,r.width,r.height,{class:"journey-section section-type-"+e.num},n,e.colour)},"drawSection"),B=-1,P=(0,s.K2)(function(t,e,n,i){const r=e.x+n.width/2,a=t.append("g");B++;a.append("line").attr("id",i+"-task"+B).attr("x1",r).attr("y1",e.y).attr("x2",r).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),C(a,{cx:r,cy:300+30*(5-e.score),score:e.score});const s=z();s.x=e.x,s.y=e.y,s.fill=e.fill,s.width=n.width,s.height=n.height,s.class="task task-type-"+e.num,s.rx=3,s.ry=3,H(a,s),F(n)(e.task,a,s.x,s.y,s.width,s.height,{class:"task"},n,e.colour)},"drawTask"),W=(0,s.K2)(function(t,e){H(t,{x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,class:"rect"}).lower()},"drawBackgroundRect"),j=(0,s.K2)(function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},"getTextObj"),z=(0,s.K2)(function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),F=function(){function t(t,e,n,r,a,s,o,c){i(e.append("text").attr("x",n+a/2).attr("y",r+s/2+5).style("font-color",c).style("text-anchor","middle").text(t),o)}function e(t,e,n,r,a,s,o,c,l){const{taskFontSize:h,taskFontFamily:d}=c,u=t.split(/<br\s*\/?>/gi);for(let p=0;p<u.length;p++){const t=p*h-h*(u.length-1)/2,c=e.append("text").attr("x",n+a/2).attr("y",r).attr("fill",l).style("text-anchor","middle").style("font-size",h).style("font-family",d);c.append("tspan").attr("x",n+a/2).attr("dy",t).text(u[p]),c.attr("y",r+s/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),i(c,o)}}function n(t,n,r,a,s,o,c,l){const h=n.append("switch"),d=h.append("foreignObject").attr("x",r).attr("y",a).attr("width",s).attr("height",o).attr("position","fixed").append("xhtml:div").style("display","table").style("height","100%").style("width","100%");d.append("div").attr("class","label").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(t),e(t,h,r,a,s,o,c,l),i(d,c)}function i(t,e){for(const n in e)n in e&&t.attr(n,e[n])}return(0,s.K2)(t,"byText"),(0,s.K2)(e,"byTspan"),(0,s.K2)(n,"byFo"),(0,s.K2)(i,"_setTextAttrs"),function(i){return"fo"===i.textPlacement?n:"old"===i.textPlacement?t:e}}(),V=(0,s.K2)(function(t,e){L=0,B=-1,t.append("defs").append("marker").attr("id",e+"-arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z")},"initGraphics");function G(t,e){t.each(function(){var t,n=(0,o.Ltv)(this),i=n.text().split(/(\s+|<br>)/).reverse(),r=[],a=n.attr("y"),s=parseFloat(n.attr("dy")),c=n.text(null).append("tspan").attr("x",0).attr("y",a).attr("dy",s+"em");for(let o=0;o<i.length;o++)t=i[i.length-1-o],r.push(t),c.text(r.join(" ").trim()),(c.node().getComputedTextLength()>e||"<br>"===t)&&(r.pop(),c.text(r.join(" ").trim()),r="<br>"===t?[""]:[t],c=n.append("tspan").attr("x",0).attr("y",a).attr("dy","1.1em").text(t))})}(0,s.K2)(G,"wrap");var U=(0,s.K2)(function(t,e,n,i,r,a=!1){const{theme:s,look:c}=i,l=s?.includes("redux"),h=n%(i?.themeVariables?.THEME_COLOR_LIMIT??12)-1,d=t.append("g");e.section=h,d.attr("class",(e.class?e.class+" ":"")+"timeline-node section-"+h);const u=d.append("g"),p=d.append("g"),g=p.append("text").text(e.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(G,e.width).node().getBBox(),y=i.fontSize?.replace?i.fontSize.replace("px",""):i.fontSize;if(e.height=g.height+1.1*y*.5+e.padding,e.height=Math.max(e.height,e.maxHeight),e.width=e.width+2*e.padding,p.attr("transform","translate("+e.width/2+", "+e.padding/2+")"),l&&p.attr("transform",`translate(${e.width/2}, ${a?e.padding/2+3:e.padding})`),q(u,e,h,r,i),"neo"===c&&(d.attr("data-look","neo"),l)){const e=s.includes("dark"),n=t.node()?.ownerSVGElement??t.node(),i=(0,o.Ltv)(n),r=i.attr("id")??"",a=r?`${r}-drop-shadow`:"drop-shadow";if(i.select(`#${a}`).empty()){const t=i.select("defs");(t.empty()?i.append("defs"):t).append("filter").attr("id",a).attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity",e?"0.2":"0.06").attr("flood-color",e?"#FFFFFF":"#000000")}}return e},"drawNode"),Z=(0,s.K2)(function(t,e,n){const i=t.append("g"),r=i.append("text").text(e.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(G,e.width).node().getBBox(),a=n.fontSize?.replace?n.fontSize.replace("px",""):n.fontSize;return i.remove(),r.height+1.1*a*.5+e.padding},"getVirtualNodeHeight"),q=(0,s.K2)(function(t,e,n,i,r){const{theme:a}=r,s=a?.includes("redux")?0:5,o=s>0?`M0 ${e.height-5} v${10-e.height} q0,-${s},${s},-${s} h${e.width-10} q${s},0,${s},${s} v${e.height-5} H0 Z`:`M0 ${e.height-5} v${-(e.height-5)} h${e.width} v${e.height} H0 Z`;t.append("path").attr("id",i+"-node-"+L++).attr("class","node-bkg node-"+e.type).attr("d",o),a?.includes("redux")||t.append("line").attr("class","node-line-"+n).attr("x1",0).attr("y1",e.height).attr("x2",e.width).attr("y2",e.height)},"defaultBkg"),J={drawRect:H,drawCircle:N,drawSection:O,drawText:D,drawLabel:A,drawTask:P,drawBackgroundRect:W,getTextObj:j,getNoteRect:z,initGraphics:V,drawNode:U,getVirtualNodeHeight:Z},Y=(0,s.K2)(function(t,e,n,i){const r=(0,a.D7)(),{look:c,theme:l,themeVariables:h}=r,{useGradient:d,gradientStart:u,gradientStop:p}=h,g=r.timeline?.leftMargin??50;s.Rm.debug("timeline",i.db);const y=r.securityLevel;let f;"sandbox"===y&&(f=(0,o.Ltv)("#i"+e));const m=("sandbox"===y?(0,o.Ltv)(f.nodes()[0].contentDocument.body):(0,o.Ltv)("body")).select("#"+e);m.append("g");const x=i.db.getTasks(),b=i.db.getCommonDb().getDiagramTitle();s.Rm.debug("task",x),J.initGraphics(m,e);const k=i.db.getSections();s.Rm.debug("sections",k);let w=0,_=0,v=0,$=0,K=50+g,S=50;$=50;let E=0,R=!0;k.forEach(function(t){const e={number:E,descr:t,section:E,width:150,padding:20,maxHeight:w},n=J.getVirtualNodeHeight(m,e,r);s.Rm.debug("sectionHeight before draw",n),w=Math.max(w,n+20)});let T=0,I=0;s.Rm.debug("tasks.length",x.length);for(const[a,o]of x.entries()){const t={number:a,descr:o,section:o.section,width:150,padding:20,maxHeight:_},e=J.getVirtualNodeHeight(m,t,r);s.Rm.debug("taskHeight before draw",e),_=Math.max(_,e+20),T=Math.max(T,o.events.length);let n=0;for(const i of o.events){const t={descr:i,section:o.section,number:o.section,width:150,padding:20,maxHeight:50};n+=J.getVirtualNodeHeight(m,t,r)}o.events.length>0&&(n+=10*(o.events.length-1)),I=Math.max(I,n)}s.Rm.debug("maxSectionHeight before draw",w),s.Rm.debug("maxTaskHeight before draw",_),k&&k.length>0?k.forEach(t=>{const n=x.filter(e=>e.section===t),i={number:E,descr:t,section:E,width:200*Math.max(n.length,1)-50,padding:20,maxHeight:w};s.Rm.debug("sectionNode",i);const a=m.append("g"),o=J.drawNode(a,i,E,r,e);s.Rm.debug("sectionNode output",o),a.attr("transform",`translate(${K}, 50)`),S+=w+50,n.length>0&&X(m,n,E,K,S,_,r,T,I,w,!1,e),K+=200*Math.max(n.length,1),S=50,E++}):(R=!1,X(m,x,E,K,S,_,r,T,I,w,!0,e));const M=m.node().getBBox();s.Rm.debug("bounds",M),b&&m.append("text").text(b).attr("x","neo"===c?2*M.x+g:M.width/2-g).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),v=R?w+_+150:_+100;if(m.append("g").attr("class","lineWrapper").append("line").attr("x1",g).attr("y1",v).attr("x2",M.width+3*g).attr("y2",v).attr("stroke-width",4).attr("stroke","black").attr("marker-end",`url(#${e}-arrowhead)`),"neo"===c&&d&&"neutral"!==l){const t=m.select("defs"),e=(t.empty()?m.append("defs"):t).append("linearGradient").attr("id",m.attr("id")+"-gradient").attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");e.append("stop").attr("offset","0%").attr("stop-color",u).attr("stop-opacity",1),e.append("stop").attr("offset","100%").attr("stop-color",p).attr("stop-opacity",1)}(0,a.ot)(void 0,m,r.timeline?.padding??50,r.timeline?.useMaxWidth??!1)},"draw"),X=(0,s.K2)(function(t,e,n,i,r,a,o,c,l,h,d,u){for(const p of e){const e={descr:p.task,section:n,number:n,width:150,padding:20,maxHeight:a};s.Rm.debug("taskNode",e);const c=t.append("g").attr("class","taskWrapper"),h=J.drawNode(c,e,n,o,u).height;if(s.Rm.debug("taskHeight after draw",h),c.attr("transform",`translate(${i}, ${r})`),a=Math.max(a,h),p.events){const e=t.append("g").attr("class","lineWrapper");let s=a;r+=100,s+=Q(t,p.events,n,i,r,o,u),r-=100,e.append("line").attr("x1",i+95).attr("y1",r+a).attr("x2",i+95).attr("y2",r+a+100+l+100).attr("stroke-width",2).attr("stroke","black").attr("marker-end",`url(#${u}-arrowhead)`).attr("stroke-dasharray","5,5")}i+=200,d&&!o.timeline?.disableMulticolor&&n++}r-=10},"drawTasks"),Q=(0,s.K2)(function(t,e,n,i,r,a,o){let c=0;const l=r;r+=100;for(const h of e){const e={descr:h,section:n,number:n,width:150,padding:20,maxHeight:50};s.Rm.debug("eventNode",e);const l=t.append("g").attr("class","eventWrapper"),d=J.drawNode(l,e,n,a,o,!0).height;c+=d,l.attr("transform",`translate(${i}, ${r})`),r=r+10+d}return r=l,c},"drawEvents"),tt={setConf:(0,s.K2)(()=>{},"setConf"),draw:Y},et=200,nt=(0,s.K2)(function(t,e,n,o){const c=(0,a.D7)(),l=c.timeline?.leftMargin??50;s.Rm.debug("timeline",o.db);const h=(0,i.D)(e);h.append("g");const d=o.db.getTasks(),u=o.db.getCommonDb().getDiagramTitle();s.Rm.debug("task",d),J.initGraphics(h);const p=o.db.getSections();s.Rm.debug("sections",p);let g=0,y=0;const f=50+l;let m=50;const x=m,b=230,k=f+b;let w=0;const _=p&&p.length>0,v=_?k:f+b,$=Math.max(50,580);p.forEach(function(t){const e={number:w,descr:t,section:w,width:$,padding:5,maxHeight:g},n=J.getVirtualNodeHeight(h,e,c);s.Rm.debug("sectionHeight before draw",n),g=Math.max(g,n)});let K=0;s.Rm.debug("tasks.length",d.length);for(const[i,r]of d.entries()){const t={number:i,descr:r,section:r.section,width:et,padding:5,maxHeight:y},e=J.getVirtualNodeHeight(h,t,c);s.Rm.debug("taskHeight before draw",e),y=Math.max(y,e);let n=0;for(const i of r.events){const t={descr:i,section:r.section,number:r.section,width:300,padding:5,maxHeight:50};n+=J.getVirtualNodeHeight(h,t,c)}r.events.length>0&&(n+=10*(r.events.length-1)),K=Math.max(K,n)+0}s.Rm.debug("maxSectionHeight before draw",g),s.Rm.debug("maxTaskHeight before draw",y);const S=Math.max(y,K)+30;_?p.forEach(t=>{const e=d.filter(e=>e.section===t),n={number:w,descr:t,section:w,width:$,padding:5,maxHeight:g};s.Rm.debug("sectionNode",n);const i=h.append("g"),r=J.drawNode(i,n,w,c);s.Rm.debug("sectionNode output",r);const a=v-b;i.attr("transform",`translate(${a}, ${m})`);const o=m+r.height+20;e.length>0&&it(h,e,w,v,o,y,c,S,!1);const l=e.length,u=r.height+20+S*Math.max(l,1)-(l>0?60:0);m+=u,w++}):it(h,d,w,v,m,y,c,S,!0);let E=h.node()?.getBBox();if(!E)throw new Error("bbox not found");if(s.Rm.debug("bounds",E),u){if(h.append("text").text(u).attr("x",E.width/2-l).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),E=h.node()?.getBBox(),!E)throw new Error("bbox not found");s.Rm.debug("bounds after title",E)}const[R]=(0,r.I5)(c.fontSize),T=2*(R??16),I=.5*(R??16)+20,M=h.append("g").attr("class","lineWrapper");M.append("line").attr("x1",v).attr("y1",x-T).attr("x2",v).attr("y2",E.y+E.height+I).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),M.lower(),(0,a.ot)(void 0,h,c.timeline?.padding??50,c.timeline?.useMaxWidth??!1)},"draw"),it=(0,s.K2)(function(t,e,n,i,r,a,o,c,l){for(const h of e){const e={descr:h.task,section:n,number:n,width:et,padding:5,maxHeight:a};s.Rm.debug("taskNode",e);const d=t.append("g").attr("class","taskWrapper"),u=J.drawNode(d,e,n,o),p=u.height;s.Rm.debug("taskHeight after draw",p);const g=i-20-u.width;if(d.attr("transform",`translate(${g}, ${r})`),a=Math.max(a,p),h.events&&h.events.length>0){const e=r,a=i+50;rt(t,h.events,n,i,a,e,o)}r+=c,l&&!o.timeline?.disableMulticolor&&n++}},"drawTasks"),rt=(0,s.K2)(function(t,e,n,i,r,a,o){let c=a;for(const l of e){const e={descr:l,section:n,number:n,width:300,padding:5,maxHeight:0};s.Rm.debug("eventNode",e);const a=t.append("g").attr("class","eventWrapper"),h=J.drawNode(a,e,n,o).height;a.attr("transform",`translate(${r}, ${c})`);const d=c+h/2;t.append("g").attr("class","lineWrapper").append("line").attr("x1",i).attr("y1",d).attr("x2",r).attr("y2",d).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5"),c=c+h+10}return c-a},"drawEvents"),at={setConf:(0,s.K2)(()=>{},"setConf"),draw:nt},st=(0,s.K2)(t=>{const{theme:e}=(0,a.zj)(),n=e?.includes("dark"),i=e?.includes("color"),r=t.svgId?.replace(/^#/,"")??"",s=r?`url(#${r}-drop-shadow)`:t.dropShadow??"none";let o="";for(let a=0;a<t.THEME_COLOR_LIMIT;a++){const e=""+(17-3*a),r=i?t.borderColorArray[a]:t.mainBkg,c=i?t.borderColorArray[a]:t.nodeBorder;o+=`\n .section-${a-1} rect,\n .section-${a-1} path,\n .section-${a-1} circle {\n fill: ${n&&i?t.mainBkg:r};\n stroke: ${c};\n stroke-width: ${t.strokeWidth};\n filter: ${s};\n }\n\n .section-${a-1} text {\n fill: ${t.nodeBorder};\n font-weight: ${t.fontWeight}\n }\n\n .node-icon-${a-1} {\n font-size: 40px;\n color: ${t["cScaleLabel"+a]};\n }\n\n .section-edge-${a-1} {\n stroke: ${t["cScale"+a]};\n }\n\n .edge-depth-${a-1} {\n stroke-width: ${e};\n }\n\n .section-${a-1} line {\n stroke: ${t["cScaleInv"+a]};\n stroke-width: 3;\n }\n\n .lineWrapper line {\n stroke: ${t.nodeBorder};\n stroke-width:${t.strokeWidth}\n }\n\n .disabled,\n .disabled circle,\n .disabled text {\n fill: ${t.tertiaryColor??"lightgray"};\n }\n\n .disabled text {\n fill: ${t.clusterBorder??"#efefef"};\n }\n `}return o},"genReduxSections"),ot=(0,s.K2)(t=>{let e="";for(let n=0;n<t.THEME_COLOR_LIMIT;n++)t["lineColor"+n]=t["lineColor"+n]||t["cScaleInv"+n],(0,c.A)(t["lineColor"+n])?t["lineColor"+n]=(0,l.A)(t["lineColor"+n],20):t["lineColor"+n]=(0,h.A)(t["lineColor"+n],20);for(let n=0;n<t.THEME_COLOR_LIMIT;n++){const i=""+(17-3*n);e+=`\n .section-${n-1} rect, .section-${n-1} path, .section-${n-1} circle, .section-${n-1} path {\n fill: ${t["cScale"+n]};\n }\n .section-${n-1} text {\n fill: ${t["cScaleLabel"+n]};\n }\n .node-icon-${n-1} {\n font-size: 40px;\n color: ${t["cScaleLabel"+n]};\n }\n .section-edge-${n-1}{\n stroke: ${t["cScale"+n]};\n }\n .edge-depth-${n-1}{\n stroke-width: ${i};\n }\n .section-${n-1} line {\n stroke: ${t["cScaleInv"+n]} ;\n stroke-width: 3;\n }\n\n .lineWrapper line{\n stroke: ${t["cScaleLabel"+n]} ;\n }\n\n .disabled, .disabled circle, .disabled text {\n fill: ${t.tertiaryColor??"lightgray"};\n }\n .disabled text {\n fill: ${t.clusterBorder??"#efefef"};\n }\n `}return e},"genSections"),ct=(0,s.K2)(t=>{const{theme:e}=(0,a.zj)(),n=e?.includes("redux"),i="neutral"===e,r=t.svgId?.replace(/^#/,"")??"";let s="";if(t.useGradient&&r&&t.THEME_COLOR_LIMIT&&!i)for(let a=0;a<t.THEME_COLOR_LIMIT;a++)s+=`\n .section-${a-1}[data-look="neo"] rect,\n .section-${a-1}[data-look="neo"] path,\n .section-${a-1}[data-look="neo"] circle {\n fill: ${t.mainBkg};\n stroke: url(#${r}-gradient);\n stroke-width: 2;\n }\n .section-${a-1}[data-look="neo"] line {\n stroke: url(#${r}-gradient);\n stroke-width: 2;\n }`;return`\n .edge {\n stroke-width: 3;\n }\n ${n?st(t):ot(t)}\n ${s}\n .section-root rect, .section-root path, .section-root circle {\n fill: ${t.git0};\n }\n .section-root text {\n fill: ${t.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .eventWrapper {\n filter: brightness(120%);\n }\n`},"getStyles"),lt={db:p,renderer:{setConf:(0,s.K2)(()=>{},"setConf"),draw:(0,s.K2)((t,e,n,i)=>"TD"===(i?.db?.getDirection?.()??"LR")?at.draw(t,e,n,i):tt.draw(t,e,n,i),"draw")},parser:u,styles:ct}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/3088.5821fe72.js b/docs/build/assets/js/3088.5821fe72.js deleted file mode 100644 index dd051c7c5..000000000 --- a/docs/build/assets/js/3088.5821fe72.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[3088],{2938(e,t,i){i.d(t,{m:()=>r});var n=i(797),r=class{constructor(e){this.init=e,this.records=this.init()}static{(0,n.K2)(this,"ImperativeState")}reset(){this.records=this.init()}}},3088(e,t,i){i.d(t,{diagram:()=>T});var n=i(8213),r=i(5871),a=i(2938),o=i(8515),s=i(3706),d=i(797),c=i(8731),l=new a.m(()=>({cnt:1,stack:[{id:0,level:-1,name:"/",children:[]}]})),h=(0,d.K2)(()=>{l.reset(),(0,s.IU)()},"clear"),g=(0,d.K2)(()=>l.records.stack[0],"getRoot"),p=(0,d.K2)(()=>l.records.cnt,"getCount"),w=s.UI.treeView,k=(0,d.K2)(()=>(0,o.$t)(w,(0,s.zj)().treeView),"getConfig"),b={clear:h,addNode:(0,d.K2)((e,t)=>{for(;e<=l.records.stack[l.records.stack.length-1].level;)l.records.stack.pop();const i={id:l.records.cnt++,level:e,name:t,children:[]};l.records.stack[l.records.stack.length-1].children.push(i),l.records.stack.push(i)},"addNode"),getRoot:g,getCount:p,getConfig:k,getAccTitle:s.iN,getAccDescription:s.m7,getDiagramTitle:s.ab,setAccDescription:s.EI,setAccTitle:s.SV,setDiagramTitle:s.ke},m=(0,d.K2)(e=>{(0,r.S)(e,b),e.nodes.map(e=>b.addNode(e.indent?parseInt(e.indent):0,e.name))},"populate"),x={parse:(0,d.K2)(async e=>{const t=await(0,c.qg)("treeView",e);d.Rm.debug(t),m(t)},"parse")},u=(0,d.K2)((e,t,i,n,r)=>{const a=n.append("text").text(i.name).attr("dominant-baseline","middle").attr("class","treeView-node-label"),{height:o,width:s}=a.node().getBBox(),d=o+2*r.paddingY,c=s+2*r.paddingX;a.attr("x",e+r.paddingX),a.attr("y",t+d/2),i.BBox={x:e,y:t,width:c,height:d}},"positionLabel"),K=(0,d.K2)((e,t,i,n,r,a)=>e.append("line").attr("x1",t).attr("y1",i).attr("x2",n).attr("y2",r).attr("stroke-width",a).attr("class","treeView-node-line"),"positionLine"),B=(0,d.K2)((e,t,i)=>{let n=0,r=0;const a=(0,d.K2)((e,t,i,a)=>{const o=a*(i.rowIndent+i.paddingX);u(o,n,t,e,i);const{height:s,width:d}=t.BBox;K(e,o-i.rowIndent,n+s/2,o,n+s/2,i.lineThickness),r=Math.max(r,o+d),n+=s},"drawNode"),o=(0,d.K2)((t,n=0)=>{a(e,t,i,n),t.children.forEach(e=>{o(e,n+1)});const{x:r,y:s,height:d}=t.BBox;if(t.children.length){const{y:n,height:a}=t.children[t.children.length-1].BBox;K(e,r+i.paddingX,s+d,r+i.paddingX,n+a/2+i.lineThickness/2,i.lineThickness)}},"processNode");return o(t),{totalHeight:n,totalWidth:r}},"drawTree"),C={labelFontSize:"16px",labelColor:"black",lineColor:"black"},T={db:b,renderer:{draw:(0,d.K2)((e,t,i,r)=>{d.Rm.debug("Rendering treeView diagram\n"+e);const a=r.db,o=a.getRoot(),c=a.getConfig(),l=(0,n.D)(t),h=l.append("g");h.attr("class","tree-view");const{totalHeight:g,totalWidth:p}=B(h,o,c);l.attr("viewBox",`-${c.lineThickness/2} 0 ${p} ${g}`),(0,s.a$)(l,g,p,c.useMaxWidth)},"draw")},parser:x,styles:(0,d.K2)(({treeView:e})=>{const{labelFontSize:t,labelColor:i,lineColor:n}=(0,o.$t)(C,e);return`\n .treeView-node-label {\n font-size: ${t};\n fill: ${i};\n }\n .treeView-node-line {\n stroke: ${n};\n }\n `},"styles")}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/3436.9d21bd6b.js b/docs/build/assets/js/3436.9d21bd6b.js deleted file mode 100644 index b469ae100..000000000 --- a/docs/build/assets/js/3436.9d21bd6b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[3436],{3436(e,t,n){function o(e,{target:t=document.body}={}){if("string"!=typeof e)throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof e}\`.`);const n=document.createElement("textarea"),o=document.activeElement;n.value=e,n.setAttribute("readonly",""),n.style.all="unset",n.style.contain="strict",n.style.position="absolute",n.style.left="-9999px",n.style.width="2em",n.style.height="2em",n.style.padding="0",n.style.border="none",n.style.outline="none",n.style.boxShadow="none",n.style.background="transparent",n.style.fontSize="12pt",n.style.whiteSpace="pre";const a=document.getSelection(),l=a.rangeCount>0&&a.getRangeAt(0);t.append(n),n.select(),n.selectionStart=0,n.selectionEnd=e.length;let s=!1;try{s=document.execCommand("copy")}catch{}return n.remove(),l&&(a.removeAllRanges(),a.addRange(l)),o&&o.focus(),s}n.d(t,{default:()=>o})}}]); \ No newline at end of file diff --git a/docs/build/assets/js/3593.502efe50.js b/docs/build/assets/js/3593.502efe50.js deleted file mode 100644 index f5de9ee1c..000000000 --- a/docs/build/assets/js/3593.502efe50.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[3593],{3593(t,e,n){n.d(e,{diagram:()=>St});var s=n(8213),i=n(8515),r=n(3706),o=n(797),a=n(451),l=n(3219),c=n(5635);const h=(t,e)=>(0,c.A)(t,"a",-e);var u=n(8041),f=n(5263);const d=1e-10;function y(t,e){const n=function(t){const e=[];for(let n=0;n<t.length;++n)for(let s=n+1;s<t.length;++s){const i=m(t[n],t[s]);for(const t of i)t.parentIndex=[n,s],e.push(t)}return e}(t),s=n.filter(e=>function(t,e){return e.every(e=>x(t,e)<e.radius+d)}(e,t));let i=0,r=0;const o=[];if(s.length>1){const e=b(s);for(let t=0;t<s.length;++t){const n=s[t];n.angle=Math.atan2(n.x-e.x,n.y-e.y)}s.sort((t,e)=>e.angle-t.angle);let n=s[s.length-1];for(let a=0;a<s.length;++a){const e=s[a];r+=(n.x+e.x)*(e.y-n.y);const l={x:(e.x+n.x)/2,y:(e.y+n.y)/2};let c=null;for(let s=0;s<e.parentIndex.length;++s)if(n.parentIndex.includes(e.parentIndex[s])){const i=t[e.parentIndex[s]],r=Math.atan2(e.x-i.x,e.y-i.y),o=Math.atan2(n.x-i.x,n.y-i.y);let a=o-r;a<0&&(a+=2*Math.PI);const h=o-a/2;let u=x(l,{x:i.x+i.radius*Math.sin(h),y:i.y+i.radius*Math.cos(h)});u>2*i.radius&&(u=2*i.radius),(null==c||c.width>u)&&(c={circle:i,width:u,p1:e,p2:n,large:u>i.radius,sweep:!0})}null!=c&&(o.push(c),i+=g(c.circle.radius,c.width),n=e)}}else{let e=t[0];for(let s=1;s<t.length;++s)t[s].radius<e.radius&&(e=t[s]);let n=!1;for(let s=0;s<t.length;++s)if(x(t[s],e)>Math.abs(e.radius-t[s].radius)){n=!0;break}n?i=r=0:(i=e.radius*e.radius*Math.PI,o.push({circle:e,p1:{x:e.x,y:e.y+e.radius},p2:{x:e.x-d,y:e.y+e.radius},width:2*e.radius,large:!0,sweep:!0}))}return r/=2,e&&(e.area=i+r,e.arcArea=i,e.polygonArea=r,e.arcs=o,e.innerPoints=s,e.intersectionPoints=n),i+r}function g(t,e){return t*t*Math.acos(1-e/t)-(t-e)*Math.sqrt(e*(2*t-e))}function x(t,e){return Math.sqrt((t.x-e.x)*(t.x-e.x)+(t.y-e.y)*(t.y-e.y))}function p(t,e,n){if(n>=t+e)return 0;if(n<=Math.abs(t-e))return Math.PI*Math.min(t,e)*Math.min(t,e);const s=e-(n*n-t*t+e*e)/(2*n);return g(t,t-(n*n-e*e+t*t)/(2*n))+g(e,s)}function m(t,e){const n=x(t,e),s=t.radius,i=e.radius;if(n>=s+i||n<=Math.abs(s-i))return[];const r=(s*s-i*i+n*n)/(2*n),o=Math.sqrt(s*s-r*r),a=t.x+r*(e.x-t.x)/n,l=t.y+r*(e.y-t.y)/n,c=-(e.y-t.y)*(o/n),h=-(e.x-t.x)*(o/n);return[{x:a+c,y:l-h},{x:a-c,y:l+h}]}function b(t){const e={x:0,y:0};for(const n of t)e.x+=n.x,e.y+=n.y;return e.x/=t.length,e.y/=t.length,e}function v(t){const e=new Array(t);for(let n=0;n<t;++n)e[n]=0;return e}function I(t,e){return v(t).map(()=>v(e))}function M(t,e){let n=0;for(let s=0;s<t.length;++s)n+=t[s]*e[s];return n}function k(t){return Math.sqrt(M(t,t))}function w(t,e,n){for(let s=0;s<e.length;++s)t[s]=e[s]*n}function _(t,e,n,s,i){for(let r=0;r<t.length;++r)t[r]=e*n[r]+s*i[r]}function S(t,e,n){const s=(n=n||{}).maxIterations||200*e.length,i=n.nonZeroDelta||1.05,r=n.zeroDelta||.001,o=n.minErrorDelta||1e-6,a=n.minErrorDelta||1e-5,l=void 0!==n.rho?n.rho:1,c=void 0!==n.chi?n.chi:2,h=void 0!==n.psi?n.psi:-.5,u=void 0!==n.sigma?n.sigma:.5;let f;const d=e.length,y=new Array(d+1);y[0]=e,y[0].fx=t(e),y[0].id=0;for(let I=0;I<d;++I){const n=e.slice();n[I]=n[I]?n[I]*i:r,y[I+1]=n,y[I+1].fx=t(n),y[I+1].id=I+1}function g(t){for(let e=0;e<t.length;e++)y[d][e]=t[e];y[d].fx=t.fx}const x=(t,e)=>t.fx-e.fx,p=e.slice(),m=e.slice(),b=e.slice(),v=e.slice();for(let I=0;I<s;++I){if(y.sort(x),n.history){const t=y.map(t=>{const e=t.slice();return e.fx=t.fx,e.id=t.id,e});t.sort((t,e)=>t.id-e.id),n.history.push({x:y[0].slice(),fx:y[0].fx,simplex:t})}f=0;for(let t=0;t<d;++t)f=Math.max(f,Math.abs(y[0][t]-y[1][t]));if(Math.abs(y[0].fx-y[d].fx)<o&&f<a)break;for(let t=0;t<d;++t){p[t]=0;for(let e=0;e<d;++e)p[t]+=y[e][t];p[t]/=d}const e=y[d];if(_(m,1+l,p,-l,e),m.fx=t(m),m.fx<y[0].fx)_(v,1+c,p,-c,e),v.fx=t(v),v.fx<m.fx?g(v):g(m);else if(m.fx>=y[d-1].fx){let n=!1;if(m.fx>e.fx?(_(b,1+h,p,-h,e),b.fx=t(b),b.fx<e.fx?g(b):n=!0):(_(b,1-h*l,p,h*l,e),b.fx=t(b),b.fx<m.fx?g(b):n=!0),n){if(u>=1)break;for(let e=1;e<y.length;++e)_(y[e],1-u,y[0],u,y[e]),y[e].fx=t(y[e])}}else g(m)}return y.sort(x),{fx:y[0].fx,x:y[0]}}function E(t,e,n,s,i,r,o){const a=n.fx,l=M(n.fxprime,e);let c=a,h=a,u=l,f=0;function d(h,f,d){for(let y=0;y<16;++y)if(i=(h+f)/2,_(s.x,1,n.x,i,e),c=s.fx=t(s.x,s.fxprime),u=M(s.fxprime,e),c>a+r*i*l||c>=d)f=i;else{if(Math.abs(u)<=-o*l)return i;u*(f-h)>=0&&(f=h),h=i,d=c}return 0}i=i||1,r=r||1e-6,o=o||.1;for(let y=0;y<10;++y){if(_(s.x,1,n.x,i,e),c=s.fx=t(s.x,s.fxprime),u=M(s.fxprime,e),c>a+r*i*l||y&&c>=h)return d(f,i,h);if(Math.abs(u)<=-o*l)return i;if(u>=0)return d(i,f,c);h=c,f=i,i*=2}return i}function T(t,e,n){let s={x:e.slice(),fx:0,fxprime:e.slice()},i={x:e.slice(),fx:0,fxprime:e.slice()};const r=e.slice();let o,a,l,c=1;l=(n=n||{}).maxIterations||20*e.length,s.fx=t(s.x,s.fxprime),o=s.fxprime.slice(),w(o,s.fxprime,-1);for(let h=0;h<l;++h){if(c=E(t,o,s,i,c),n.history&&n.history.push({x:s.x.slice(),fx:s.fx,fxprime:s.fxprime.slice(),alpha:c}),c){_(r,1,i.fxprime,-1,s.fxprime);const t=M(s.fxprime,s.fxprime);_(o,Math.max(0,M(r,i.fxprime)/t),o,-1,i.fxprime),a=s,s=i,i=a}else w(o,s.fxprime,-1);if(k(s.fxprime)<=1e-5)break}return n.history&&n.history.push({x:s.x.slice(),fx:s.fx,fxprime:s.fxprime.slice(),alpha:c}),s}function z(t,e={}){e.maxIterations=e.maxIterations||500;const n=e.initialLayout||K,s=e.lossFunction||N,i=function(t,e={}){const n=e.distinct,s=t.map(t=>Object.assign({},t));function i(t){return t.join(";")}if(n){const t=new Map;for(const e of s)for(let n=0;n<e.sets.length;n++){const s=String(e.sets[n]);t.set(s,e.size+(t.get(s)||0));for(let i=n+1;i<e.sets.length;i++){const n=String(e.sets[i]),r=`${s};${n}`,o=`${n};${s}`;t.set(r,e.size+(t.get(r)||0)),t.set(o,e.size+(t.get(o)||0))}}for(const e of s)e.sets.length<3&&(e.size=t.get(i(e.sets)))}const r=[],o=new Set;for(const a of s)if(1===a.sets.length)r.push(a.sets[0]);else if(2===a.sets.length){const t=a.sets[0],e=a.sets[1];o.add(i(a.sets)),o.add(i([e,t]))}r.sort((t,e)=>t===e?0:t<e?-1:1);for(let a=0;a<r.length;++a){const t=r[a];for(let e=a+1;e<r.length;++e){const n=r[e];o.has(i([t,n]))||s.push({sets:[t,n],size:0})}}return s}(t,e),r=n(i,e),o=Object.keys(r),a=[];for(const c of o)a.push(r[c].x),a.push(r[c].y);const l=S(t=>{const e={};for(let n=0;n<o.length;++n){const s=o[n];e[s]={x:t[2*n],y:t[2*n+1],radius:r[s].radius}}return s(e,i)},a,e).x;for(let c=0;c<o.length;++c){const t=o[c];r[t].x=l[2*c],r[t].y=l[2*c+1]}return r}const A=1e-10;function R(t,e,n){return Math.min(t,e)*Math.min(t,e)*Math.PI<=n+1e-10?Math.abs(t-e):function(t,e,n,s){const i=(s=s||{}).maxIterations||100,r=s.tolerance||1e-10,o=t(e),a=t(n);let l=n-e;if(o*a>0)throw"Initial bisect points must have opposite signs";if(0===o)return e;if(0===a)return n;for(let c=0;c<i;++c){l/=2;const n=e+l,s=t(n);if(s*o>=0&&(e=n),Math.abs(l)<r||0===s)return n}return e+l}(s=>p(t,e,s)-n,0,t+e)}function K(t,e={}){let n=function(t,e){const n=e&&e.lossFunction?e.lossFunction:N,s={},i={};for(const u of t)if(1===u.sets.length){const t=u.sets[0];s[t]={x:1e10,y:1e10,rowid:s.length,size:u.size,radius:Math.sqrt(u.size/Math.PI)},i[t]=[]}t=t.filter(t=>2===t.sets.length);for(const u of t){let t=null!=u.weight?u.weight:1;const e=u.sets[0],n=u.sets[1];u.size+A>=Math.min(s[e].size,s[n].size)&&(t=0),i[e].push({set:n,size:u.size,weight:t}),i[n].push({set:e,size:u.size,weight:t})}const r=[];function o(t,e){return e.size-t.size}Object.keys(i).forEach(t=>{let e=0;for(let n=0;n<i[t].length;++n)e+=i[t][n].size*i[t][n].weight;r.push({set:t,size:e})}),r.sort(o);const a={};function l(t){return t.set in a}function c(t,e){s[e].x=t.x,s[e].y=t.y,a[e]=!0}c({x:0,y:0},r[0].set);for(let u=1;u<r.length;++u){const e=r[u].set,a=i[e].filter(l),f=s[e];if(a.sort(o),0===a.length)throw"ERROR: missing pairwise overlap information";const d=[];for(var h=0;h<a.length;++h){const t=s[a[h].set],e=R(f.radius,t.radius,a[h].size);d.push({x:t.x+e,y:t.y}),d.push({x:t.x-e,y:t.y}),d.push({y:t.y+e,x:t.x}),d.push({y:t.y-e,x:t.x});for(let n=h+1;n<a.length;++n){const i=s[a[n].set],r=R(f.radius,i.radius,a[n].size),o=m({x:t.x,y:t.y,radius:e},{x:i.x,y:i.y,radius:r});d.push(...o)}}let y=1e50,g=d[0];for(const i of d){s[e].x=i.x,s[e].y=i.y;const r=n(s,t);r<y&&(y=r,g=i)}c(g,e)}return s}(t,e);const s=e.lossFunction||N;if(t.length>=8){const i=function(t,e={}){const n=e.restarts||10,s=[],i={};for(const f of t)1===f.sets.length&&(i[f.sets[0]]=s.length,s.push(f));let{distances:r,constraints:o}=function(t,e,n){const s=I(e.length,e.length),i=I(e.length,e.length);return t.filter(t=>2===t.sets.length).forEach(t=>{const r=n[t.sets[0]],o=n[t.sets[1]],a=R(Math.sqrt(e[r].size/Math.PI),Math.sqrt(e[o].size/Math.PI),t.size);s[r][o]=s[o][r]=a;let l=0;t.size+1e-10>=Math.min(e[r].size,e[o].size)?l=1:t.size<=1e-10&&(l=-1),i[r][o]=i[o][r]=l}),{distances:s,constraints:i}}(t,s,i);const a=k(r.map(k))/r.length;r=r.map(t=>t.map(t=>t/a));const l=(t,e)=>function(t,e,n,s){for(let r=0;r<e.length;++r)e[r]=0;let i=0;for(let r=0;r<n.length;++r){const o=t[2*r],a=t[2*r+1];for(let l=r+1;l<n.length;++l){const c=t[2*l],h=t[2*l+1],u=n[r][l],f=s[r][l],d=(c-o)*(c-o)+(h-a)*(h-a),y=Math.sqrt(d),g=d-u*u;f>0&&y<=u||f<0&&y>=u||(i+=2*g*g,e[2*r]+=4*g*(o-c),e[2*r+1]+=4*g*(a-h),e[2*l]+=4*g*(c-o),e[2*l+1]+=4*g*(h-a))}}return i}(t,e,r,o);let c=null;for(let f=0;f<n;++f){const t=T(l,v(2*r.length).map(Math.random),e);(!c||t.fx<c.fx)&&(c=t)}const h=c.x,u={};for(let f=0;f<s.length;++f){const t=s[f];u[t.sets[0]]={x:h[2*f]*a,y:h[2*f+1]*a,radius:Math.sqrt(t.size/Math.PI)}}if(e.history)for(const f of e.history)w(f.x,a);return u}(t,e);s(i,t)+1e-8<s(n,t)&&(n=i)}return n}function N(t,e){let n=0;for(const s of e){if(1===s.sets.length)continue;let e;if(2===s.sets.length){const n=t[s.sets[0]],i=t[s.sets[1]];e=p(n.radius,i.radius,x(n,i))}else e=y(s.sets.map(e=>t[e]));n+=(null!=s.weight?s.weight:1)*(e-s.size)*(e-s.size)}return n}function D(t,e){let n=0;for(const s of e){if(1===s.sets.length)continue;let e;if(2===s.sets.length){const n=t[s.sets[0]],i=t[s.sets[1]];e=p(n.radius,i.radius,x(n,i))}else e=y(s.sets.map(e=>t[e]));const i=null!=s.weight?s.weight:1,r=Math.log((e+1)/(s.size+1));n+=i*r*r}return n}function O(t,e,n){if(null==n?t.sort((t,e)=>e.radius-t.radius):t.sort(n),t.length>0){const e=t[0].x,n=t[0].y;for(const s of t)s.x-=e,s.y-=n}if(2===t.length){x(t[0],t[1])<Math.abs(t[1].radius-t[0].radius)&&(t[1].x=t[0].x+t[0].radius-t[1].radius-1e-10,t[1].y=t[0].y)}if(t.length>1){const n=Math.atan2(t[1].x,t[1].y)-e,s=Math.cos(n),i=Math.sin(n);for(const e of t){const t=e.x,n=e.y;e.x=s*t-i*n,e.y=i*t+s*n}}if(t.length>2){let n=Math.atan2(t[2].x,t[2].y)-e;for(;n<0;)n+=2*Math.PI;for(;n>2*Math.PI;)n-=2*Math.PI;if(n>Math.PI){const e=t[1].y/(1e-10+t[1].x);for(const n of t){var s=(n.x+e*n.y)/(1+e*e);n.x=2*s-n.x,n.y=2*s*e-n.y}}}}function C(t){const e=e=>({max:t.reduce((t,n)=>Math.max(t,n[e]+n.radius),Number.NEGATIVE_INFINITY),min:t.reduce((t,n)=>Math.min(t,n[e]-n.radius),Number.POSITIVE_INFINITY)});return{xRange:e("x"),yRange:e("y")}}function F(t,e,n){null==e&&(e=Math.PI/2);let s=j(t).map(t=>Object.assign({},t));const i=function(t){function e(t){return t.parent!==t&&(t.parent=e(t.parent)),t.parent}function n(t,n){const s=e(t),i=e(n);s.parent=i}t.forEach(t=>{t.parent=t});for(let i=0;i<t.length;++i)for(let e=i+1;e<t.length;++e){const s=t[i].radius+t[e].radius;x(t[i],t[e])+1e-10<s&&n(t[e],t[i])}const s=new Map;for(let i=0;i<t.length;++i){const n=e(t[i]).parent.setid;s.has(n)||s.set(n,[]),s.get(n).push(t[i])}return t.forEach(t=>{delete t.parent}),Array.from(s.values())}(s);for(const c of i){O(c,e,n);const t=C(c);c.size=(t.xRange.max-t.xRange.min)*(t.yRange.max-t.yRange.min),c.bounds=t}i.sort((t,e)=>e.size-t.size),s=i[0];let r=s.bounds;const o=(r.xRange.max-r.xRange.min)/50;function a(t,e,n){if(!t)return;const i=t.bounds;let a,l;if(e)a=r.xRange.max-i.xRange.min+o;else{a=r.xRange.max-i.xRange.max;const t=(i.xRange.max-i.xRange.min)/2-(r.xRange.max-r.xRange.min)/2;t<0&&(a+=t)}if(n)l=r.yRange.max-i.yRange.min+o;else{l=r.yRange.max-i.yRange.max;const t=(i.yRange.max-i.yRange.min)/2-(r.yRange.max-r.yRange.min)/2;t<0&&(l+=t)}for(const r of t)r.x+=a,r.y+=l,s.push(r)}let l=1;for(;l<i.length;)a(i[l],!0,!1),a(i[l+1],!1,!0),a(i[l+2],!0,!0),l+=3,r=C(s);return L(s)}function $(t,e,n,s,i){const r=j(t);e-=2*s,n-=2*s;const{xRange:o,yRange:a}=C(r);if(o.max===o.min||a.max===a.min)return console.log("not scaling solution: zero size detected"),t;let l,c;if(i){const t=2*Math.sqrt(i/Math.PI);l=e/t,c=n/t}else l=e/(o.max-o.min),c=n/(a.max-a.min);const h=Math.min(c,l),u=(e-(o.max-o.min)*h)/2,f=(n-(a.max-a.min)*h)/2;return L(r.map(t=>({radius:h*t.radius,x:s+u+(t.x-o.min)*h,y:s+f+(t.y-a.min)*h,setid:t.setid})))}function L(t){const e={};for(const n of t)e[n.setid]=n;return e}function j(t){return Object.keys(t).map(e=>Object.assign(t[e],{setid:e}))}function P(t={}){let e=!1,n=600,s=350,i=15,r=1e3,o=Math.PI/2,a=!0,l=null,c=!0,h=!0,u=null,f=null,d=!1,y=null,g=!(!t||!t.symmetricalTextCentre)&&t.symmetricalTextCentre,x={},p=t&&t.colourScheme?t.colourScheme:t&&t.colorScheme?t.colorScheme:["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],m=0,b=function(t){if(t in x)return x[t];var e=x[t]=p[m];return m+=1,m>=p.length&&(m=0),e},v=z,I=N;function M(x){let p=x.datum();const m=new Set;p.forEach(t=>{0==t.size&&1==t.sets.length&&m.add(t.sets[0])}),p=p.filter(t=>!t.sets.some(t=>m.has(t)));let M={},k={};if(p.length>0){let t=v(p,{lossFunction:I,distinct:d});a&&(t=F(t,o,f)),M=$(t,n,s,i,l),k=V(M,p,g)}const w={};function _(t){return t.sets in w?w[t.sets]:1==t.sets.length?""+t.sets[0]:void 0}p.forEach(t=>{t.label&&(w[t.sets]=t.label)}),x.selectAll("svg").data([M]).enter().append("svg");const S=x.select("svg");e?S.attr("viewBox",`0 0 ${n} ${s}`):S.attr("width",n).attr("height",s);const E={};let T=!1;function z(t){return e=>Y(t.sets.map(t=>{let i=E[t],r=M[t];return i||(i={x:n/2,y:s/2,radius:1}),r||(r={x:n/2,y:s/2,radius:1}),{x:i.x*(1-e)+r.x*e,y:i.y*(1-e)+r.y*e,radius:i.radius*(1-e)+r.radius*e}}),y)}S.selectAll(".venn-area path").each(function(t){const e=this.getAttribute("d");1==t.sets.length&&e&&!d&&(T=!0,E[t.sets[0]]=function(t){const e=t.split(" ");return{x:Number.parseFloat(e[1]),y:Number.parseFloat(e[2]),radius:-Number.parseFloat(e[4])}}(e))});const A=S.selectAll(".venn-area").data(p,t=>t.sets),R=A.enter().append("g").attr("class",t=>`venn-area venn-${1==t.sets.length?"circle":"intersection"}${t.colour||t.color?" venn-coloured":""}`).attr("data-venn-sets",t=>t.sets.join("_")),K=R.append("path"),N=R.append("text").attr("class","label").text(t=>_(t)).attr("text-anchor","middle").attr("dy",".35em").attr("x",n/2).attr("y",s/2);function D(t){return"function"==typeof t.transition?t.transition("venn").duration(r):t}h&&(K.style("fill-opacity","0").filter(t=>1==t.sets.length).style("fill",t=>t.colour?t.colour:t.color?t.color:b(t.sets)).style("fill-opacity",".25"),N.style("fill",e=>e.colour||e.color?"#FFF":t.textFill?t.textFill:1==e.sets.length?b(e.sets):"#444"));let O=x;T&&"function"==typeof O.transition?(O=D(x),O.selectAll("path").attrTween("d",z)):O.selectAll("path").attr("d",t=>Y(t.sets.map(t=>M[t])),y);const C=O.selectAll("text").filter(t=>t.sets in k).text(t=>_(t)).attr("x",t=>Math.floor(k[t.sets].x)).attr("y",t=>Math.floor(k[t.sets].y));c&&(T?"on"in C?C.on("end",U(M,_)):C.each("end",U(M,_)):C.each(U(M,_)));const L=D(A.exit()).remove();"function"==typeof A.transition&&L.selectAll("path").attrTween("d",z);const j=L.selectAll("text").attr("x",n/2).attr("y",s/2);return null!==u&&(N.style("font-size","0px"),C.style("font-size",u),j.style("font-size","0px")),{circles:M,textCentres:k,nodes:A,enter:R,update:O,exit:L}}return M.wrap=function(t){return arguments.length?(c=t,M):c},M.useViewBox=function(){return e=!0,M},M.width=function(t){return arguments.length?(n=t,M):n},M.height=function(t){return arguments.length?(s=t,M):s},M.padding=function(t){return arguments.length?(i=t,M):i},M.distinct=function(t){return arguments.length?(d=t,M):d},M.colours=function(t){return arguments.length?(b=t,M):b},M.colors=function(t){return arguments.length?(b=t,M):b},M.fontSize=function(t){return arguments.length?(u=t,M):u},M.round=function(t){return arguments.length?(y=t,M):y},M.duration=function(t){return arguments.length?(r=t,M):r},M.layoutFunction=function(t){return arguments.length?(v=t,M):v},M.normalize=function(t){return arguments.length?(a=t,M):a},M.scaleToFit=function(t){return arguments.length?(l=t,M):l},M.styled=function(t){return arguments.length?(h=t,M):h},M.orientation=function(t){return arguments.length?(o=t,M):o},M.orientationOrder=function(t){return arguments.length?(f=t,M):f},M.lossFunction=function(t){return arguments.length?(I="default"===t?N:"logRatio"===t?D:t,M):I},M}function U(t,e){return function(n){const s=this,i=t[n.sets[0]].radius||50,r=e(n)||"",o=r.split(/\s+/).reverse(),a=(r.length+o.length)/3;let l=o.pop(),c=[l],h=0;s.textContent=null;const u=[];function f(t){const e=s.ownerDocument.createElementNS(s.namespaceURI,"tspan");return e.textContent=t,u.push(e),s.append(e),e}let d=f(l);for(;l=o.pop(),l;){c.push(l);const t=c.join(" ");d.textContent=t,t.length>a&&d.getComputedTextLength()>i&&(c.pop(),d.textContent=c.join(" "),c=[l],d=f(l),h++)}const y=.35-1.1*h/2,g=s.getAttribute("x"),x=s.getAttribute("y");u.forEach((t,e)=>{t.setAttribute("x",g),t.setAttribute("y",x),t.setAttribute("dy",`${y+1.1*e}em`)})}}function q(t,e,n){let s=e[0].radius-x(e[0],t);for(let i=1;i<e.length;++i){const n=e[i].radius-x(e[i],t);n<=s&&(s=n)}for(let i=0;i<n.length;++i){const e=x(n[i],t)-n[i].radius;e<=s&&(s=e)}return s}function B(t,e,n){const s=[];for(const h of t)s.push({x:h.x,y:h.y}),s.push({x:h.x+h.radius/2,y:h.y}),s.push({x:h.x-h.radius/2,y:h.y}),s.push({x:h.x,y:h.y+h.radius/2}),s.push({x:h.x,y:h.y-h.radius/2});let i=s[0],r=q(s[0],t,e);for(let h=1;h<s.length;++h){const n=q(s[h],t,e);n>=r&&(i=s[h],r=n)}const o=S(n=>-1*q({x:n[0],y:n[1]},t,e),[i.x,i.y],{maxIterations:500,minErrorDelta:1e-10}).x,a={x:n?0:o[0],y:o[1]};let l=!0;for(const h of t)if(x(a,h)>h.radius){l=!1;break}for(const h of e)if(x(a,h)<h.radius){l=!1;break}if(l)return a;if(1==t.length)return{x:t[0].x,y:t[0].y};const c={};return y(t,c),0===c.arcs.length?{x:0,y:-1e3,disjoint:!0}:1==c.arcs.length?{x:c.arcs[0].circle.x,y:c.arcs[0].circle.y}:e.length?B(t,[]):b(c.arcs.map(t=>t.p1))}function G(t){const e={},n=Object.keys(t);for(const s of n)e[s]=[];for(let s=0;s<n.length;s++){const i=n[s],r=t[i];for(let o=s+1;o<n.length;++o){const s=n[o],a=t[s],l=x(r,a);l+a.radius<=r.radius+1e-10?e[s].push(i):l+r.radius<=a.radius+1e-10&&e[i].push(s)}}return e}function V(t,e,n){const s={},i=G(t);for(let r=0;r<e.length;++r){const o=e[r].sets,a={},l={};for(let t=0;t<o.length;++t){a[o[t]]=!0;const e=i[o[t]];for(let t=0;t<e.length;++t)l[e[t]]=!0}const c=[],h=[];for(let e in t)e in a?c.push(t[e]):e in l||h.push(t[e]);const u=B(c,h,n);s[o]=u,u.disjoint&&e[r].size>0&&console.log("WARNING: area "+o+" not represented on screen")}return s}function W(t){if(0===t.length)return[];const e={};return y(t,e),e.arcs}function X(t,e){if(0===t.length)return"M 0 0";const n=Math.pow(10,e||0),s=null!=e?t=>Math.round(t*n)/n:t=>t;if(1==t.length){const e=t[0].circle;return function(t,e,n){const s=[];return s.push("\nM",t,e),s.push("\nm",-n,0),s.push("\na",n,n,0,1,0,2*n,0),s.push("\na",n,n,0,1,0,2*-n,0),s.join(" ")}(s(e.x),s(e.y),s(e.radius))}const i=["\nM",s(t[0].p2.x),s(t[0].p2.y)];for(const r of t){const t=s(r.circle.radius);i.push("\nA",t,t,0,r.large?1:0,r.sweep?1:0,s(r.p1.x),s(r.p1.y))}return i.join(" ")}function Y(t,e){return X(W(t),e)}var Z=n(2274),H=function(){var t=(0,o.K2)(function(t,e,n,s){for(n=n||{},s=t.length;s--;n[t[s]]=e);return n},"o"),e=[5,8],n=[7,8,11,12,17,19,22,24],s=[1,17],i=[1,18],r=[7,8,11,12,14,15,16,17,19,20,21,22,24,27],a=[1,31],l=[1,39],c=[7,8,11,12,17,19,22,24,27],h=[1,57],u=[1,56],f=[1,58],d=[1,59],y=[1,60],g=[7,8,11,12,16,17,19,20,22,24,27,31,32,33],x={trace:(0,o.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,optNewlines:4,VENN:5,document:6,EOF:7,NEWLINE:8,line:9,statement:10,TITLE:11,SET:12,identifier:13,BRACKET_LABEL:14,COLON:15,NUMERIC:16,UNION:17,identifierList:18,TEXT:19,IDENTIFIER:20,STRING:21,INDENT_TEXT:22,indentedTextTail:23,STYLE:24,stylesOpt:25,styleField:26,COMMA:27,styleValue:28,valueTokens:29,valueToken:30,HEXCOLOR:31,RGBCOLOR:32,RGBACOLOR:33,$accept:0,$end:1},terminals_:{2:"error",5:"VENN",7:"EOF",8:"NEWLINE",11:"TITLE",12:"SET",14:"BRACKET_LABEL",15:"COLON",16:"NUMERIC",17:"UNION",19:"TEXT",20:"IDENTIFIER",21:"STRING",22:"INDENT_TEXT",24:"STYLE",27:"COMMA",31:"HEXCOLOR",32:"RGBCOLOR",33:"RGBACOLOR"},productions_:[0,[3,4],[4,0],[4,2],[6,0],[6,2],[9,1],[9,1],[10,1],[10,2],[10,3],[10,4],[10,5],[10,2],[10,3],[10,4],[10,5],[10,3],[10,3],[10,3],[10,4],[10,4],[10,2],[10,3],[23,1],[23,1],[23,1],[23,2],[23,2],[25,1],[25,3],[26,3],[28,1],[28,1],[29,1],[29,2],[30,1],[30,1],[30,1],[30,1],[30,1],[18,1],[18,3],[13,1],[13,1]],performAction:(0,o.K2)(function(t,e,n,s,i,r,o){var a=r.length-1;switch(i){case 1:return r[a-1];case 2:case 3:case 4:case 6:this.$=[];break;case 5:case 35:r[a-1].push(r[a]),this.$=r[a-1];break;case 7:case 22:case 32:case 36:case 37:case 38:case 39:case 40:case 43:case 44:this.$=r[a];break;case 8:s.setDiagramTitle(r[a].substr(6)),this.$=r[a].substr(6);break;case 9:s.addSubsetData([r[a]],void 0,void 0),s.setIndentMode&&s.setIndentMode(!0);break;case 10:s.addSubsetData([r[a-1]],r[a],void 0),s.setIndentMode&&s.setIndentMode(!0);break;case 11:s.addSubsetData([r[a-2]],void 0,parseFloat(r[a])),s.setIndentMode&&s.setIndentMode(!0);break;case 12:s.addSubsetData([r[a-3]],r[a-2],parseFloat(r[a])),s.setIndentMode&&s.setIndentMode(!0);break;case 13:if(r[a].length<2)throw new Error("union requires multiple identifiers");s.validateUnionIdentifiers&&s.validateUnionIdentifiers(r[a]),s.addSubsetData(r[a],void 0,void 0),s.setIndentMode&&s.setIndentMode(!0);break;case 14:if(r[a-1].length<2)throw new Error("union requires multiple identifiers");s.validateUnionIdentifiers&&s.validateUnionIdentifiers(r[a-1]),s.addSubsetData(r[a-1],r[a],void 0),s.setIndentMode&&s.setIndentMode(!0);break;case 15:if(r[a-2].length<2)throw new Error("union requires multiple identifiers");s.validateUnionIdentifiers&&s.validateUnionIdentifiers(r[a-2]),s.addSubsetData(r[a-2],void 0,parseFloat(r[a])),s.setIndentMode&&s.setIndentMode(!0);break;case 16:if(r[a-3].length<2)throw new Error("union requires multiple identifiers");s.validateUnionIdentifiers&&s.validateUnionIdentifiers(r[a-3]),s.addSubsetData(r[a-3],r[a-2],parseFloat(r[a])),s.setIndentMode&&s.setIndentMode(!0);break;case 17:case 18:case 19:s.addTextData(r[a-1],r[a],void 0);break;case 20:case 21:s.addTextData(r[a-2],r[a-1],r[a]);break;case 23:s.addStyleData(r[a-1],r[a]);break;case 24:case 25:case 26:if(!(l=s.getCurrentSets()))throw new Error("text requires set");s.addTextData(l,r[a],void 0);break;case 27:case 28:var l;if(!(l=s.getCurrentSets()))throw new Error("text requires set");s.addTextData(l,r[a-1],r[a]);break;case 29:case 41:case 34:this.$=[r[a]];break;case 30:case 42:this.$=[...r[a-2],r[a]];break;case 31:this.$=[r[a-2],r[a]];break;case 33:this.$=r[a].join(" ")}},"anonymous"),table:[t(e,[2,2],{3:1,4:2}),{1:[3]},{5:[1,3],8:[1,4]},t(n,[2,4],{6:5}),t(e,[2,3]),{7:[1,6],8:[1,8],9:7,10:9,11:[1,10],12:[1,11],17:[1,12],19:[1,13],22:[1,14],24:[1,15]},{1:[2,1]},t(n,[2,5]),t(n,[2,6]),t(n,[2,7]),t(n,[2,8]),{13:16,20:s,21:i},{13:20,18:19,20:s,21:i},{13:20,18:21,20:s,21:i},{16:[1,25],20:[1,23],21:[1,24],23:22},{13:20,18:26,20:s,21:i},t(n,[2,9],{14:[1,27],15:[1,28]}),t(r,[2,43]),t(r,[2,44]),t(n,[2,13],{14:[1,29],15:[1,30],27:a}),t(r,[2,41]),{16:[1,34],20:[1,32],21:[1,33],27:a},t(n,[2,22]),t(n,[2,24],{14:[1,35]}),t(n,[2,25],{14:[1,36]}),t(n,[2,26]),{20:l,25:37,26:38,27:a},t(n,[2,10],{15:[1,40]}),{16:[1,41]},t(n,[2,14],{15:[1,42]}),{16:[1,43]},{13:44,20:s,21:i},t(n,[2,17],{14:[1,45]}),t(n,[2,18],{14:[1,46]}),t(n,[2,19]),t(n,[2,27]),t(n,[2,28]),t(n,[2,23],{27:[1,47]}),t(c,[2,29]),{15:[1,48]},{16:[1,49]},t(n,[2,11]),{16:[1,50]},t(n,[2,15]),t(r,[2,42]),t(n,[2,20]),t(n,[2,21]),{20:l,26:51},{16:h,20:u,21:[1,53],28:52,29:54,30:55,31:f,32:d,33:y},t(n,[2,12]),t(n,[2,16]),t(c,[2,30]),t(c,[2,31]),t(c,[2,32]),t(c,[2,33],{30:61,16:h,20:u,31:f,32:d,33:y}),t(g,[2,34]),t(g,[2,36]),t(g,[2,37]),t(g,[2,38]),t(g,[2,39]),t(g,[2,40]),t(g,[2,35])],defaultActions:{6:[2,1]},parseError:(0,o.K2)(function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},"parseError"),parse:(0,o.K2)(function(t){var e=this,n=[0],s=[],i=[null],r=[],a=this.table,l="",c=0,h=0,u=0,f=r.slice.call(arguments,1),d=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);d.setInput(t,y.yy),y.yy.lexer=d,y.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var x=d.yylloc;r.push(x);var p=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=s.pop()||d.lex()||1)&&(t instanceof Array&&(t=(s=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,o.K2)(function(t){n.length=n.length-2*t,i.length=i.length-t,r.length=r.length-t},"popStack"),(0,o.K2)(m,"lex");for(var b,v,I,M,k,w,_,S,E,T={};;){if(I=n[n.length-1],this.defaultActions[I]?M=this.defaultActions[I]:(null==b&&(b=m()),M=a[I]&&a[I][b]),void 0===M||!M.length||!M[0]){var z="";for(w in E=[],a[I])this.terminals_[w]&&w>2&&E.push("'"+this.terminals_[w]+"'");z=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+E.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==b?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(z,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:x,expected:E})}if(M[0]instanceof Array&&M.length>1)throw new Error("Parse Error: multiple actions possible at state: "+I+", token: "+b);switch(M[0]){case 1:n.push(b),i.push(d.yytext),r.push(d.yylloc),n.push(M[1]),b=null,v?(b=v,v=null):(h=d.yyleng,l=d.yytext,c=d.yylineno,x=d.yylloc,u>0&&u--);break;case 2:if(_=this.productions_[M[1]][1],T.$=i[i.length-_],T._$={first_line:r[r.length-(_||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(_||1)].first_column,last_column:r[r.length-1].last_column},p&&(T._$.range=[r[r.length-(_||1)].range[0],r[r.length-1].range[1]]),void 0!==(k=this.performAction.apply(T,[l,h,c,y.yy,M[1],i,r].concat(f))))return k;_&&(n=n.slice(0,-1*_*2),i=i.slice(0,-1*_),r=r.slice(0,-1*_)),n.push(this.productions_[M[1]][0]),i.push(T.$),r.push(T._$),S=a[n[n.length-2]][n[n.length-1]],n.push(S);break;case 3:return!0}}return!0},"parse")},p=function(){return{EOF:1,parseError:(0,o.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,o.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,o.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,o.K2)(function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var s=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===s.length?this.yylloc.first_column:0)+s[s.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,o.K2)(function(){return this._more=!0,this},"more"),reject:(0,o.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,o.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,o.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,o.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,o.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,o.K2)(function(t,e){var n,s,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(s=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=s.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:s?s[s.length-1].length-s[s.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var r in i)this[r]=i[r];return!1}return!1},"test_match"),next:(0,o.K2)(function(){if(this.done)return this.EOF;var t,e,n,s;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),r=0;r<i.length;r++)if((n=this._input.match(this.rules[i[r]]))&&(!e||n[0].length>e[0].length)){if(e=n,s=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[s]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,o.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,o.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,o.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,o.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,o.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,o.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,o.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,o.K2)(function(t,e,n,s){switch(n){case 0:case 1:case 2:case 4:case 7:case 8:break;case 3:if(t.getIndentMode&&t.getIndentMode())return t.consumeIndentText=!0,this.begin("INITIAL"),22;break;case 5:t.setIndentMode&&t.setIndentMode(!1),this.begin("INITIAL"),this.unput(e.yytext);break;case 6:return this.begin("bol"),8;case 9:return 7;case 10:return 11;case 11:return 5;case 12:return 12;case 13:return 17;case 14:if(!t.consumeIndentText)return 19;t.consumeIndentText=!1;break;case 15:return 24;case 16:return e.yytext=e.yytext.slice(2,-2),14;case 17:return e.yytext=e.yytext.slice(1,-1).trim(),14;case 18:return 16;case 19:return 31;case 20:return 33;case 21:return 32;case 22:return 20;case 23:return 21;case 24:return 27;case 25:return 15}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[ \t]+(?=[\n\r]))/i,/^(?:[ \t]+(?=text\b))/i,/^(?:[ \t]+)/i,/^(?:[^ \t\n\r])/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[ \t]+)/i,/^(?:$)/i,/^(?:title\s[^#\n;]+)/i,/^(?:venn-beta\b)/i,/^(?:set\b)/i,/^(?:union\b)/i,/^(?:text\b)/i,/^(?:style\b)/i,/^(?:\["[^\"]*"\])/i,/^(?:\[[^\]\"]+\])/i,/^(?:[+-]?(\d+(\.\d+)?|\.\d+))/i,/^(?:#[0-9a-fA-F]{3,8})/i,/^(?:rgba\(\s*[0-9.]+\s*[,]\s*[0-9.]+\s*[,]\s*[0-9.]+\s*[,]\s*[0-9.]+\s*\))/i,/^(?:rgb\(\s*[0-9.]+\s*[,]\s*[0-9.]+\s*[,]\s*[0-9.]+\s*\))/i,/^(?:[A-Za-z_][A-Za-z0-9\-_]*)/i,/^(?:"[^\"]*")/i,/^(?:,)/i,/^(?::)/i],conditions:{bol:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25],inclusive:!0},INITIAL:{rules:[0,1,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25],inclusive:!0}}}}();function m(){this.yy={}}return x.lexer=p,(0,o.K2)(m,"Parser"),m.prototype=x,x.Parser=m,new m}();H.parser=H;var J,Q=H,tt=[],et=[],nt=[],st=new Set,it=!1,rt=(0,o.K2)((t,e,n)=>{const s=ft(t).sort(),i=n??10/Math.pow(t.length,2);J=s,1===s.length&&st.add(s[0]),tt.push({sets:s,size:i,label:e?at(e):void 0})},"addSubsetData"),ot=(0,o.K2)(()=>tt,"getSubsetData"),at=(0,o.K2)(t=>{const e=t.trim();return e.length>=2&&e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e},"normalizeText"),lt=(0,o.K2)(t=>t?at(t):t,"normalizeStyleValue"),ct=(0,o.K2)((t,e,n)=>{const s=at(e);et.push({sets:ft(t).sort(),id:s,label:n?at(n):void 0})},"addTextData"),ht=(0,o.K2)((t,e)=>{const n=ft(t).sort(),s={};for(const[i,r]of e)s[i]=lt(r)??r;nt.push({targets:n,styles:s})},"addStyleData"),ut=(0,o.K2)(()=>nt,"getStyleData"),ft=(0,o.K2)(t=>t.map(t=>at(t)),"normalizeIdentifierList"),dt=(0,o.K2)(t=>{const e=ft(t).filter(t=>!st.has(t));if(e.length>0)throw new Error(`unknown set identifier: ${e.join(", ")}`)},"validateUnionIdentifiers"),yt=(0,o.K2)(()=>et,"getTextData"),gt=(0,o.K2)(()=>J,"getCurrentSets"),xt=(0,o.K2)(()=>it,"getIndentMode"),pt=(0,o.K2)(t=>{it=t},"setIndentMode"),mt=r.UI.venn;function bt(){return(0,i.$t)(mt,(0,r.zj)().venn)}(0,o.K2)(bt,"getConfig");var vt={getConfig:bt,clear:(0,o.K2)(()=>{(0,r.IU)(),tt.length=0,et.length=0,nt.length=0,st.clear(),J=void 0,it=!1},"customClear"),setAccTitle:r.SV,getAccTitle:r.iN,setDiagramTitle:r.ke,getDiagramTitle:r.ab,getAccDescription:r.m7,setAccDescription:r.EI,addSubsetData:rt,getSubsetData:ot,addTextData:ct,addStyleData:ht,validateUnionIdentifiers:dt,getTextData:yt,getStyleData:ut,getCurrentSets:gt,getIndentMode:xt,setIndentMode:pt},It=(0,o.K2)(t=>`\n .venn-title {\n font-size: 32px;\n fill: ${t.vennTitleTextColor};\n font-family: ${t.fontFamily};\n }\n\n .venn-circle text {\n font-size: 48px;\n font-family: ${t.fontFamily};\n }\n\n .venn-intersection text {\n font-size: 48px;\n fill: ${t.vennSetTextColor};\n font-family: ${t.fontFamily};\n }\n\n .venn-text-node {\n font-family: ${t.fontFamily};\n color: ${t.vennSetTextColor};\n }\n`,"getStyles");function Mt(t){const e=new Map;for(const n of t){const t=n.targets.join("|"),s=e.get(t);s?Object.assign(s,n.styles):e.set(t,{...n.styles})}return e}(0,o.K2)(Mt,"buildStyleByKey");var kt=(0,o.K2)((t,e,n,i)=>{const o=i.db,c=o.getConfig?.(),{themeVariables:d,look:y,handDrawnSeed:g}=(0,r.zj)(),x="handDrawn"===y,p=[d.venn1,d.venn2,d.venn3,d.venn4,d.venn5,d.venn6,d.venn7,d.venn8].filter(Boolean),m=o.getDiagramTitle?.(),b=o.getSubsetData(),v=o.getTextData(),I=Mt(o.getStyleData()),M=c?.width??800,k=c?.height??450,w=M/1600,_=m?48*w:0,S=d.primaryTextColor??d.textColor,E=(0,s.D)(e);E.attr("viewBox",`0 0 ${M} ${k}`),m&&E.append("text").text(m).attr("class","venn-title").attr("font-size",32*w+"px").attr("text-anchor","middle").attr("dominant-baseline","middle").attr("x","50%").attr("y",32*w).style("fill",d.vennTitleTextColor||d.titleColor);const T=(0,a.Ltv)(document.createElement("div")),A=P().width(M).height(k-_);T.datum(b).call(A);const R=x?Z.A.svg(T.select("svg").node()):void 0,K=function(t,e={}){const{lossFunction:n,layoutFunction:s=z,normalize:i=!0,orientation:r=Math.PI/2,orientationOrder:o,width:a=600,height:l=350,padding:c=15,scaleToFit:h=!1,symmetricalTextCentre:u=!1,distinct:f,round:d=2}=e;let y=s(t,{lossFunction:"default"!==n&&n?"logRatio"===n?D:n:N,distinct:f});i&&(y=F(y,r,o));const g=$(y,a,l,c,h),x=V(g,t,u),p=new Map(Object.keys(g).map(t=>[t,{set:t,x:g[t].x,y:g[t].y,radius:g[t].radius}])),m=t.map(t=>{const e=t.sets.map(t=>p.get(t)),n=W(e);return{circles:e,arcs:n,path:X(n,d),area:t,has:new Set(t.sets)}});function b(t){let e="";for(const n of m)n.has.size>t.length&&t.every(t=>n.has.has(t))&&(e+=" "+n.path);return e}return m.map(({circles:t,arcs:e,path:n,area:s})=>({data:s,text:x[s.sets],circles:t,arcs:e,path:n,distinctPath:n+b(s.sets)}))}(b,{width:M,height:k-_,padding:c?.padding??15}),O=new Map;for(const s of K){const t=wt([...s.data.sets].sort());O.set(t,s)}v.length>0&&_t(c,O,T,v,w,I);const C=(0,l.A)(d.background||"#f4f4f4");T.selectAll(".venn-circle").each(function(t,e){const n=(0,a.Ltv)(this),s=wt([...t.sets].sort()),i=I.get(s),r=i?.fill||p[e%p.length]||d.primaryColor;n.classed("venn-set-"+e%8,!0);const o=i?.["fill-opacity"]??.1,l=i?.stroke||r,c=i?.["stroke-width"]||""+5*w;if(x&&R){const t=O.get(s);if(t&&t.circles.length>0){const s=t.circles[0],i=R.circle(s.x,s.y,2*s.radius,{roughness:.7,seed:g,fill:h(r,.7),fillStyle:"hachure",fillWeight:2,hachureGap:8,hachureAngle:60*e-41,stroke:l,strokeWidth:parseFloat(String(c))});n.select("path").remove(),n.node()?.insertBefore(i,n.select("text").node())}}else n.select("path").style("fill",r).style("fill-opacity",o).style("stroke",l).style("stroke-width",c).style("stroke-opacity",.95);const y=i?.color||(C?(0,u.A)(r,30):(0,f.A)(r,30));n.select("text").style("font-size",48*w+"px").style("fill",y)}),x&&R?T.selectAll(".venn-intersection").each(function(t){const e=(0,a.Ltv)(this),n=wt([...t.sets].sort()),s=I.get(n),i=s?.fill;if(i){const t=e.select("path"),n=t.attr("d");if(n){const e=R.path(n,{roughness:.7,seed:g,fill:h(i,.3),fillStyle:"cross-hatch",fillWeight:2,hachureGap:6,hachureAngle:60,stroke:"none"}),s=t.node();s?.parentNode?.insertBefore(e,s),t.remove()}}else e.select("path").style("fill-opacity",0);e.select("text").style("font-size",48*w+"px").style("fill",s?.color??d.vennSetTextColor??S)}):(T.selectAll(".venn-intersection text").style("font-size",48*w+"px").style("fill",t=>{const e=wt([...t.sets].sort());return I.get(e)?.color??d.vennSetTextColor??S}),T.selectAll(".venn-intersection path").style("fill-opacity",t=>{const e=wt([...t.sets].sort());return I.get(e)?.fill?1:0}).style("fill",t=>{const e=wt([...t.sets].sort());return I.get(e)?.fill??"transparent"}));const L=E.append("g").attr("transform",`translate(0, ${_})`),j=T.select("svg").node();if(j&&"childNodes"in j)for(const s of[...j.childNodes])L.node()?.appendChild(s);(0,r.a$)(E,k,M,c?.useMaxWidth??!0)},"draw");function wt(t){return t.join("|")}function _t(t,e,n,s,i,r){const o=t?.useDebugLayout??!1,a=n.select("svg").append("g").attr("class","venn-text-nodes"),l=new Map;for(const c of s){const t=wt(c.sets),e=l.get(t);e?e.push(c):l.set(t,[c])}for(const[c,h]of l.entries()){const t=e.get(c);if(!t?.text)continue;const n=t.text.x,s=t.text.y,l=Math.min(...t.circles.map(t=>t.radius)),u=Math.min(...t.circles.map(t=>t.radius-Math.hypot(n-t.x,s-t.y)));let f=Number.isFinite(u)?Math.max(0,u):0;0===f&&Number.isFinite(l)&&(f=.6*l);const d=a.append("g").attr("class","venn-text-area").attr("font-size",40*i+"px");o&&d.append("circle").attr("class","venn-text-debug-circle").attr("cx",n).attr("cy",s).attr("r",f).attr("fill","none").attr("stroke","purple").attr("stroke-width",1.5*i).attr("stroke-dasharray",`${6*i} ${4*i}`);const y=Math.max(80*i,2*f*.95),g=Math.max(60*i,2*f*.95),x=(t.data.label&&t.data.label.length>0?Math.min(32*i,.25*f):0)+(h.length<=2?30*i:0),p=n-y/2,m=s-g/2+x,b=Math.max(1,Math.ceil(Math.sqrt(h.length))),v=y/b,I=g/Math.max(1,Math.ceil(h.length/b));for(const[e,a]of h.entries()){const t=e%b,n=Math.floor(e/b),s=p+v*(t+.5),l=m+I*(n+.5);o&&d.append("rect").attr("class","venn-text-debug-cell").attr("x",p+v*t).attr("y",m+I*n).attr("width",v).attr("height",I).attr("fill","none").attr("stroke","teal").attr("stroke-width",1*i).attr("stroke-dasharray",`${4*i} ${3*i}`);const c=.9*v,h=.9*I,u=d.append("foreignObject").attr("class","venn-text-node-fo").attr("width",c).attr("height",h).attr("x",s-c/2).attr("y",l-h/2).attr("overflow","visible"),f=r.get(a.id)?.color,y=u.append("xhtml:span").attr("class","venn-text-node").style("display","flex").style("width","100%").style("height","100%").style("white-space","normal").style("align-items","center").style("justify-content","center").style("text-align","center").style("overflow-wrap","normal").style("word-break","normal").text(a.label??a.id);f&&y.style("color",f)}}}(0,o.K2)(wt,"stableSetsKey"),(0,o.K2)(_t,"renderTextNodes");var St={parser:Q,db:vt,renderer:{draw:kt},styles:It}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/3674.e152f57e.js b/docs/build/assets/js/3674.e152f57e.js deleted file mode 100644 index 21ef54240..000000000 --- a/docs/build/assets/js/3674.e152f57e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[3674],{3674(e,a,s){s.d(a,{createTreeViewServices:()=>c.I});var c=s(5738);s(9302)}}]); \ No newline at end of file diff --git a/docs/build/assets/js/3723.d568e688.js b/docs/build/assets/js/3723.d568e688.js deleted file mode 100644 index 252c0d860..000000000 --- a/docs/build/assets/js/3723.d568e688.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[3723],{3723(t,e,n){n.d(e,{diagram:()=>I});var i=n(8213),s=n(2501),r=n(3283),o=n(273),a=(n(5105),n(8013),n(5739),n(8515),n(3706)),c=n(797),l=n(3219),h=n(8041),u=n(5263),g=function(){var t=(0,c.K2)(function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},"o"),e=[1,4],n=[1,13],i=[1,12],s=[1,15],r=[1,16],o=[1,20],a=[1,19],l=[6,7,8],h=[1,26],u=[1,24],g=[1,25],d=[6,7,11],p=[1,31],y=[6,7,11,24],f=[1,6,13,16,17,20,23],m=[1,35],b=[1,36],_=[1,6,7,11,13,16,17,20,23],k=[1,38],E={trace:(0,c.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"KANBAN",11:"EOF",13:"SPACELIST",16:"ICON",17:"CLASS",20:"NODE_DSTART",21:"NODE_DESCR",22:"NODE_DEND",23:"NODE_ID",24:"SHAPE_DATA"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:(0,c.K2)(function(t,e,n,i,s,r,o){var a=r.length-1;switch(s){case 6:case 7:return i;case 8:i.getLogger().trace("Stop NL ");break;case 9:i.getLogger().trace("Stop EOF ");break;case 11:i.getLogger().trace("Stop NL2 ");break;case 12:i.getLogger().trace("Stop EOF2 ");break;case 15:i.getLogger().info("Node: ",r[a-1].id),i.addNode(r[a-2].length,r[a-1].id,r[a-1].descr,r[a-1].type,r[a]);break;case 16:i.getLogger().info("Node: ",r[a].id),i.addNode(r[a-1].length,r[a].id,r[a].descr,r[a].type);break;case 17:i.getLogger().trace("Icon: ",r[a]),i.decorateNode({icon:r[a]});break;case 18:case 23:i.decorateNode({class:r[a]});break;case 19:i.getLogger().trace("SPACELIST");break;case 20:i.getLogger().trace("Node: ",r[a-1].id),i.addNode(0,r[a-1].id,r[a-1].descr,r[a-1].type,r[a]);break;case 21:i.getLogger().trace("Node: ",r[a].id),i.addNode(0,r[a].id,r[a].descr,r[a].type);break;case 22:i.decorateNode({icon:r[a]});break;case 27:i.getLogger().trace("node found ..",r[a-2]),this.$={id:r[a-1],descr:r[a-1],type:i.getType(r[a-2],r[a])};break;case 28:this.$={id:r[a],descr:r[a],type:0};break;case 29:i.getLogger().trace("node found ..",r[a-3]),this.$={id:r[a-3],descr:r[a-1],type:i.getType(r[a-2],r[a])};break;case 30:this.$=r[a-1]+r[a];break;case 31:this.$=r[a]}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:n,7:[1,10],9:9,12:11,13:i,14:14,16:s,17:r,18:17,19:18,20:o,23:a},t(l,[2,3]),{1:[2,2]},t(l,[2,4]),t(l,[2,5]),{1:[2,6],6:n,12:21,13:i,14:14,16:s,17:r,18:17,19:18,20:o,23:a},{6:n,9:22,12:11,13:i,14:14,16:s,17:r,18:17,19:18,20:o,23:a},{6:h,7:u,10:23,11:g},t(d,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:o,23:a}),t(d,[2,19]),t(d,[2,21],{15:30,24:p}),t(d,[2,22]),t(d,[2,23]),t(y,[2,25]),t(y,[2,26]),t(y,[2,28],{20:[1,32]}),{21:[1,33]},{6:h,7:u,10:34,11:g},{1:[2,7],6:n,12:21,13:i,14:14,16:s,17:r,18:17,19:18,20:o,23:a},t(f,[2,14],{7:m,11:b}),t(_,[2,8]),t(_,[2,9]),t(_,[2,10]),t(d,[2,16],{15:37,24:p}),t(d,[2,17]),t(d,[2,18]),t(d,[2,20],{24:k}),t(y,[2,31]),{21:[1,39]},{22:[1,40]},t(f,[2,13],{7:m,11:b}),t(_,[2,11]),t(_,[2,12]),t(d,[2,15],{24:k}),t(y,[2,30]),{22:[1,41]},t(y,[2,27]),t(y,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:(0,c.K2)(function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},"parseError"),parse:(0,c.K2)(function(t){var e=this,n=[0],i=[],s=[null],r=[],o=this.table,a="",l=0,h=0,u=0,g=r.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(p.yy[y]=this.yy[y]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var f=d.yylloc;r.push(f);var m=d.options&&d.options.ranges;function b(){var t;return"number"!=typeof(t=i.pop()||d.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,c.K2)(function(t){n.length=n.length-2*t,s.length=s.length-t,r.length=r.length-t},"popStack"),(0,c.K2)(b,"lex");for(var _,k,E,S,N,x,D,L,I,C={};;){if(E=n[n.length-1],this.defaultActions[E]?S=this.defaultActions[E]:(null==_&&(_=b()),S=o[E]&&o[E][_]),void 0===S||!S.length||!S[0]){var O="";for(x in I=[],o[E])this.terminals_[x]&&x>2&&I.push("'"+this.terminals_[x]+"'");O=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+I.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==_?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(O,{text:d.match,token:this.terminals_[_]||_,line:d.yylineno,loc:f,expected:I})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E+", token: "+_);switch(S[0]){case 1:n.push(_),s.push(d.yytext),r.push(d.yylloc),n.push(S[1]),_=null,k?(_=k,k=null):(h=d.yyleng,a=d.yytext,l=d.yylineno,f=d.yylloc,u>0&&u--);break;case 2:if(D=this.productions_[S[1]][1],C.$=s[s.length-D],C._$={first_line:r[r.length-(D||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(D||1)].first_column,last_column:r[r.length-1].last_column},m&&(C._$.range=[r[r.length-(D||1)].range[0],r[r.length-1].range[1]]),void 0!==(N=this.performAction.apply(C,[a,h,l,p.yy,S[1],s,r].concat(g))))return N;D&&(n=n.slice(0,-1*D*2),s=s.slice(0,-1*D),r=r.slice(0,-1*D)),n.push(this.productions_[S[1]][0]),s.push(C.$),r.push(C._$),L=o[n[n.length-2]][n[n.length-1]],n.push(L);break;case 3:return!0}}return!0},"parse")},S=function(){return{EOF:1,parseError:(0,c.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,c.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,c.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,c.K2)(function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,c.K2)(function(){return this._more=!0,this},"more"),reject:(0,c.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,c.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,c.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,c.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,c.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,c.K2)(function(t,e){var n,i,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1},"test_match"),next:(0,c.K2)(function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;r<s.length;r++)if((n=this._input.match(this.rules[s[r]]))&&(!e||n[0].length>e[0].length)){if(e=n,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,s[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,c.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,c.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,c.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,c.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,c.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,c.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,c.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,c.K2)(function(t,e,n,i){switch(n){case 0:return this.pushState("shapeData"),e.yytext="",24;case 1:return this.pushState("shapeDataStr"),24;case 2:return this.popState(),24;case 3:const n=/\n\s*/g;return e.yytext=e.yytext.replace(n,"<br/>"),24;case 4:return 24;case 5:case 10:case 29:case 32:this.popState();break;case 6:return t.getLogger().trace("Found comment",e.yytext),6;case 7:return 8;case 8:this.begin("CLASS");break;case 9:return this.popState(),17;case 11:t.getLogger().trace("Begin icon"),this.begin("ICON");break;case 12:return t.getLogger().trace("SPACELINE"),6;case 13:return 7;case 14:return 16;case 15:t.getLogger().trace("end icon"),this.popState();break;case 16:return t.getLogger().trace("Exploding node"),this.begin("NODE"),20;case 17:return t.getLogger().trace("Cloud"),this.begin("NODE"),20;case 18:return t.getLogger().trace("Explosion Bang"),this.begin("NODE"),20;case 19:return t.getLogger().trace("Cloud Bang"),this.begin("NODE"),20;case 20:case 21:case 22:case 23:return this.begin("NODE"),20;case 24:return 13;case 25:return 23;case 26:return 11;case 27:this.begin("NSTR2");break;case 28:return"NODE_DESCR";case 30:t.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 31:return t.getLogger().trace("description:",e.yytext),"NODE_DESCR";case 33:return this.popState(),t.getLogger().trace("node end ))"),"NODE_DEND";case 34:return this.popState(),t.getLogger().trace("node end )"),"NODE_DEND";case 35:return this.popState(),t.getLogger().trace("node end ...",e.yytext),"NODE_DEND";case 36:case 39:case 40:return this.popState(),t.getLogger().trace("node end (("),"NODE_DEND";case 37:case 38:return this.popState(),t.getLogger().trace("node end (-"),"NODE_DEND";case 41:case 42:return t.getLogger().trace("Long description:",e.yytext),21}},"anonymous"),rules:[/^(?:@\{)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^\"]+)/i,/^(?:[^}^"]+)/i,/^(?:\})/i,/^(?:\s*%%.*)/i,/^(?:kanban\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}@]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{shapeDataEndBracket:{rules:[],inclusive:!1},shapeDataStr:{rules:[2,3],inclusive:!1},shapeData:{rules:[1,4,5],inclusive:!1},CLASS:{rules:[9,10],inclusive:!1},ICON:{rules:[14,15],inclusive:!1},NSTR2:{rules:[28,29],inclusive:!1},NSTR:{rules:[31,32],inclusive:!1},NODE:{rules:[27,30,33,34,35,36,37,38,39,40,41,42],inclusive:!1},INITIAL:{rules:[0,6,7,8,11,12,13,16,17,18,19,20,21,22,23,24,25,26],inclusive:!0}}}}();function N(){this.yy={}}return E.lexer=S,(0,c.K2)(N,"Parser"),N.prototype=E,E.Parser=N,new N}();g.parser=g;var d=g,p=[],y=[],f=0,m={},b=(0,c.K2)(()=>{p=[],y=[],f=0,m={}},"clear"),_=(0,c.K2)(t=>{if(0===p.length)return null;const e=p[0].level;let n=null;for(let i=p.length-1;i>=0;i--)if(p[i].level!==e||n||(n=p[i]),p[i].level<e)throw new Error('Items without section detected, found section ("'+p[i].label+'")');return t===n?.level?null:n},"getSection"),k=(0,c.K2)(function(){return y},"getSections"),E=(0,c.K2)(function(){const t=[],e=k(),n=(0,a.D7)();for(const i of e){const e={id:i.id,label:(0,a.jZ)(i.label??"",n),labelType:"markdown",isGroup:!0,ticket:i.ticket,shape:"kanbanSection",level:i.level,look:n.look};t.push(e);const s=p.filter(t=>t.parentId===i.id);for(const r of s){const e={id:r.id,parentId:i.id,label:(0,a.jZ)(r.label??"",n),labelType:"markdown",isGroup:!1,ticket:r?.ticket,priority:r?.priority,assigned:r?.assigned,icon:r?.icon,shape:"kanbanItem",level:r.level,rx:5,ry:5,cssStyles:["text-align: left"]};t.push(e)}}return{nodes:t,edges:[],other:{},config:(0,a.D7)()}},"getData"),S=(0,c.K2)((t,e,n,i,s)=>{const o=(0,a.D7)();let c=o.mindmap?.padding??a.UI.mindmap.padding;switch(i){case N.ROUNDED_RECT:case N.RECT:case N.HEXAGON:c*=2}const l={id:(0,a.jZ)(e,o)||"kbn"+f++,level:t,label:(0,a.jZ)(n,o),width:o.mindmap?.maxNodeWidth??a.UI.mindmap.maxNodeWidth,padding:c,isGroup:!1};if(void 0!==s){let t;t=s.includes("\n")?s+"\n":"{\n"+s+"\n}";const e=(0,r.H)(t,{schema:r.r});if(e.shape&&(e.shape!==e.shape.toLowerCase()||e.shape.includes("_")))throw new Error(`No such shape: ${e.shape}. Shape names should be lowercase.`);e?.shape&&"kanbanItem"===e.shape&&(l.shape=e?.shape),e?.label&&(l.label=e?.label),e?.icon&&(l.icon=e?.icon.toString()),e?.assigned&&(l.assigned=e?.assigned.toString()),e?.ticket&&(l.ticket=e?.ticket.toString()),e?.priority&&(l.priority=e?.priority)}const h=_(t);h?l.parentId=h.id||"kbn"+f++:y.push(l),p.push(l)},"addNode"),N={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},x={clear:b,addNode:S,getSections:k,getData:E,nodeType:N,getType:(0,c.K2)((t,e)=>{switch(c.Rm.debug("In get type",t,e),t){case"[":return N.RECT;case"(":return")"===e?N.ROUNDED_RECT:N.CLOUD;case"((":return N.CIRCLE;case")":return N.CLOUD;case"))":return N.BANG;case"{{":return N.HEXAGON;default:return N.DEFAULT}},"getType"),setElementForId:(0,c.K2)((t,e)=>{m[t]=e},"setElementForId"),decorateNode:(0,c.K2)(t=>{if(!t)return;const e=(0,a.D7)(),n=p[p.length-1];t.icon&&(n.icon=(0,a.jZ)(t.icon,e)),t.class&&(n.cssClasses=(0,a.jZ)(t.class,e))},"decorateNode"),type2Str:(0,c.K2)(t=>{switch(t){case N.DEFAULT:return"no-border";case N.RECT:return"rect";case N.ROUNDED_RECT:return"rounded-rect";case N.CIRCLE:return"circle";case N.CLOUD:return"cloud";case N.BANG:return"bang";case N.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),getLogger:(0,c.K2)(()=>c.Rm,"getLogger"),getElementById:(0,c.K2)(t=>m[t],"getElementById")},D={draw:(0,c.K2)(async(t,e,n,s)=>{c.Rm.debug("Rendering kanban diagram\n"+t);const r=s.db.getData(),l=(0,a.D7)();l.htmlLabels=!1;const h=(0,i.D)(e);for(const i of r.nodes)i.domId=`${e}-${i.id}`;const u=h.append("g");u.attr("class","sections");const g=h.append("g");g.attr("class","items");const d=r.nodes.filter(t=>t.isGroup);let p=0;const y=[];let f=25;for(const i of d){const t=l?.kanban?.sectionWidth||200;p+=1,i.x=t*p+10*(p-1)/2,i.width=t,i.y=0,i.height=3*t,i.rx=5,i.ry=5,i.cssClasses=i.cssClasses+" section-"+p;const e=await(0,o.U)(u,i);f=Math.max(f,e?.labelBBox?.height),y.push(e)}let m=0;for(const i of d){const t=y[m];m+=1;const e=l?.kanban?.sectionWidth||200,n=3*-e/2+f;let s=n;const a=r.nodes.filter(t=>t.parentId===i.id);for(const r of a){if(r.isGroup)throw new Error("Groups within groups are not allowed in Kanban diagrams");r.x=i.x,r.width=e-15;const t=(await(0,o.on)(g,r,{config:l})).node().getBBox();r.y=s+t.height/2,await(0,o.U_)(r),s=r.y+t.height/2+5}const c=t.cluster.select("rect"),h=Math.max(s-n+30,50)+(f-25);c.attr("height",h)}(0,a.ot)(void 0,h,l.mindmap?.padding??a.UI.kanban.padding,l.mindmap?.useMaxWidth??a.UI.kanban.useMaxWidth)},"draw")},L=(0,c.K2)(t=>{let e="";for(let i=0;i<t.THEME_COLOR_LIMIT;i++)t["lineColor"+i]=t["lineColor"+i]||t["cScaleInv"+i],(0,l.A)(t["lineColor"+i])?t["lineColor"+i]=(0,h.A)(t["lineColor"+i],20):t["lineColor"+i]=(0,u.A)(t["lineColor"+i],20);const n=(0,c.K2)((e,n)=>t.darkMode?(0,u.A)(e,n):(0,h.A)(e,n),"adjuster");for(let i=0;i<t.THEME_COLOR_LIMIT;i++){const s=""+(17-3*i);e+=`\n .section-${i-1} rect, .section-${i-1} path, .section-${i-1} circle, .section-${i-1} polygon, .section-${i-1} path {\n fill: ${n(t["cScale"+i],10)};\n stroke: ${n(t["cScale"+i],10)};\n\n }\n .section-${i-1} text {\n fill: ${t["cScaleLabel"+i]};\n }\n .node-icon-${i-1} {\n font-size: 40px;\n color: ${t["cScaleLabel"+i]};\n }\n .section-edge-${i-1}{\n stroke: ${t["cScale"+i]};\n }\n .edge-depth-${i-1}{\n stroke-width: ${s};\n }\n .section-${i-1} line {\n stroke: ${t["cScaleInv"+i]} ;\n stroke-width: 3;\n }\n\n .disabled, .disabled circle, .disabled text {\n fill: lightgray;\n }\n .disabled text {\n fill: #efefef;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.background};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n .kanban-ticket-link {\n fill: ${t.background};\n stroke: ${t.nodeBorder};\n text-decoration: underline;\n }\n `}return e},"genSections"),I={db:x,renderer:D,parser:d,styles:(0,c.K2)(t=>`\n .edge {\n stroke-width: 3;\n }\n ${L(t)}\n .section-root rect, .section-root path, .section-root circle, .section-root polygon {\n fill: ${t.git0};\n }\n .section-root text {\n fill: ${t.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .cluster-label, .label {\n color: ${t.textColor};\n fill: ${t.textColor};\n }\n .kanban-label {\n dy: 1em;\n alignment-baseline: middle;\n text-anchor: middle;\n dominant-baseline: middle;\n text-align: center;\n }\n ${(0,s.o)()}\n`,"getStyles")}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/384.3370efe6.js b/docs/build/assets/js/384.3370efe6.js deleted file mode 100644 index 97c5650f3..000000000 --- a/docs/build/assets/js/384.3370efe6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[384],{5937(t,e,r){r.d(e,{A:()=>s});var a=r(2453),i=r(4886);const s=(t,e)=>a.A.lang.round(i.A.parse(t)[e])},384(t,e,r){r.d(e,{diagram:()=>Te});var a=r(2501),i=r(1334),s=r(5105),n=r(5739),o=r(8515),l=r(3706),c=r(797),d=r(7110),h=r(9125),g=r(9826);var u=r(9663);function y(t){if((0,d.s)(t))return t;const e=(0,h.b)(t);if(!function(t){switch((0,h.b)(t)){case g.R_:case g.Uw:case g.cT:case g.iq:case g.$V:case g.vC:case g.ri:case g.ML:case g.XZ:case g.i1:case g._u:case g.pj:case g.kj:case g.GX:case g.Av:case g.NA:case g.OG:case g.VP:case g.Qb:case g.q:case g.x6:case g.ZR:return!0;default:return!1}}(t))return{};if(r=t,Array.isArray(r)){const e=Array.from(t);return t.length>0&&"string"==typeof t[0]&&Object.hasOwn(t,"index")&&(e.index=t.index,e.input=t.input),e}var r;if((0,u.i)(t)){const e=t;return new(0,e.constructor)(e.buffer,e.byteOffset,e.length)}if(e===g.cT)return new ArrayBuffer(t.byteLength);if(e===g.iq){const e=t,r=e.buffer,a=e.byteOffset,i=e.byteLength,s=new ArrayBuffer(i),n=new Uint8Array(r,a,i);return new Uint8Array(s).set(n),new DataView(s)}if(e===g.$V||e===g.kj||e===g.OG){const r=new(0,t.constructor)(t.valueOf());return e===g.OG?function(t,e){const r=e.valueOf().length;for(const a in e)Object.hasOwn(e,a)&&(Number.isNaN(Number(a))||Number(a)>=r)&&(t[a]=e[a])}(r,t):p(r,t),r}if(e===g.vC)return new Date(Number(t));if(e===g.Av){const e=t,r=new RegExp(e.source,e.flags);return r.lastIndex=e.lastIndex,r}if(e===g.VP)return Object(Symbol.prototype.valueOf.call(t));if(e===g.pj){const e=t,r=new Map;return e.forEach((t,e)=>{r.set(e,t)}),r}if(e===g.NA){const e=t,r=new Set;return e.forEach(t=>{r.add(t)}),r}if(e===g.R_){const e=t,r={};return p(r,e),r.length=e.length,r[Symbol.iterator]=e[Symbol.iterator],r}const a={};return function(t,e){const r=Object.getPrototypeOf(e);if(null!==r){"function"==typeof e.constructor&&Object.setPrototypeOf(t,r)}}(a,t),p(a,t),function(t,e){const r=Object.getOwnPropertySymbols(e);for(let a=0;a<r.length;a++){const i=r[a];Object.prototype.propertyIsEnumerable.call(e,i)&&(t[i]=e[i])}}(a,t),a}function p(t,e){for(const r in e)Object.hasOwn(e,r)&&(t[r]=e[r])}var x=r(5937),b=r(3201),f=r(451),m=r(697),w=function(){var t=(0,c.K2)(function(t,e,r,a){for(r=r||{},a=t.length;a--;r[t[a]]=e);return r},"o"),e=[1,15],r=[1,7],a=[1,13],i=[1,14],s=[1,19],n=[1,16],o=[1,17],l=[1,18],d=[8,30],h=[8,10,21,28,29,30,31,39,43,46],g=[1,23],u=[1,24],y=[8,10,15,16,21,28,29,30,31,39,43,46],p=[8,10,15,16,21,27,28,29,30,31,39,43,46],x=[1,49],b={trace:(0,c.K2)(function(){},"trace"),yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,NODE_ID:31,nodeShapeNLabel:32,dirList:33,DIR:34,NODE_DSTART:35,NODE_DEND:36,BLOCK_ARROW_START:37,BLOCK_ARROW_END:38,classDef:39,CLASSDEF_ID:40,CLASSDEF_STYLEOPTS:41,DEFAULT:42,class:43,CLASSENTITY_IDS:44,STYLECLASS:45,style:46,STYLE_ENTITY_IDS:47,STYLE_DEFINITION_DATA:48,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"NODE_ID",34:"DIR",35:"NODE_DSTART",36:"NODE_DEND",37:"BLOCK_ARROW_START",38:"BLOCK_ARROW_END",39:"classDef",40:"CLASSDEF_ID",41:"CLASSDEF_STYLEOPTS",42:"DEFAULT",43:"class",44:"CLASSENTITY_IDS",45:"STYLECLASS",46:"style",47:"STYLE_ENTITY_IDS",48:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[33,1],[33,2],[32,3],[32,4],[23,3],[23,3],[24,3],[25,3]],performAction:(0,c.K2)(function(t,e,r,a,i,s,n){var o=s.length-1;switch(i){case 4:a.getLogger().debug("Rule: separator (NL) ");break;case 5:a.getLogger().debug("Rule: separator (Space) ");break;case 6:a.getLogger().debug("Rule: separator (EOF) ");break;case 7:a.getLogger().debug("Rule: hierarchy: ",s[o-1]),a.setHierarchy(s[o-1]);break;case 8:a.getLogger().debug("Stop NL ");break;case 9:a.getLogger().debug("Stop EOF ");break;case 10:a.getLogger().debug("Stop NL2 ");break;case 11:a.getLogger().debug("Stop EOF2 ");break;case 12:a.getLogger().debug("Rule: statement: ",s[o]),"number"==typeof s[o].length?this.$=s[o]:this.$=[s[o]];break;case 13:a.getLogger().debug("Rule: statement #2: ",s[o-1]),this.$=[s[o-1]].concat(s[o]);break;case 14:a.getLogger().debug("Rule: link: ",s[o],t),this.$={edgeTypeStr:s[o],label:""};break;case 15:a.getLogger().debug("Rule: LABEL link: ",s[o-3],s[o-1],s[o]),this.$={edgeTypeStr:s[o],label:s[o-1]};break;case 18:const e=parseInt(s[o]),r=a.generateId();this.$={id:r,type:"space",label:"",width:e,children:[]};break;case 23:a.getLogger().debug("Rule: (nodeStatement link node) ",s[o-2],s[o-1],s[o]," typestr: ",s[o-1].edgeTypeStr);const i=a.edgeStrToEdgeData(s[o-1].edgeTypeStr),n=a.edgeStrToEdgeStartData(s[o-1].edgeTypeStr),l=a.edgeStrToThickness(s[o-1].edgeTypeStr),c=a.edgeStrToPattern(s[o-1].edgeTypeStr);this.$=[{id:s[o-2].id,label:s[o-2].label,type:s[o-2].type,directions:s[o-2].directions},{id:s[o-2].id+"-"+s[o].id,start:s[o-2].id,end:s[o].id,label:s[o-1].label,type:"edge",thickness:l,pattern:c,directions:s[o].directions,arrowTypeEnd:i,arrowTypeStart:n},{id:s[o].id,label:s[o].label,type:a.typeStr2Type(s[o].typeStr),directions:s[o].directions}];break;case 24:a.getLogger().debug("Rule: nodeStatement (abc88 node size) ",s[o-1],s[o]),this.$={id:s[o-1].id,label:s[o-1].label,type:a.typeStr2Type(s[o-1].typeStr),directions:s[o-1].directions,widthInColumns:parseInt(s[o],10)};break;case 25:a.getLogger().debug("Rule: nodeStatement (node) ",s[o]),this.$={id:s[o].id,label:s[o].label,type:a.typeStr2Type(s[o].typeStr),directions:s[o].directions,widthInColumns:1};break;case 26:a.getLogger().debug("APA123",this?this:"na"),a.getLogger().debug("COLUMNS: ",s[o]),this.$={type:"column-setting",columns:"auto"===s[o]?-1:parseInt(s[o])};break;case 27:a.getLogger().debug("Rule: id-block statement : ",s[o-2],s[o-1]);a.generateId();this.$={...s[o-2],type:"composite",children:s[o-1]};break;case 28:a.getLogger().debug("Rule: blockStatement : ",s[o-2],s[o-1],s[o]);const d=a.generateId();this.$={id:d,type:"composite",label:"",children:s[o-1]};break;case 29:a.getLogger().debug("Rule: node (NODE_ID separator): ",s[o]),this.$={id:s[o]};break;case 30:a.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",s[o-1],s[o]),this.$={id:s[o-1],label:s[o].label,typeStr:s[o].typeStr,directions:s[o].directions};break;case 31:a.getLogger().debug("Rule: dirList: ",s[o]),this.$=[s[o]];break;case 32:a.getLogger().debug("Rule: dirList: ",s[o-1],s[o]),this.$=[s[o-1]].concat(s[o]);break;case 33:a.getLogger().debug("Rule: nodeShapeNLabel: ",s[o-2],s[o-1],s[o]),this.$={typeStr:s[o-2]+s[o],label:s[o-1]};break;case 34:a.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",s[o-3],s[o-2]," #3:",s[o-1],s[o]),this.$={typeStr:s[o-3]+s[o],label:s[o-2],directions:s[o-1]};break;case 35:case 36:this.$={type:"classDef",id:s[o-1].trim(),css:s[o].trim()};break;case 37:this.$={type:"applyClass",id:s[o-1].trim(),styleClass:s[o].trim()};break;case 38:this.$={type:"applyStyles",id:s[o-1].trim(),stylesStr:s[o].trim()}}},"anonymous"),table:[{9:1,10:[1,2]},{1:[3]},{10:e,11:3,13:4,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:a,29:i,31:s,39:n,43:o,46:l},{8:[1,20]},t(d,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,10:e,21:r,28:a,29:i,31:s,39:n,43:o,46:l}),t(h,[2,16],{14:22,15:g,16:u}),t(h,[2,17]),t(h,[2,18]),t(h,[2,19]),t(h,[2,20]),t(h,[2,21]),t(h,[2,22]),t(y,[2,25],{27:[1,25]}),t(h,[2,26]),{19:26,26:12,31:s},{10:e,11:27,13:4,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:a,29:i,31:s,39:n,43:o,46:l},{40:[1,28],42:[1,29]},{44:[1,30]},{47:[1,31]},t(p,[2,29],{32:32,35:[1,33],37:[1,34]}),{1:[2,7]},t(d,[2,13]),{26:35,31:s},{31:[2,14]},{17:[1,36]},t(y,[2,24]),{10:e,11:37,13:4,14:22,15:g,16:u,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:a,29:i,31:s,39:n,43:o,46:l},{30:[1,38]},{41:[1,39]},{41:[1,40]},{45:[1,41]},{48:[1,42]},t(p,[2,30]),{18:[1,43]},{18:[1,44]},t(y,[2,23]),{18:[1,45]},{30:[1,46]},t(h,[2,28]),t(h,[2,35]),t(h,[2,36]),t(h,[2,37]),t(h,[2,38]),{36:[1,47]},{33:48,34:x},{15:[1,50]},t(h,[2,27]),t(p,[2,33]),{38:[1,51]},{33:52,34:x,38:[2,31]},{31:[2,15]},t(p,[2,34]),{38:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:(0,c.K2)(function(t,e){if(!e.recoverable){var r=new Error(t);throw r.hash=e,r}this.trace(t)},"parseError"),parse:(0,c.K2)(function(t){var e=this,r=[0],a=[],i=[null],s=[],n=this.table,o="",l=0,d=0,h=0,g=s.slice.call(arguments,1),u=Object.create(this.lexer),y={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(y.yy[p]=this.yy[p]);u.setInput(t,y.yy),y.yy.lexer=u,y.yy.parser=this,void 0===u.yylloc&&(u.yylloc={});var x=u.yylloc;s.push(x);var b=u.options&&u.options.ranges;function f(){var t;return"number"!=typeof(t=a.pop()||u.lex()||1)&&(t instanceof Array&&(t=(a=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,c.K2)(function(t){r.length=r.length-2*t,i.length=i.length-t,s.length=s.length-t},"popStack"),(0,c.K2)(f,"lex");for(var m,w,k,S,L,_,E,v,D,R={};;){if(k=r[r.length-1],this.defaultActions[k]?S=this.defaultActions[k]:(null==m&&(m=f()),S=n[k]&&n[k][m]),void 0===S||!S.length||!S[0]){var T="";for(_ in D=[],n[k])this.terminals_[_]&&_>2&&D.push("'"+this.terminals_[_]+"'");T=u.showPosition?"Parse error on line "+(l+1)+":\n"+u.showPosition()+"\nExpecting "+D.join(", ")+", got '"+(this.terminals_[m]||m)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(T,{text:u.match,token:this.terminals_[m]||m,line:u.yylineno,loc:x,expected:D})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+m);switch(S[0]){case 1:r.push(m),i.push(u.yytext),s.push(u.yylloc),r.push(S[1]),m=null,w?(m=w,w=null):(d=u.yyleng,o=u.yytext,l=u.yylineno,x=u.yylloc,h>0&&h--);break;case 2:if(E=this.productions_[S[1]][1],R.$=i[i.length-E],R._$={first_line:s[s.length-(E||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(E||1)].first_column,last_column:s[s.length-1].last_column},b&&(R._$.range=[s[s.length-(E||1)].range[0],s[s.length-1].range[1]]),void 0!==(L=this.performAction.apply(R,[o,d,l,y.yy,S[1],i,s].concat(g))))return L;E&&(r=r.slice(0,-1*E*2),i=i.slice(0,-1*E),s=s.slice(0,-1*E)),r.push(this.productions_[S[1]][0]),i.push(R.$),s.push(R._$),v=n[r[r.length-2]][r[r.length-1]],r.push(v);break;case 3:return!0}}return!0},"parse")},f=function(){return{EOF:1,parseError:(0,c.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,c.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,c.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,c.K2)(function(t){var e=t.length,r=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var a=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),r.length-1&&(this.yylineno-=r.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:r?(r.length===a.length?this.yylloc.first_column:0)+a[a.length-r.length].length-r[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,c.K2)(function(){return this._more=!0,this},"more"),reject:(0,c.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,c.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,c.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,c.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,c.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,c.K2)(function(t,e){var r,a,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(a=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=a.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:a?a[a.length-1].length-a[a.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],r=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),r)return r;if(this._backtrack){for(var s in i)this[s]=i[s];return!1}return!1},"test_match"),next:(0,c.K2)(function(){if(this.done)return this.EOF;var t,e,r,a;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),s=0;s<i.length;s++)if((r=this._input.match(this.rules[i[s]]))&&(!e||r[0].length>e[0].length)){if(e=r,a=s,this.options.backtrack_lexer){if(!1!==(t=this.test_match(r,i[s])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[a]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,c.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,c.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,c.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,c.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,c.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,c.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,c.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:(0,c.K2)(function(t,e,r,a){switch(r){case 0:return t.getLogger().debug("Found block-beta"),10;case 1:return t.getLogger().debug("Found id-block"),29;case 2:return t.getLogger().debug("Found block"),10;case 3:t.getLogger().debug(".",e.yytext);break;case 4:t.getLogger().debug("_",e.yytext);break;case 5:return 5;case 6:return e.yytext=-1,28;case 7:return e.yytext=e.yytext.replace(/columns\s+/,""),t.getLogger().debug("COLUMNS (LEX)",e.yytext),28;case 8:case 76:case 77:case 99:this.pushState("md_string");break;case 9:return"MD_STR";case 10:case 34:case 79:this.popState();break;case 11:this.pushState("string");break;case 12:t.getLogger().debug("LEX: POPPING STR:",e.yytext),this.popState();break;case 13:return t.getLogger().debug("LEX: STR end:",e.yytext),"STR";case 14:return e.yytext=e.yytext.replace(/space\:/,""),t.getLogger().debug("SPACE NUM (LEX)",e.yytext),21;case 15:return e.yytext="1",t.getLogger().debug("COLUMNS (LEX)",e.yytext),21;case 16:return 42;case 17:return"LINKSTYLE";case 18:return"INTERPOLATE";case 19:return this.pushState("CLASSDEF"),39;case 20:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 21:return this.popState(),this.pushState("CLASSDEFID"),40;case 22:return this.popState(),41;case 23:return this.pushState("CLASS"),43;case 24:return this.popState(),this.pushState("CLASS_STYLE"),44;case 25:return this.popState(),45;case 26:return this.pushState("STYLE_STMNT"),46;case 27:return this.popState(),this.pushState("STYLE_DEFINITION"),47;case 28:return this.popState(),48;case 29:return this.pushState("acc_title"),"acc_title";case 30:return this.popState(),"acc_title_value";case 31:return this.pushState("acc_descr"),"acc_descr";case 32:return this.popState(),"acc_descr_value";case 33:this.pushState("acc_descr_multiline");break;case 35:return"acc_descr_multiline_value";case 36:return 30;case 37:case 38:case 40:case 41:case 44:return this.popState(),t.getLogger().debug("Lex: (("),"NODE_DEND";case 39:return this.popState(),t.getLogger().debug("Lex: ))"),"NODE_DEND";case 42:return this.popState(),t.getLogger().debug("Lex: (-"),"NODE_DEND";case 43:return this.popState(),t.getLogger().debug("Lex: -)"),"NODE_DEND";case 45:return this.popState(),t.getLogger().debug("Lex: ]]"),"NODE_DEND";case 46:return this.popState(),t.getLogger().debug("Lex: ("),"NODE_DEND";case 47:return this.popState(),t.getLogger().debug("Lex: ])"),"NODE_DEND";case 48:case 49:return this.popState(),t.getLogger().debug("Lex: /]"),"NODE_DEND";case 50:return this.popState(),t.getLogger().debug("Lex: )]"),"NODE_DEND";case 51:return this.popState(),t.getLogger().debug("Lex: )"),"NODE_DEND";case 52:return this.popState(),t.getLogger().debug("Lex: ]>"),"NODE_DEND";case 53:return this.popState(),t.getLogger().debug("Lex: ]"),"NODE_DEND";case 54:return t.getLogger().debug("Lexa: -)"),this.pushState("NODE"),35;case 55:return t.getLogger().debug("Lexa: (-"),this.pushState("NODE"),35;case 56:return t.getLogger().debug("Lexa: ))"),this.pushState("NODE"),35;case 57:case 59:case 60:case 61:case 64:return t.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;case 58:return t.getLogger().debug("Lex: ((("),this.pushState("NODE"),35;case 62:return t.getLogger().debug("Lexc: >"),this.pushState("NODE"),35;case 63:return t.getLogger().debug("Lexa: (["),this.pushState("NODE"),35;case 65:case 66:case 67:case 68:case 69:case 70:case 71:return this.pushState("NODE"),35;case 72:return t.getLogger().debug("Lexa: ["),this.pushState("NODE"),35;case 73:return this.pushState("BLOCK_ARROW"),t.getLogger().debug("LEX ARR START"),37;case 74:return t.getLogger().debug("Lex: NODE_ID",e.yytext),31;case 75:return t.getLogger().debug("Lex: EOF",e.yytext),8;case 78:return"NODE_DESCR";case 80:t.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 81:t.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 82:return t.getLogger().debug("LEX: NODE_DESCR:",e.yytext),"NODE_DESCR";case 83:t.getLogger().debug("LEX POPPING"),this.popState();break;case 84:t.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 85:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (right): dir:",e.yytext),"DIR";case 86:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (left):",e.yytext),"DIR";case 87:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (x):",e.yytext),"DIR";case 88:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (y):",e.yytext),"DIR";case 89:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (up):",e.yytext),"DIR";case 90:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (down):",e.yytext),"DIR";case 91:return e.yytext="]>",t.getLogger().debug("Lex (ARROW_DIR end):",e.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";case 92:return t.getLogger().debug("Lex: LINK","#"+e.yytext+"#"),15;case 93:case 94:case 95:return t.getLogger().debug("Lex: LINK",e.yytext),15;case 96:case 97:case 98:return t.getLogger().debug("Lex: START_LINK",e.yytext),this.pushState("LLABEL"),16;case 100:return t.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";case 101:return this.popState(),t.getLogger().debug("Lex: LINK","#"+e.yytext+"#"),15;case 102:case 103:return this.popState(),t.getLogger().debug("Lex: LINK",e.yytext),15;case 104:return t.getLogger().debug("Lex: COLON",e.yytext),e.yytext=e.yytext.slice(1),27}},"anonymous"),rules:[/^(?:block-beta\b)/,/^(?:block:)/,/^(?:block\b)/,/^(?:[\s]+)/,/^(?:[\n]+)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:columns\s+auto\b)/,/^(?:columns\s+[\d]+)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:space[:]\d+)/,/^(?:space\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\s+)/,/^(?:DEFAULT\s+)/,/^(?:\w+\s+)/,/^(?:[^\n]*)/,/^(?:class\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:style\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:end\b\s*)/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:[\)]\))/,/^(?:\}\})/,/^(?:\})/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\()/,/^(?:\]\])/,/^(?:\()/,/^(?:\]\))/,/^(?:\\\])/,/^(?:\/\])/,/^(?:\)\])/,/^(?:[\)])/,/^(?:\]>)/,/^(?:[\]])/,/^(?:-\))/,/^(?:\(-)/,/^(?:\)\))/,/^(?:\))/,/^(?:\(\(\()/,/^(?:\(\()/,/^(?:\{\{)/,/^(?:\{)/,/^(?:>)/,/^(?:\(\[)/,/^(?:\()/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\[\\)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:\[)/,/^(?:<\[)/,/^(?:[^\(\[\n\-\)\{\}\s\<\>:=]+)/,/^(?:$)/,/^(?:["][`])/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:\]>\s*\()/,/^(?:,?\s*right\s*)/,/^(?:,?\s*left\s*)/,/^(?:,?\s*x\s*)/,/^(?:,?\s*y\s*)/,/^(?:,?\s*up\s*)/,/^(?:,?\s*down\s*)/,/^(?:\)\s*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:["][`])/,/^(?:["])/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?::\d+)/],conditions:{STYLE_DEFINITION:{rules:[28],inclusive:!1},STYLE_STMNT:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[22],inclusive:!1},CLASSDEF:{rules:[20,21],inclusive:!1},CLASS_STYLE:{rules:[25],inclusive:!1},CLASS:{rules:[24],inclusive:!1},LLABEL:{rules:[99,100,101,102,103],inclusive:!1},ARROW_DIR:{rules:[85,86,87,88,89,90,91],inclusive:!1},BLOCK_ARROW:{rules:[76,81,84],inclusive:!1},NODE:{rules:[37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,77,80],inclusive:!1},md_string:{rules:[9,10,78,79],inclusive:!1},space:{rules:[],inclusive:!1},string:{rules:[12,13,82,83],inclusive:!1},acc_descr_multiline:{rules:[34,35],inclusive:!1},acc_descr:{rules:[32],inclusive:!1},acc_title:{rules:[30],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,11,14,15,16,17,18,19,23,26,29,31,33,36,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,92,93,94,95,96,97,98,104],inclusive:!0}}}}();function m(){this.yy={}}return b.lexer=f,(0,c.K2)(m,"Parser"),m.prototype=b,b.Parser=m,new m}();w.parser=w;var k=w,S=new Map,L=[],_=new Map,E="color",v="fill",D=(0,l.D7)(),R=new Map,T="",$=(0,c.K2)(t=>l.Y2.sanitizeText(t,D),"sanitizeText"),K=(0,c.K2)(function(t,e=""){let r=R.get(t);r||(r={id:t,styles:[],textStyles:[]},R.set(t,r)),null!=e&&e.split(",").forEach(t=>{const e=t.replace(/([^;]*);/,"$1").trim();if(RegExp(E).exec(t)){const t=e.replace(v,"bgFill").replace(E,v);r.textStyles.push(t)}r.styles.push(e)})},"addStyleClass"),I=(0,c.K2)(function(t,e=""){const r=S.get(t);null!=e&&(r.styles=e.split(","))},"addStyle2Node"),N=(0,c.K2)(function(t,e){t.split(",").forEach(function(t){let r=S.get(t);if(void 0===r){const e=t.trim();r={id:e,type:"na",children:[]},S.set(e,r)}r.classes||(r.classes=[]),r.classes.push(e)})},"setCssClass"),C=(0,c.K2)((t,e)=>{const r=t.flat(),a=[],i=r.find(t=>"column-setting"===t?.type),s=i?.columns??-1;for(const n of r)if("number"==typeof s&&s>0&&"column-setting"!==n.type&&"number"==typeof n.widthInColumns&&n.widthInColumns>s&&c.Rm.warn(`Block ${n.id} width ${n.widthInColumns} exceeds configured column width ${s}`),n.label&&(n.label=$(n.label)),"classDef"!==n.type)if("applyClass"!==n.type)if("applyStyles"!==n.type)if("column-setting"===n.type)e.columns=n.columns??-1;else if("edge"===n.type){const t=(_.get(n.id)??0)+1;_.set(n.id,t),n.id=t+"-"+n.id,L.push(n)}else{n.label||("composite"===n.type?n.label="":n.label=n.id);const t=S.get(n.id);if(void 0===t?S.set(n.id,n):("na"!==n.type&&(t.type=n.type),n.label!==n.id&&(t.label=n.label)),n.children&&C(n.children,n),"space"===n.type){const t=n.width??1;for(let e=0;e<t;e++){const t=y(n);t.id=t.id+"-"+e,S.set(t.id,t),a.push(t)}}else void 0===t&&a.push(n)}else n?.stylesStr&&I(n.id,n?.stylesStr);else N(n.id,n?.styleClass??"");else K(n.id,n.css);e.children=a},"populateBlockDatabase"),O=[],B={id:"root",type:"composite",children:[],columns:-1},z=(0,c.K2)(()=>{c.Rm.debug("Clear called"),(0,l.IU)(),B={id:"root",type:"composite",children:[],columns:-1},S=new Map([["root",B]]),O=[],R=new Map,L=[],_=new Map,T=""},"clear");function A(t){switch(c.Rm.debug("typeStr2Type",t),t){case"[]":return"square";case"()":return c.Rm.debug("we have a round"),"round";case"(())":return"circle";case">]":return"rect_left_inv_arrow";case"{}":return"diamond";case"{{}}":return"hexagon";case"([])":return"stadium";case"[[]]":return"subroutine";case"[()]":return"cylinder";case"((()))":return"doublecircle";case"[//]":return"lean_right";case"[\\\\]":return"lean_left";case"[/\\]":return"trapezoid";case"[\\/]":return"inv_trapezoid";case"<[]>":return"block_arrow";default:return"na"}}function M(t){return c.Rm.debug("typeStr2Type",t),"=="===t?"thick":"normal"}function P(t){switch(t.trim().slice(-1)){case"x":return"arrow_cross";case"o":return"arrow_circle";case">":return"arrow_point";default:return""}}function Y(t){switch(t.trim().charAt(0)){case"x":return"arrow_cross";case"o":return"arrow_circle";case"<":return"arrow_point";default:return"arrow_open"}}function W(t){return t.includes("==")?"thick":"normal"}function X(t){return t.includes(".-")?"dotted":"solid"}(0,c.K2)(A,"typeStr2Type"),(0,c.K2)(M,"edgeTypeStr2Type"),(0,c.K2)(P,"edgeStrToEdgeData"),(0,c.K2)(Y,"edgeStrToEdgeStartData"),(0,c.K2)(W,"edgeStrToThickness"),(0,c.K2)(X,"edgeStrToPattern");var F=0,j=(0,c.K2)(()=>(F++,"id-"+Math.random().toString(36).substr(2,12)+"-"+F),"generateId"),U=(0,c.K2)(t=>{B.children=t,C(t,B),O=B.children},"setHierarchy"),H=(0,c.K2)(t=>{const e=S.get(t);return e?e.columns?e.columns:e.children?e.children.length:-1:-1},"getColumns"),Z=(0,c.K2)(()=>[...S.values()],"getBlocksFlat"),q=(0,c.K2)(()=>O||[],"getBlocks"),G=(0,c.K2)(()=>L,"getEdges"),V=(0,c.K2)(t=>S.get(t),"getBlock"),J=(0,c.K2)(t=>{S.set(t.id,t)},"setBlock"),Q=(0,c.K2)(t=>{T=t},"setDiagramId"),tt=(0,c.K2)(()=>T,"getDiagramId"),et=(0,c.K2)(()=>c.Rm,"getLogger"),rt=(0,c.K2)(function(){return R},"getClasses"),at={getConfig:(0,c.K2)(()=>(0,l.zj)().block,"getConfig"),typeStr2Type:A,edgeTypeStr2Type:M,edgeStrToEdgeData:P,edgeStrToEdgeStartData:Y,edgeStrToThickness:W,edgeStrToPattern:X,getLogger:et,getBlocksFlat:Z,getBlocks:q,getEdges:G,setHierarchy:U,getBlock:V,setBlock:J,getColumns:H,getClasses:rt,clear:z,generateId:j,setDiagramId:Q,getDiagramId:tt},it=(0,c.K2)((t,e)=>{const r=x.A,a=r(t,"r"),i=r(t,"g"),s=r(t,"b");return b.A(a,i,s,e)},"fade"),st=(0,c.K2)(t=>`.label {\n font-family: ${t.fontFamily};\n color: ${t.nodeTextColor||t.textColor};\n }\n .cluster-label text {\n fill: ${t.titleColor};\n }\n .cluster-label span,p {\n color: ${t.titleColor};\n }\n\n\n\n .label text,span,p {\n fill: ${t.nodeTextColor||t.textColor};\n color: ${t.nodeTextColor||t.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n .flowchart-label text {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n /*\n * This is for backward compatibility with existing code that didn't\n * add a \`<p>\` around edge labels.\n *\n * TODO: We should probably remove this in a future release.\n */\n p {\n margin: 0;\n padding: 0;\n display: inline;\n }\n rect {\n opacity: 0.5;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${t.edgeLabelBackground};\n }\n\n .node .cluster {\n // fill: ${it(t.mainBkg,.5)};\n fill: ${it(t.clusterBkg,.5)};\n stroke: ${it(t.clusterBorder,.2)};\n box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n .cluster span,p {\n color: ${t.titleColor};\n }\n /* .cluster div {\n color: ${t.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${t.fontFamily};\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n }\n ${(0,a.o)()}\n`,"getStyles"),nt=(0,c.K2)((t,e,r,a)=>{e.forEach(e=>{ot[e](t,r,a)})},"insertMarkers"),ot={extension:(0,c.K2)((t,e,r)=>{c.Rm.trace("Making markers for ",r),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionStart").attr("class","marker extension "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),composition:(0,c.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionStart").attr("class","marker composition "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),aggregation:(0,c.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),dependency:(0,c.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),lollipop:(0,c.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopEnd").attr("class","marker lollipop "+e).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),point:(0,c.K2)((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",6).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),circle:(0,c.K2)((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),cross:(0,c.K2)((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),barb:(0,c.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb")},lt=nt,ct=(0,l.D7)()?.block?.padding??8;function dt(t,e){if(0===t||!Number.isInteger(t))throw new Error("Columns must be an integer !== 0.");if(e<0||!Number.isInteger(e))throw new Error("Position must be a non-negative integer."+e);if(t<0)return{px:e,py:0};if(1===t)return{px:0,py:e};return{px:e%t,py:Math.floor(e/t)}}(0,c.K2)(dt,"calculateBlockPosition");var ht=(0,c.K2)(t=>{let e=0,r=0;for(const a of t.children){const{width:t,height:i,x:s,y:n}=a.size??{width:0,height:0,x:0,y:0};if(c.Rm.debug("getMaxChildSize abc95 child:",a.id,"width:",t,"height:",i,"x:",s,"y:",n,a.type),"space"===a.type)continue;const o=t/(a.widthInColumns??1);o>e&&(e=o),i>r&&(r=i)}return{width:e,height:r}},"getMaxChildSize");function gt(t,e,r=0,a=0){c.Rm.debug("setBlockSizes abc95 (start)",t.id,t?.size?.x,"block width =",t?.size,"siblingWidth",r),t?.size?.width||(t.size={width:r,height:a,x:0,y:0});let i=0,s=0;if(t.children?.length>0){for(const r of t.children)gt(r,e);const n=ht(t);i=n.width,s=n.height,c.Rm.debug("setBlockSizes abc95 maxWidth of",t.id,":s children is ",i,s);for(const e of t.children)e.size&&(c.Rm.debug(`abc95 Setting size of children of ${t.id} id=${e.id} ${i} ${s} ${JSON.stringify(e.size)}`),e.size.width=i*(e.widthInColumns??1)+ct*((e.widthInColumns??1)-1),e.size.height=s,e.size.x=0,e.size.y=0,c.Rm.debug(`abc95 updating size of ${t.id} children child:${e.id} maxWidth:${i} maxHeight:${s}`));for(const r of t.children)gt(r,e,i,s);const o=t.columns??-1;let l=0;for(const e of t.children)l+=e.widthInColumns??1;let d=t.children.length;o>0&&o<l&&(d=o);const h=Math.ceil(l/d);let g=d*(i+ct)+ct,u=h*(s+ct)+ct;if(g<r){c.Rm.debug(`Detected to small sibling: abc95 ${t.id} siblingWidth ${r} siblingHeight ${a} width ${g}`),g=r,u=a;const e=(r-d*ct-ct)/d,n=(a-h*ct-ct)/h;c.Rm.debug("Size indata abc88",t.id,"childWidth",e,"maxWidth",i),c.Rm.debug("Size indata abc88",t.id,"childHeight",n,"maxHeight",s),c.Rm.debug("Size indata abc88 xSize",d,"padding",ct);for(const r of t.children)r.size&&(r.size.width=e,r.size.height=n,r.size.x=0,r.size.y=0)}if(c.Rm.debug(`abc95 (finale calc) ${t.id} xSize ${d} ySize ${h} columns ${o}${t.children.length} width=${Math.max(g,t.size?.width||0)}`),g<(t?.size?.width||0)){g=t?.size?.width||0;const e=o>0?Math.min(t.children.length,o):t.children.length;if(e>0){const r=(g-e*ct-ct)/e;c.Rm.debug("abc95 (growing to fit) width",t.id,g,t.size?.width,r);for(const e of t.children)e.size&&(e.size.width=r)}}t.size={width:g,height:u,x:0,y:0}}c.Rm.debug("setBlockSizes abc94 (done)",t.id,t?.size?.x,t?.size?.width,t?.size?.y,t?.size?.height)}function ut(t,e){c.Rm.debug(`abc85 layout blocks (=>layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`);const r=t.columns??-1;if(c.Rm.debug("layoutBlocks columns abc95",t.id,"=>",r,t),t.children&&t.children.length>0){const a=t?.children[0]?.size?.width??0,i=t.children.length*a+(t.children.length-1)*ct;c.Rm.debug("widthOfChildren 88",i,"posX");const s=new Map;{let e=0;for(const a of t.children){if(!a.size)continue;const{py:t}=dt(r,e),i=s.get(t)??0;a.size.height>i&&s.set(t,a.size.height);let n=a?.widthInColumns??1;r>0&&(n=Math.min(n,r-e%r)),e+=n}}const n=new Map;{let t=0;const e=[...s.keys()].sort((t,e)=>t-e);for(const r of e)n.set(r,t),t+=(s.get(r)??0)+ct}let o=0;c.Rm.debug("abc91 block?.size?.x",t.id,t?.size?.x);let l=t?.size?.x?t?.size?.x+(-t?.size?.width/2||0):-ct,d=0;for(const h of t.children){const a=t;if(!h.size)continue;const{width:i,height:g}=h.size,{px:u,py:y}=dt(r,o);if(y!=d&&(d=y,l=t?.size?.x?t?.size?.x+(-t?.size?.width/2||0):-ct,c.Rm.debug("New row in layout for block",t.id," and child ",h.id,d)),c.Rm.debug(`abc89 layout blocks (child) id: ${h.id} Pos: ${o} (px, py) ${u},${y} (${a?.size?.x},${a?.size?.y}) parent: ${a.id} width: ${i}${ct}`),a.size){const t=i/2;h.size.x=l+ct+t,c.Rm.debug(`abc91 layout blocks (calc) px, pyid:${h.id} startingPos=X${l} new startingPosX${h.size.x} ${t} padding=${ct} width=${i} halfWidth=${t} => x:${h.size.x} y:${h.size.y} ${h.widthInColumns} (width * (child?.w || 1)) / 2 ${i*(h?.widthInColumns??1)/2}`),l=h.size.x+t;const e=n.get(y)??0,r=s.get(y)??g;h.size.y=a.size.y-a.size.height/2+e+r/2+ct,c.Rm.debug(`abc88 layout blocks (calc) px, pyid:${h.id}startingPosX${l}${ct}${t}=>x:${h.size.x}y:${h.size.y}${h.widthInColumns}(width * (child?.w || 1)) / 2${i*(h?.widthInColumns??1)/2}`)}h.children&&ut(h,e);let p=h?.widthInColumns??1;r>0&&(p=Math.min(p,r-o%r)),o+=p,c.Rm.debug("abc88 columnsPos",h,o)}}c.Rm.debug(`layout blocks (<==layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`)}function yt(t,{minX:e,minY:r,maxX:a,maxY:i}={minX:0,minY:0,maxX:0,maxY:0}){if(t.size&&"root"!==t.id){const{x:s,y:n,width:o,height:l}=t.size;s-o/2<e&&(e=s-o/2),n-l/2<r&&(r=n-l/2),s+o/2>a&&(a=s+o/2),n+l/2>i&&(i=n+l/2)}if(t.children)for(const s of t.children)({minX:e,minY:r,maxX:a,maxY:i}=yt(s,{minX:e,minY:r,maxX:a,maxY:i}));return{minX:e,minY:r,maxX:a,maxY:i}}function pt(t){const e=t.getBlock("root");if(!e)return;gt(e,t,0,0),ut(e,t),c.Rm.debug("getBlocks",JSON.stringify(e,null,2));const{minX:r,minY:a,maxX:i,maxY:s}=yt(e);return{x:r,y:a,width:i-r,height:s-a}}(0,c.K2)(gt,"setBlockSizes"),(0,c.K2)(ut,"layoutBlocks"),(0,c.K2)(yt,"findBounds"),(0,c.K2)(pt,"layout");var xt=(0,c.K2)(async(t,e,r,a=!1,i=!1)=>{let s=e||"";"object"==typeof s&&(s=s[0]);const o=(0,l.D7)(),c=(0,l.E)(o);return await(0,n.GZ)(t,s,{style:r,isTitle:a,useHtmlLabels:c,markdown:!1,isNode:i,width:Number.POSITIVE_INFINITY},o)},"createLabel"),bt=(0,c.K2)((t,e,r,a,i)=>{e.arrowTypeStart&&mt(t,"start",e.arrowTypeStart,r,a,i),e.arrowTypeEnd&&mt(t,"end",e.arrowTypeEnd,r,a,i)},"addEdgeMarkers"),ft={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},mt=(0,c.K2)((t,e,r,a,i,s)=>{const n=ft[r];if(!n)return void c.Rm.warn(`Unknown arrow type: ${r}`);const o="start"===e?"Start":"End";t.attr(`marker-${e}`,`url(${a}#${i}_${s}-${n}${o})`)},"addEdgeMarker"),wt={},kt={},St=(0,c.K2)(async(t,e)=>{const r=(0,l.D7)(),a=(0,l.E)(r),s=t.insert("g").attr("class","edgeLabel"),o=s.insert("g").attr("class","label"),c="markdown"===e.labelType,d=await(0,n.GZ)(t,e.label,{style:e.labelStyle,useHtmlLabels:a,addSvgBackground:c,isNode:!1,markdown:c,width:c?void 0:Number.POSITIVE_INFINITY},r);o.node().appendChild(d);let h,g=d.getBBox(),u=g;if(a){const t=d.children[0],e=(0,f.Ltv)(d);g=t.getBoundingClientRect(),u=g,e.attr("width",g.width),e.attr("height",g.height)}else{const t=(0,f.Ltv)(d).select("text").node();t&&"function"==typeof t.getBBox&&(u=t.getBBox())}if(o.attr("transform",(0,i.Wg)(u,a)),wt[e.id]=s,e.width=g.width,e.height=g.height,e.startLabelLeft){const r=t.insert("g").attr("class","edgeTerminals"),s=r.insert("g").attr("class","inner"),n=await xt(s,e.startLabelLeft,e.labelStyle);h=n;let o=n.getBBox();if(a){const t=n.children[0],e=(0,f.Ltv)(n);o=t.getBoundingClientRect(),e.attr("width",o.width),e.attr("height",o.height)}s.attr("transform",(0,i.Wg)(o,a)),kt[e.id]||(kt[e.id]={}),kt[e.id].startLeft=r,Lt(h,e.startLabelLeft)}if(e.startLabelRight){const r=t.insert("g").attr("class","edgeTerminals"),s=r.insert("g").attr("class","inner"),n=await xt(s,e.startLabelRight,e.labelStyle);h=n;let o=n.getBBox();if(a){const t=n.children[0],e=(0,f.Ltv)(n);o=t.getBoundingClientRect(),e.attr("width",o.width),e.attr("height",o.height)}s.attr("transform",(0,i.Wg)(o,a)),kt[e.id]||(kt[e.id]={}),kt[e.id].startRight=r,Lt(h,e.startLabelRight)}if(e.endLabelLeft){const r=t.insert("g").attr("class","edgeTerminals"),s=r.insert("g").attr("class","inner"),n=await xt(r,e.endLabelLeft,e.labelStyle);h=n;let o=n.getBBox();if(a){const t=n.children[0],e=(0,f.Ltv)(n);o=t.getBoundingClientRect(),e.attr("width",o.width),e.attr("height",o.height)}s.attr("transform",(0,i.Wg)(o,a)),kt[e.id]||(kt[e.id]={}),kt[e.id].endLeft=r,Lt(h,e.endLabelLeft)}if(e.endLabelRight){const r=t.insert("g").attr("class","edgeTerminals"),s=r.insert("g").attr("class","inner"),n=await xt(r,e.endLabelRight,e.labelStyle);h=n;let o=n.getBBox();if(a){const t=n.children[0],e=(0,f.Ltv)(n);o=t.getBoundingClientRect(),e.attr("width",o.width),e.attr("height",o.height)}s.attr("transform",(0,i.Wg)(o,a)),kt[e.id]||(kt[e.id]={}),kt[e.id].endRight=r,Lt(h,e.endLabelRight)}return d},"insertEdgeLabel");function Lt(t,e){(0,l.E)((0,l.D7)())&&t&&(t.style.width=9*e.length+"px",t.style.height="12px")}(0,c.K2)(Lt,"setTerminalWidth");var _t=(0,c.K2)((t,e)=>{c.Rm.debug("Moving label abc88 ",t.id,t.label,wt[t.id],e);let r=e.updatedPath?e.updatedPath:e.originalPath;const a=(0,l.D7)(),{subGraphTitleTotalMargin:i}=(0,s.O)(a);if(t.label){const a=wt[t.id];let s=t.x,n=t.y;if(r){const a=o._K.calcLabelPosition(r);c.Rm.debug("Moving label "+t.label+" from (",s,",",n,") to (",a.x,",",a.y,") abc88"),e.updatedPath&&(s=a.x,n=a.y)}a.attr("transform",`translate(${s}, ${n+i/2})`)}if(t.startLabelLeft){const e=kt[t.id].startLeft;let a=t.x,i=t.y;if(r){const e=o._K.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",r);a=e.x,i=e.y}e.attr("transform",`translate(${a}, ${i})`)}if(t.startLabelRight){const e=kt[t.id].startRight;let a=t.x,i=t.y;if(r){const e=o._K.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",r);a=e.x,i=e.y}e.attr("transform",`translate(${a}, ${i})`)}if(t.endLabelLeft){const e=kt[t.id].endLeft;let a=t.x,i=t.y;if(r){const e=o._K.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",r);a=e.x,i=e.y}e.attr("transform",`translate(${a}, ${i})`)}if(t.endLabelRight){const e=kt[t.id].endRight;let a=t.x,i=t.y;if(r){const e=o._K.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",r);a=e.x,i=e.y}e.attr("transform",`translate(${a}, ${i})`)}},"positionEdgeLabel"),Et=(0,c.K2)((t,e)=>{const r=t.x,a=t.y,i=Math.abs(e.x-r),s=Math.abs(e.y-a),n=t.width/2,o=t.height/2;return i>=n||s>=o},"outsideNode"),vt=(0,c.K2)((t,e,r)=>{c.Rm.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(e)}\n insidePoint : ${JSON.stringify(r)}\n node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);const a=t.x,i=t.y,s=Math.abs(a-r.x),n=t.width/2;let o=r.x<e.x?n-s:n+s;const l=t.height/2,d=Math.abs(e.y-r.y),h=Math.abs(e.x-r.x);if(Math.abs(i-e.y)*n>Math.abs(a-e.x)*l){let t=r.y<e.y?e.y-l-i:i-l-e.y;o=h*t/d;const a={x:r.x<e.x?r.x+o:r.x-h+o,y:r.y<e.y?r.y+d-t:r.y-d+t};return 0===o&&(a.x=e.x,a.y=e.y),0===h&&(a.x=e.x),0===d&&(a.y=e.y),c.Rm.debug(`abc89 topp/bott calc, Q ${d}, q ${t}, R ${h}, r ${o}`,a),a}{o=r.x<e.x?e.x-n-a:a-n-e.x;let t=d*o/h,i=r.x<e.x?r.x+h-o:r.x-h+o,s=r.y<e.y?r.y+t:r.y-t;return c.Rm.debug(`sides calc abc89, Q ${d}, q ${t}, R ${h}, r ${o}`,{_x:i,_y:s}),0===o&&(i=e.x,s=e.y),0===h&&(i=e.x),0===d&&(s=e.y),{x:i,y:s}}},"intersection"),Dt=(0,c.K2)((t,e)=>{c.Rm.debug("abc88 cutPathAtIntersect",t,e);let r=[],a=t[0],i=!1;return t.forEach(t=>{if(Et(e,t)||i)a=t,i||r.push(t);else{const s=vt(e,a,t);let n=!1;r.forEach(t=>{n=n||t.x===s.x&&t.y===s.y}),r.some(t=>t.x===s.x&&t.y===s.y)||r.push(s),i=!0}}),r},"cutPathAtIntersect"),Rt=(0,c.K2)(function(t,e,r,a,s,n,o){let d=r.points;c.Rm.debug("abc88 InsertEdge: edge=",r,"e=",e);let h=!1;const g=n.node(e.v);var u=n.node(e.w);u?.intersect&&g?.intersect&&(d=d.slice(1,r.points.length-1),d.unshift(g.intersect(d[0])),d.push(u.intersect(d[d.length-1]))),r.toCluster&&(c.Rm.debug("to cluster abc88",a[r.toCluster]),d=Dt(r.points,a[r.toCluster].node),h=!0),r.fromCluster&&(c.Rm.debug("from cluster abc88",a[r.fromCluster]),d=Dt(d.reverse(),a[r.fromCluster].node).reverse(),h=!0);const y=d.filter(t=>!Number.isNaN(t.y));let p=f.qrM;!r.curve||"graph"!==s&&"flowchart"!==s||(p=r.curve);const{x:x,y:b}=(0,i.RI)(r),m=(0,f.n8j)().x(x).y(b).curve(p);let w;switch(r.thickness){case"normal":w="edge-thickness-normal";break;case"thick":case"invisible":w="edge-thickness-thick";break;default:w=""}switch(r.pattern){case"solid":w+=" edge-pattern-solid";break;case"dotted":w+=" edge-pattern-dotted";break;case"dashed":w+=" edge-pattern-dashed"}const k=t.append("path").attr("d",m(y)).attr("id",r.id).attr("class"," "+w+(r.classes?" "+r.classes:"")).attr("style",r.style);let S="";((0,l.D7)().flowchart.arrowMarkerAbsolute||(0,l.D7)().state.arrowMarkerAbsolute)&&(S=(0,l.ID)(!0)),bt(k,r,S,o,s);let L={};return h&&(L.updatedPath=d),L.originalPath=r.points,L},"insertEdge"),Tt=(0,c.K2)(t=>{const e=new Set;for(const r of t)switch(r){case"x":e.add("right"),e.add("left");break;case"y":e.add("up"),e.add("down");break;default:e.add(r)}return e},"expandAndDeduplicateDirections"),$t=(0,c.K2)((t,e,r,a)=>{const i=Tt(t),s=e.height+2*r.padding,n=s/2,o=a??e.width+2*n+r.padding,l=r.padding/2;return i.has("right")&&i.has("left")&&i.has("up")&&i.has("down")?[{x:0,y:0},{x:n,y:0},{x:o/2,y:2*l},{x:o-n,y:0},{x:o,y:0},{x:o,y:-s/3},{x:o+2*l,y:-s/2},{x:o,y:-2*s/3},{x:o,y:-s},{x:o-n,y:-s},{x:o/2,y:-s-2*l},{x:n,y:-s},{x:0,y:-s},{x:0,y:-2*s/3},{x:-2*l,y:-s/2},{x:0,y:-s/3}]:i.has("right")&&i.has("left")&&i.has("up")?[{x:n,y:0},{x:o-n,y:0},{x:o,y:-s/2},{x:o-n,y:-s},{x:n,y:-s},{x:0,y:-s/2}]:i.has("right")&&i.has("left")&&i.has("down")?[{x:0,y:0},{x:n,y:-s},{x:o-n,y:-s},{x:o,y:0}]:i.has("right")&&i.has("up")&&i.has("down")?[{x:0,y:0},{x:o,y:-n},{x:o,y:-s+n},{x:0,y:-s}]:i.has("left")&&i.has("up")&&i.has("down")?[{x:o,y:0},{x:0,y:-n},{x:0,y:-s+n},{x:o,y:-s}]:i.has("right")&&i.has("left")?[{x:n,y:0},{x:n,y:-l},{x:o-n,y:-l},{x:o-n,y:0},{x:o,y:-s/2},{x:o-n,y:-s},{x:o-n,y:-s+l},{x:n,y:-s+l},{x:n,y:-s},{x:0,y:-s/2}]:i.has("up")&&i.has("down")?[{x:o/2,y:0},{x:0,y:-l},{x:n,y:-l},{x:n,y:-s+l},{x:0,y:-s+l},{x:o/2,y:-s},{x:o,y:-s+l},{x:o-n,y:-s+l},{x:o-n,y:-l},{x:o,y:-l}]:i.has("right")&&i.has("up")?[{x:0,y:0},{x:o,y:-n},{x:0,y:-s}]:i.has("right")&&i.has("down")?[{x:0,y:0},{x:o,y:0},{x:0,y:-s}]:i.has("left")&&i.has("up")?[{x:o,y:0},{x:0,y:-n},{x:o,y:-s}]:i.has("left")&&i.has("down")?[{x:o,y:0},{x:0,y:0},{x:o,y:-s}]:i.has("right")?[{x:n,y:-l},{x:n,y:-l},{x:o-n,y:-l},{x:o-n,y:0},{x:o,y:-s/2},{x:o-n,y:-s},{x:o-n,y:-s+l},{x:n,y:-s+l},{x:n,y:-s+l}]:i.has("left")?[{x:n,y:0},{x:n,y:-l},{x:o-n,y:-l},{x:o-n,y:-s+l},{x:n,y:-s+l},{x:n,y:-s},{x:0,y:-s/2}]:i.has("up")?[{x:n,y:-l},{x:n,y:-s+l},{x:0,y:-s+l},{x:o/2,y:-s},{x:o,y:-s+l},{x:o-n,y:-s+l},{x:o-n,y:-l}]:i.has("down")?[{x:o/2,y:0},{x:0,y:-l},{x:n,y:-l},{x:n,y:-s+l},{x:o-n,y:-s+l},{x:o-n,y:-l},{x:o,y:-l}]:[{x:0,y:0}]},"getArrowPoints");function Kt(t,e){return t.intersect(e)}(0,c.K2)(Kt,"intersectNode");var It=Kt;function Nt(t,e,r,a){var i=t.x,s=t.y,n=i-a.x,o=s-a.y,l=Math.sqrt(e*e*o*o+r*r*n*n),c=Math.abs(e*r*n/l);a.x<i&&(c=-c);var d=Math.abs(e*r*o/l);return a.y<s&&(d=-d),{x:i+c,y:s+d}}(0,c.K2)(Nt,"intersectEllipse");var Ct=Nt;function Ot(t,e,r){return Ct(t,e,e,r)}(0,c.K2)(Ot,"intersectCircle");var Bt=Ot;function zt(t,e,r,a){var i,s,n,o,l,c,d,h,g,u,y,p,x;if(i=e.y-t.y,n=t.x-e.x,l=e.x*t.y-t.x*e.y,g=i*r.x+n*r.y+l,u=i*a.x+n*a.y+l,!(0!==g&&0!==u&&At(g,u)||(s=a.y-r.y,o=r.x-a.x,c=a.x*r.y-r.x*a.y,d=s*t.x+o*t.y+c,h=s*e.x+o*e.y+c,0!==d&&0!==h&&At(d,h)||0===(y=i*o-s*n))))return p=Math.abs(y/2),{x:(x=n*c-o*l)<0?(x-p)/y:(x+p)/y,y:(x=s*l-i*c)<0?(x-p)/y:(x+p)/y}}function At(t,e){return t*e>0}(0,c.K2)(zt,"intersectLine"),(0,c.K2)(At,"sameSign");var Mt=zt,Pt=Yt;function Yt(t,e,r){var a=t.x,i=t.y,s=[],n=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY;"function"==typeof e.forEach?e.forEach(function(t){n=Math.min(n,t.x),o=Math.min(o,t.y)}):(n=Math.min(n,e.x),o=Math.min(o,e.y));for(var l=a-t.width/2-n,c=i-t.height/2-o,d=0;d<e.length;d++){var h=e[d],g=e[d<e.length-1?d+1:0],u=Mt(t,r,{x:l+h.x,y:c+h.y},{x:l+g.x,y:c+g.y});u&&s.push(u)}return s.length?(s.length>1&&s.sort(function(t,e){var a=t.x-r.x,i=t.y-r.y,s=Math.sqrt(a*a+i*i),n=e.x-r.x,o=e.y-r.y,l=Math.sqrt(n*n+o*o);return s<l?-1:s===l?0:1}),s[0]):t}(0,c.K2)(Yt,"intersectPolygon");var Wt={node:It,circle:Bt,ellipse:Ct,polygon:Pt,rect:(0,c.K2)((t,e)=>{var r,a,i=t.x,s=t.y,n=e.x-i,o=e.y-s,l=t.width/2,c=t.height/2;return Math.abs(o)*l>Math.abs(n)*c?(o<0&&(c=-c),r=0===o?0:c*n/o,a=c):(n<0&&(l=-l),r=l,a=0===n?0:l*o/n),{x:i+r,y:s+a}},"intersectRect")},Xt=(0,c.K2)(async(t,e,r,a)=>{const i=(0,l.D7)();let c;const d=e.useHtmlLabels||(0,l.E)(i);c=r||"node default";const h=t.insert("g").attr("class",c).attr("id",e.domId||e.id),g=h.insert("g").attr("class","label").attr("style",e.labelStyle);let u,y;u=void 0===e.labelText?"":"string"==typeof e.labelText?e.labelText:e.labelText[0],y="markdown"===e.labelType?(0,n.GZ)(g,(0,l.jZ)((0,o.Sm)(u),i),{useHtmlLabels:d,width:e.width||i.flowchart.wrappingWidth,classes:"markdown-node-label"},i):await xt(g,(0,l.jZ)((0,o.Sm)(u),i),e.labelStyle,!1,a);let p=y.getBBox();const x=e.padding/2;if((0,l.E)(i)){const t=y.children[0],e=(0,f.Ltv)(y);await(0,s.X)(t,u),p=t.getBoundingClientRect(),e.attr("width",p.width),e.attr("height",p.height)}return d?g.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"):g.attr("transform","translate(0, "+-p.height/2+")"),e.centerLabel&&g.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),g.insert("rect",":first-child"),{shapeSvg:h,bbox:p,halfPadding:x,label:g}},"labelHelper"),Ft=(0,c.K2)((t,e)=>{const r=e.node().getBBox();t.width=r.width,t.height=r.height},"updateNodeBounds");function jt(t,e,r,a){return t.insert("polygon",":first-child").attr("points",a.map(function(t){return t.x+","+t.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+r/2+")")}(0,c.K2)(jt,"insertPolygonShape");var Ut=(0,c.K2)(async(t,e)=>{e.useHtmlLabels||(0,l.E)((0,l.D7)())||(e.centerLabel=!0);const{shapeSvg:r,bbox:a,halfPadding:i}=await Xt(t,e,"node "+e.classes,!0);c.Rm.info("Classes = ",e.classes);const s=r.insert("rect",":first-child");return s.attr("rx",e.rx).attr("ry",e.ry).attr("x",-a.width/2-i).attr("y",-a.height/2-i).attr("width",a.width+e.padding).attr("height",a.height+e.padding),Ft(e,s),e.intersect=function(t){return Wt.rect(e,t)},r},"note"),Ht=(0,c.K2)(t=>t?" "+t:"","formatClass"),Zt=(0,c.K2)((t,e)=>`${e||"node default"}${Ht(t.classes)} ${Ht(t.class)}`,"getClassesFromNode"),qt=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await Xt(t,e,Zt(e,void 0),!0),i=a.width+e.padding+(a.height+e.padding),s=[{x:i/2,y:0},{x:i,y:-i/2},{x:i/2,y:-i},{x:0,y:-i/2}];c.Rm.info("Question main (Circle)");const n=jt(r,i,i,s);return n.attr("style",e.style),Ft(e,n),e.intersect=function(t){return c.Rm.warn("Intersect called"),Wt.polygon(e,s,t)},r},"question"),Gt=(0,c.K2)((t,e)=>{const r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),a=[{x:0,y:14},{x:14,y:0},{x:0,y:-14},{x:-14,y:0}];return r.insert("polygon",":first-child").attr("points",a.map(function(t){return t.x+","+t.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),e.width=28,e.height=28,e.intersect=function(t){return Wt.circle(e,14,t)},r},"choice"),Vt=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await Xt(t,e,Zt(e,void 0),!0),i=e.positioned?e.height:a.height+e.padding,s=i/4,n=e.positioned?e.width:a.width+2*s+e.padding,o=[{x:s,y:0},{x:n-s,y:0},{x:n,y:-i/2},{x:n-s,y:-i},{x:s,y:-i},{x:0,y:-i/2}],l=jt(r,n,i,o);return l.attr("style",e.style),Ft(e,l),e.intersect=function(t){return Wt.polygon(e,o,t)},r},"hexagon"),Jt=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await Xt(t,e,void 0,!0),i=a.height+2*e.padding,s=i/2,n=a.width+2*s+e.padding,o=e.positioned&&(e.widthInColumns??1)>1&&e.width>n?e.width:n,l=$t(e.directions,a,e,o),c=jt(r,o,i,l);return c.attr("style",e.style),Ft(e,c),e.intersect=function(t){return Wt.polygon(e,l,t)},r},"block_arrow"),Qt=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await Xt(t,e,Zt(e,void 0),!0),i=a.width+e.padding,s=a.height+e.padding,n=[{x:-s/2,y:0},{x:i,y:0},{x:i,y:-s},{x:-s/2,y:-s},{x:0,y:-s/2}];return jt(r,i,s,n).attr("style",e.style),e.width=i+s,e.height=s,e.intersect=function(t){return Wt.polygon(e,n,t)},r},"rect_left_inv_arrow"),te=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await Xt(t,e,Zt(e),!0),i=a.width+e.padding,s=a.height+e.padding,n=[{x:-2*s/6,y:0},{x:i-s/6,y:0},{x:i+2*s/6,y:-s},{x:s/6,y:-s}],o=jt(r,i,s,n);return o.attr("style",e.style),Ft(e,o),e.intersect=function(t){return Wt.polygon(e,n,t)},r},"lean_right"),ee=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await Xt(t,e,Zt(e,void 0),!0),i=a.width+e.padding,s=a.height+e.padding,n=[{x:2*s/6,y:0},{x:i+s/6,y:0},{x:i-2*s/6,y:-s},{x:-s/6,y:-s}],o=jt(r,i,s,n);return o.attr("style",e.style),Ft(e,o),e.intersect=function(t){return Wt.polygon(e,n,t)},r},"lean_left"),re=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await Xt(t,e,Zt(e,void 0),!0),i=a.width+e.padding,s=a.height+e.padding,n=[{x:-2*s/6,y:0},{x:i+2*s/6,y:0},{x:i-s/6,y:-s},{x:s/6,y:-s}],o=jt(r,i,s,n);return o.attr("style",e.style),Ft(e,o),e.intersect=function(t){return Wt.polygon(e,n,t)},r},"trapezoid"),ae=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await Xt(t,e,Zt(e,void 0),!0),i=a.width+e.padding,s=a.height+e.padding,n=[{x:s/6,y:0},{x:i-s/6,y:0},{x:i+2*s/6,y:-s},{x:-2*s/6,y:-s}],o=jt(r,i,s,n);return o.attr("style",e.style),Ft(e,o),e.intersect=function(t){return Wt.polygon(e,n,t)},r},"inv_trapezoid"),ie=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await Xt(t,e,Zt(e,void 0),!0),i=a.width+e.padding,s=a.height+e.padding,n=[{x:0,y:0},{x:i+s/2,y:0},{x:i,y:-s/2},{x:i+s/2,y:-s},{x:0,y:-s}],o=jt(r,i,s,n);return o.attr("style",e.style),Ft(e,o),e.intersect=function(t){return Wt.polygon(e,n,t)},r},"rect_right_inv_arrow"),se=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await Xt(t,e,Zt(e,void 0),!0),i=a.width+e.padding,s=i/2,n=s/(2.5+i/50),o=a.height+n+e.padding,l="M 0,"+n+" a "+s+","+n+" 0,0,0 "+i+" 0 a "+s+","+n+" 0,0,0 "+-i+" 0 l 0,"+o+" a "+s+","+n+" 0,0,0 "+i+" 0 l 0,"+-o,c=r.attr("label-offset-y",n).insert("path",":first-child").attr("style",e.style).attr("d",l).attr("transform","translate("+-i/2+","+-(o/2+n)+")");return Ft(e,c),e.intersect=function(t){const r=Wt.rect(e,t),a=r.x-e.x;if(0!=s&&(Math.abs(a)<e.width/2||Math.abs(a)==e.width/2&&Math.abs(r.y-e.y)>e.height/2-n)){let i=n*n*(1-a*a/(s*s));0!=i&&(i=Math.sqrt(i)),i=n-i,t.y-e.y>0&&(i=-i),r.y+=i}return r},r},"cylinder"),ne=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a,halfPadding:i}=await Xt(t,e,"node "+e.classes+" "+e.class,!0),s=r.insert("rect",":first-child"),n=e.positioned?e.width:a.width+e.padding,o=e.positioned?e.height:a.height+e.padding,l=e.positioned?-n/2:-a.width/2-i,d=e.positioned?-o/2:-a.height/2-i;if(s.attr("class","basic label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",l).attr("y",d).attr("width",n).attr("height",o),e.props){const t=new Set(Object.keys(e.props));e.props.borders&&(ce(s,e.props.borders,n,o),t.delete("borders")),t.forEach(t=>{c.Rm.warn(`Unknown node property ${t}`)})}return Ft(e,s),e.intersect=function(t){return Wt.rect(e,t)},r},"rect"),oe=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a,halfPadding:i}=await Xt(t,e,"node "+e.classes,!0),s=r.insert("rect",":first-child"),n=e.positioned?e.width:a.width+e.padding,o=e.positioned?e.height:a.height+e.padding,l=e.positioned?-n/2:-a.width/2-i,d=e.positioned?-o/2:-a.height/2-i;if(s.attr("class","basic cluster composite label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",l).attr("y",d).attr("width",n).attr("height",o),e.props){const t=new Set(Object.keys(e.props));e.props.borders&&(ce(s,e.props.borders,n,o),t.delete("borders")),t.forEach(t=>{c.Rm.warn(`Unknown node property ${t}`)})}return Ft(e,s),e.intersect=function(t){return Wt.rect(e,t)},r},"composite"),le=(0,c.K2)(async(t,e)=>{const{shapeSvg:r}=await Xt(t,e,"label",!0);c.Rm.trace("Classes = ",e.class);const a=r.insert("rect",":first-child");if(a.attr("width",0).attr("height",0),r.attr("class","label edgeLabel"),e.props){const t=new Set(Object.keys(e.props));e.props.borders&&(ce(a,e.props.borders,0,0),t.delete("borders")),t.forEach(t=>{c.Rm.warn(`Unknown node property ${t}`)})}return Ft(e,a),e.intersect=function(t){return Wt.rect(e,t)},r},"labelRect");function ce(t,e,r,a){const i=[],s=(0,c.K2)(t=>{i.push(t,0)},"addBorder"),n=(0,c.K2)(t=>{i.push(0,t)},"skipBorder");e.includes("t")?(c.Rm.debug("add top border"),s(r)):n(r),e.includes("r")?(c.Rm.debug("add right border"),s(a)):n(a),e.includes("b")?(c.Rm.debug("add bottom border"),s(r)):n(r),e.includes("l")?(c.Rm.debug("add left border"),s(a)):n(a),t.attr("stroke-dasharray",i.join(" "))}(0,c.K2)(ce,"applyNodePropertyBorders");var de=(0,c.K2)(async(t,e)=>{let r;r=e.classes?"node "+e.classes:"node default";const a=t.insert("g").attr("class",r).attr("id",e.domId||e.id),i=a.insert("rect",":first-child"),s=a.insert("line"),n=a.insert("g").attr("class","label"),o=e.labelText.flat?e.labelText.flat():e.labelText;let d="";d="object"==typeof o?o[0]:o,c.Rm.info("Label text abc79",d,o,"object"==typeof o);const h=await xt(n,d,e.labelStyle,!0,!0);let g={width:0,height:0};if((0,l.E)((0,l.D7)())){const t=h.children[0],e=(0,f.Ltv)(h);g=t.getBoundingClientRect(),e.attr("width",g.width),e.attr("height",g.height)}c.Rm.info("Text 2",o);const u=o.slice(1,o.length);let y=h.getBBox();const p=await xt(n,u.join?u.join("<br/>"):u,e.labelStyle,!0,!0);if((0,l.E)((0,l.D7)())){const t=p.children[0],e=(0,f.Ltv)(p);g=t.getBoundingClientRect(),e.attr("width",g.width),e.attr("height",g.height)}const x=e.padding/2;return(0,f.Ltv)(p).attr("transform","translate( "+(g.width>y.width?0:(y.width-g.width)/2)+", "+(y.height+x+5)+")"),(0,f.Ltv)(h).attr("transform","translate( "+(g.width<y.width?0:-(y.width-g.width)/2)+", 0)"),g=n.node().getBBox(),n.attr("transform","translate("+-g.width/2+", "+(-g.height/2-x+3)+")"),i.attr("class","outer title-state").attr("x",-g.width/2-x).attr("y",-g.height/2-x).attr("width",g.width+e.padding).attr("height",g.height+e.padding),s.attr("class","divider").attr("x1",-g.width/2-x).attr("x2",g.width/2+x).attr("y1",-g.height/2-x+y.height+x).attr("y2",-g.height/2-x+y.height+x),Ft(e,i),e.intersect=function(t){return Wt.rect(e,t)},a},"rectWithTitle"),he=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await Xt(t,e,Zt(e,void 0),!0),i=a.height+e.padding,s=a.width+i/4+e.padding,n=r.insert("rect",":first-child").attr("style",e.style).attr("rx",i/2).attr("ry",i/2).attr("x",-s/2).attr("y",-i/2).attr("width",s).attr("height",i);return Ft(e,n),e.intersect=function(t){return Wt.rect(e,t)},r},"stadium"),ge=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a,halfPadding:i}=await Xt(t,e,Zt(e,void 0),!0),s=r.insert("circle",":first-child");return s.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",a.width/2+i).attr("width",a.width+e.padding).attr("height",a.height+e.padding),c.Rm.info("Circle main"),Ft(e,s),e.intersect=function(t){return c.Rm.info("Circle intersect",e,a.width/2+i,t),Wt.circle(e,a.width/2+i,t)},r},"circle"),ue=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a,halfPadding:i}=await Xt(t,e,Zt(e,void 0),!0),s=r.insert("g",":first-child"),n=s.insert("circle"),o=s.insert("circle");return s.attr("class",e.class),n.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",a.width/2+i+5).attr("width",a.width+e.padding+10).attr("height",a.height+e.padding+10),o.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",a.width/2+i).attr("width",a.width+e.padding).attr("height",a.height+e.padding),c.Rm.info("DoubleCircle main"),Ft(e,n),e.intersect=function(t){return c.Rm.info("DoubleCircle intersect",e,a.width/2+i+5,t),Wt.circle(e,a.width/2+i+5,t)},r},"doublecircle"),ye=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await Xt(t,e,Zt(e,void 0),!0),i=a.width+e.padding,s=a.height+e.padding,n=[{x:0,y:0},{x:i,y:0},{x:i,y:-s},{x:0,y:-s},{x:0,y:0},{x:-8,y:0},{x:i+8,y:0},{x:i+8,y:-s},{x:-8,y:-s},{x:-8,y:0}],o=jt(r,i,s,n);return o.attr("style",e.style),Ft(e,o),e.intersect=function(t){return Wt.polygon(e,n,t)},r},"subroutine"),pe=(0,c.K2)((t,e)=>{const r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),a=r.insert("circle",":first-child");return a.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),Ft(e,a),e.intersect=function(t){return Wt.circle(e,7,t)},r},"start"),xe=(0,c.K2)((t,e,r)=>{const a=t.insert("g").attr("class","node default").attr("id",e.domId||e.id);let i=70,s=10;"LR"===r&&(i=10,s=70);const n=a.append("rect").attr("x",-1*i/2).attr("y",-1*s/2).attr("width",i).attr("height",s).attr("class","fork-join");return Ft(e,n),e.height=e.height+e.padding/2,e.width=e.width+e.padding/2,e.intersect=function(t){return Wt.rect(e,t)},a},"forkJoin"),be={rhombus:qt,composite:oe,question:qt,rect:ne,labelRect:le,rectWithTitle:de,choice:Gt,circle:ge,doublecircle:ue,stadium:he,hexagon:Vt,block_arrow:Jt,rect_left_inv_arrow:Qt,lean_right:te,lean_left:ee,trapezoid:re,inv_trapezoid:ae,rect_right_inv_arrow:ie,cylinder:se,start:pe,end:(0,c.K2)((t,e)=>{const r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),a=r.insert("circle",":first-child"),i=r.insert("circle",":first-child");return i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),a.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),Ft(e,i),e.intersect=function(t){return Wt.circle(e,7,t)},r},"end"),note:Ut,subroutine:ye,fork:xe,join:xe,class_box:(0,c.K2)(async(t,e)=>{const r=e.padding/2;let a;a=e.classes?"node "+e.classes:"node default";const i=t.insert("g").attr("class",a).attr("id",e.domId||e.id),s=i.insert("rect",":first-child"),n=i.insert("line"),o=i.insert("line");let c=0,d=4;const h=i.insert("g").attr("class","label");let g=0;const u=e.classData.annotations?.[0],y=e.classData.annotations[0]?"\xab"+e.classData.annotations[0]+"\xbb":"",p=await xt(h,y,e.labelStyle,!0,!0);let x=p.getBBox();if((0,l.E)((0,l.D7)())){const t=p.children[0],e=(0,f.Ltv)(p);x=t.getBoundingClientRect(),e.attr("width",x.width),e.attr("height",x.height)}e.classData.annotations[0]&&(d+=x.height+4,c+=x.width);let b=e.classData.label;void 0!==e.classData.type&&""!==e.classData.type&&((0,l.E)((0,l.D7)())?b+="<"+e.classData.type+">":b+="<"+e.classData.type+">");const m=await xt(h,b,e.labelStyle,!0,!0);(0,f.Ltv)(m).attr("class","classTitle");let w=m.getBBox();if((0,l.E)((0,l.D7)())){const t=m.children[0],e=(0,f.Ltv)(m);w=t.getBoundingClientRect(),e.attr("width",w.width),e.attr("height",w.height)}d+=w.height+4,w.width>c&&(c=w.width);const k=[];e.classData.members.forEach(async t=>{const r=t.getDisplayDetails();let a=r.displayText;(0,l.E)((0,l.D7)())&&(a=a.replace(/</g,"<").replace(/>/g,">"));const i=await xt(h,a,r.cssStyle?r.cssStyle:e.labelStyle,!0,!0);let s=i.getBBox();if((0,l.E)((0,l.D7)())){const t=i.children[0],e=(0,f.Ltv)(i);s=t.getBoundingClientRect(),e.attr("width",s.width),e.attr("height",s.height)}s.width>c&&(c=s.width),d+=s.height+4,k.push(i)}),d+=8;const S=[];if(e.classData.methods.forEach(async t=>{const r=t.getDisplayDetails();let a=r.displayText;(0,l.E)((0,l.D7)())&&(a=a.replace(/</g,"<").replace(/>/g,">"));const i=await xt(h,a,r.cssStyle?r.cssStyle:e.labelStyle,!0,!0);let s=i.getBBox();if((0,l.E)((0,l.D7)())){const t=i.children[0],e=(0,f.Ltv)(i);s=t.getBoundingClientRect(),e.attr("width",s.width),e.attr("height",s.height)}s.width>c&&(c=s.width),d+=s.height+4,S.push(i)}),d+=8,u){let t=(c-x.width)/2;(0,f.Ltv)(p).attr("transform","translate( "+(-1*c/2+t)+", "+-1*d/2+")"),g=x.height+4}let L=(c-w.width)/2;return(0,f.Ltv)(m).attr("transform","translate( "+(-1*c/2+L)+", "+(-1*d/2+g)+")"),g+=w.height+4,n.attr("class","divider").attr("x1",-c/2-r).attr("x2",c/2+r).attr("y1",-d/2-r+8+g).attr("y2",-d/2-r+8+g),g+=8,k.forEach(t=>{(0,f.Ltv)(t).attr("transform","translate( "+-c/2+", "+(-1*d/2+g+4)+")");const e=t?.getBBox();g+=(e?.height??0)+4}),g+=8,o.attr("class","divider").attr("x1",-c/2-r).attr("x2",c/2+r).attr("y1",-d/2-r+8+g).attr("y2",-d/2-r+8+g),g+=8,S.forEach(t=>{(0,f.Ltv)(t).attr("transform","translate( "+-c/2+", "+(-1*d/2+g)+")");const e=t?.getBBox();g+=(e?.height??0)+4}),s.attr("style",e.style).attr("class","outer title-state").attr("x",-c/2-r).attr("y",-d/2-r).attr("width",c+e.padding).attr("height",d+e.padding),Ft(e,s),e.intersect=function(t){return Wt.rect(e,t)},i},"class_box")},fe={},me=(0,c.K2)(async(t,e,r)=>{let a,i;if(e.link){let s;"sandbox"===(0,l.D7)().securityLevel?s="_top":e.linkTarget&&(s=e.linkTarget||"_blank"),a=t.insert("svg:a").attr("xlink:href",e.link).attr("target",s),i=await be[e.shape](a,e,r)}else i=await be[e.shape](t,e,r),a=i;return e.tooltip&&i.attr("title",e.tooltip),e.class&&i.attr("class","node default "+e.class),fe[e.id]=a,e.haveCallback&&fe[e.id].attr("class",fe[e.id].attr("class")+" clickable"),a},"insertNode"),we=(0,c.K2)(t=>{const e=fe[t.id];c.Rm.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");const r=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+r-t.width/2)+", "+(t.y-t.height/2-8)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),r},"positionNode");function ke(t,e,r=!1){const a=t;let i="default";(a?.classes?.length||0)>0&&(i=(a?.classes??[]).join(" ")),i+=" flowchart-label";let s,n=0,c="";switch(a.type){case"round":n=5,c="rect";break;case"composite":n=0,c="composite",s=0;break;case"square":case"group":default:c="rect";break;case"diamond":c="question";break;case"hexagon":c="hexagon";break;case"block_arrow":c="block_arrow";break;case"odd":case"rect_left_inv_arrow":c="rect_left_inv_arrow";break;case"lean_right":c="lean_right";break;case"lean_left":c="lean_left";break;case"trapezoid":c="trapezoid";break;case"inv_trapezoid":c="inv_trapezoid";break;case"circle":c="circle";break;case"ellipse":c="ellipse";break;case"stadium":c="stadium";break;case"subroutine":c="subroutine";break;case"cylinder":c="cylinder";break;case"doublecircle":c="doublecircle"}const d=(0,o.sM)(a?.styles??[]),h=a.label,g=a.size??{width:0,height:0,x:0,y:0},u=e.getDiagramId();return{labelStyle:d.labelStyle,shape:c,labelText:h,rx:n,ry:n,class:i,style:d.style,id:a.id,domId:u?`${u}-${a.id}`:a.id,directions:a.directions,width:g.width,height:g.height,x:g.x,y:g.y,positioned:r,intersect:void 0,type:a.type,padding:s??(0,l.zj)()?.block?.padding??0,widthInColumns:a.widthInColumns??1}}async function Se(t,e,r){const a=ke(e,r,!1);if("group"===a.type)return;const i=(0,l.zj)(),s=await me(t,a,{config:i}),n=s.node().getBBox(),o=r.getBlock(a.id);o.size={width:n.width,height:n.height,x:0,y:0,node:s},r.setBlock(o),s.remove()}async function Le(t,e,r){const a=ke(e,r,!0);if("space"!==r.getBlock(a.id).type){const r=(0,l.zj)();await me(t,a,{config:r}),e.intersect=a?.intersect,we(a)}}async function _e(t,e,r,a){for(const i of e)await a(t,i,r),i.children&&await _e(t,i.children,r,a)}async function Ee(t,e,r){await _e(t,e,r,Se)}async function ve(t,e,r){await _e(t,e,r,Le)}async function De(t,e,r,a,i){const s=new m.T({multigraph:!0,compound:!0});s.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(const n of r)n.size&&s.setNode(n.id,{width:n.size.width,height:n.size.height,intersect:n.intersect});for(const n of e)if(n.start&&n.end){const e=a.getBlock(n.start),r=a.getBlock(n.end);if(e?.size&&r?.size){const a=e.size,o=r.size,l=[{x:a.x,y:a.y},{x:a.x+(o.x-a.x)/2,y:a.y+(o.y-a.y)/2},{x:o.x,y:o.y}],c=i?`${i}-${n.id}`:n.id,d=`${"thick"===n.thickness?"edge-thickness-thick":"edge-thickness-normal"} ${"dotted"===n.pattern?"edge-pattern-dotted":"edge-pattern-solid"} flowchart-link LS-a1 LE-b1`;Rt(t,{v:n.start,w:n.end,name:c},{...n,id:c,arrowTypeEnd:n.arrowTypeEnd,arrowTypeStart:n.arrowTypeStart,points:l,classes:d},void 0,"block",s,i),n.label&&(await St(t,{...n,label:n.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:n.arrowTypeEnd,arrowTypeStart:n.arrowTypeStart,points:l,classes:d}),_t({...n,x:l[1].x,y:l[1].y},{originalPath:l}))}}}(0,c.K2)(ke,"getNodeFromBlock"),(0,c.K2)(Se,"calculateBlockSize"),(0,c.K2)(Le,"insertBlockPositioned"),(0,c.K2)(_e,"performOperations"),(0,c.K2)(Ee,"calculateBlockSizes"),(0,c.K2)(ve,"insertBlocks"),(0,c.K2)(De,"insertEdges");var Re=(0,c.K2)(function(t,e){return e.db.getClasses()},"getClasses"),Te={parser:k,db:at,renderer:{draw:(0,c.K2)(async function(t,e,r,a){const{securityLevel:i,block:s}=(0,l.zj)(),n=a.db;let o;n.setDiagramId(e),"sandbox"===i&&(o=(0,f.Ltv)("#i"+e));const d="sandbox"===i?(0,f.Ltv)(o.nodes()[0].contentDocument.body):(0,f.Ltv)("body"),h="sandbox"===i?d.select(`[id="${e}"]`):(0,f.Ltv)(`[id="${e}"]`);lt(h,["point","circle","cross"],a.type,e);const g=n.getBlocks(),u=n.getBlocksFlat(),y=n.getEdges(),p=h.insert("g").attr("class","block");await Ee(p,g,n);const x=pt(n);if(await ve(p,g,n),await De(p,y,u,n,e),x){const t=x,e=Math.max(1,Math.round(t.width/t.height*.125)),r=t.height+e+10,a=t.width+10,{useMaxWidth:i}=s;(0,l.a$)(h,r,a,!!i),c.Rm.debug("Here Bounds",x,t),h.attr("viewBox",`${t.x-5} ${t.y-5} ${t.width+10} ${t.height+10}`)}},"draw"),getClasses:Re},styles:st}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/3872.f1271916.js b/docs/build/assets/js/3872.f1271916.js deleted file mode 100644 index 9caff9e37..000000000 --- a/docs/build/assets/js/3872.f1271916.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[3872],{3872(a,s,c){c.d(s,{createRadarServices:()=>e.f});var e=c(5160);c(9302)}}]); \ No newline at end of file diff --git a/docs/build/assets/js/3923.5f9e9fdc.js b/docs/build/assets/js/3923.5f9e9fdc.js deleted file mode 100644 index dbc456f48..000000000 --- a/docs/build/assets/js/3923.5f9e9fdc.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see 3923.5f9e9fdc.js.LICENSE.txt */ -(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[3923],{9119(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BLANK_URL=e.relativeFirstCharacters=e.whitespaceEscapeCharsRegex=e.urlSchemeRegex=e.ctrlCharactersRegex=e.htmlCtrlEntityRegex=e.htmlEntitiesRegex=e.invalidProtocolRegex=void 0,e.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im,e.htmlEntitiesRegex=/&#(\w+)(^\w|;)?/g,e.htmlCtrlEntityRegex=/&(newline|tab);/gi,e.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,e.urlSchemeRegex=/^.+(:|:)/gim,e.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g,e.relativeFirstCharacters=[".","/"],e.BLANK_URL="about:blank"},6750(t,e,r){"use strict";e.J=function(t){if(!t)return i.BLANK_URL;var e,r=n(t.trim());do{e=(r=n(r=o(r).replace(i.htmlCtrlEntityRegex,"").replace(i.ctrlCharactersRegex,"").replace(i.whitespaceEscapeCharsRegex,"").trim())).match(i.ctrlCharactersRegex)||r.match(i.htmlEntitiesRegex)||r.match(i.htmlCtrlEntityRegex)||r.match(i.whitespaceEscapeCharsRegex)}while(e&&e.length>0);var a=r;if(!a)return i.BLANK_URL;if(function(t){return i.relativeFirstCharacters.indexOf(t[0])>-1}(a))return a;var s=a.trimStart(),l=s.match(i.urlSchemeRegex);if(!l)return a;var h=l[0].toLowerCase().trim();if(i.invalidProtocolRegex.test(h))return i.BLANK_URL;var c=s.replace(/\\/g,"/");if("mailto:"===h||h.includes("://"))return c;if("http:"===h||"https:"===h){if(!function(t){return URL.canParse(t)}(c))return i.BLANK_URL;var d=new URL(c);return d.protocol=d.protocol.toLowerCase(),d.hostname=d.hostname.toLowerCase(),d.toString()}return c};var i=r(9119);function o(t){return t.replace(i.ctrlCharactersRegex,"").replace(i.htmlEntitiesRegex,function(t,e){return String.fromCharCode(e)})}function n(t){try{return decodeURIComponent(t)}catch(e){return t}}},4353(t){t.exports=function(){"use strict";var t=1e3,e=6e4,r=36e5,i="millisecond",o="second",n="minute",a="hour",s="day",l="week",h="month",c="quarter",d="year",u="date",p="Invalid Date",g=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,f=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,y={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],r=t%100;return"["+t+(e[(r-20)%10]||e[r]||e[0])+"]"}},m=function(t,e,r){var i=String(t);return!i||i.length>=e?t:""+Array(e+1-i.length).join(r)+t},C={s:m,z:function(t){var e=-t.utcOffset(),r=Math.abs(e),i=Math.floor(r/60),o=r%60;return(e<=0?"+":"-")+m(i,2,"0")+":"+m(o,2,"0")},m:function t(e,r){if(e.date()<r.date())return-t(r,e);var i=12*(r.year()-e.year())+(r.month()-e.month()),o=e.clone().add(i,h),n=r-o<0,a=e.clone().add(i+(n?-1:1),h);return+(-(i+(r-o)/(n?o-a:a-o))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:h,y:d,w:l,d:s,D:u,h:a,m:n,s:o,ms:i,Q:c}[t]||String(t||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},x="en",b={};b[x]=y;var k="$isDayjsObject",w=function(t){return t instanceof B||!(!t||!t[k])},T=function t(e,r,i){var o;if(!e)return x;if("string"==typeof e){var n=e.toLowerCase();b[n]&&(o=n),r&&(b[n]=r,o=n);var a=e.split("-");if(!o&&a.length>1)return t(a[0])}else{var s=e.name;b[s]=e,o=s}return!i&&o&&(x=o),o||!i&&x},S=function(t,e){if(w(t))return t.clone();var r="object"==typeof e?e:{};return r.date=t,r.args=arguments,new B(r)},v=C;v.l=T,v.i=w,v.w=function(t,e){return S(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var B=function(){function y(t){this.$L=T(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[k]=!0}var m=y.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,r=t.utc;if(null===e)return new Date(NaN);if(v.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var i=e.match(g);if(i){var o=i[2]-1||0,n=(i[7]||"0").substring(0,3);return r?new Date(Date.UTC(i[1],o,i[3]||1,i[4]||0,i[5]||0,i[6]||0,n)):new Date(i[1],o,i[3]||1,i[4]||0,i[5]||0,i[6]||0,n)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return v},m.isValid=function(){return!(this.$d.toString()===p)},m.isSame=function(t,e){var r=S(t);return this.startOf(e)<=r&&r<=this.endOf(e)},m.isAfter=function(t,e){return S(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<S(t)},m.$g=function(t,e,r){return v.u(t)?this[e]:this.set(r,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var r=this,i=!!v.u(e)||e,c=v.p(t),p=function(t,e){var o=v.w(r.$u?Date.UTC(r.$y,e,t):new Date(r.$y,e,t),r);return i?o:o.endOf(s)},g=function(t,e){return v.w(r.toDate()[t].apply(r.toDate("s"),(i?[0,0,0,0]:[23,59,59,999]).slice(e)),r)},f=this.$W,y=this.$M,m=this.$D,C="set"+(this.$u?"UTC":"");switch(c){case d:return i?p(1,0):p(31,11);case h:return i?p(1,y):p(0,y+1);case l:var x=this.$locale().weekStart||0,b=(f<x?f+7:f)-x;return p(i?m-b:m+(6-b),y);case s:case u:return g(C+"Hours",0);case a:return g(C+"Minutes",1);case n:return g(C+"Seconds",2);case o:return g(C+"Milliseconds",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var r,l=v.p(t),c="set"+(this.$u?"UTC":""),p=(r={},r[s]=c+"Date",r[u]=c+"Date",r[h]=c+"Month",r[d]=c+"FullYear",r[a]=c+"Hours",r[n]=c+"Minutes",r[o]=c+"Seconds",r[i]=c+"Milliseconds",r)[l],g=l===s?this.$D+(e-this.$W):e;if(l===h||l===d){var f=this.clone().set(u,1);f.$d[p](g),f.init(),this.$d=f.set(u,Math.min(this.$D,f.daysInMonth())).$d}else p&&this.$d[p](g);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[v.p(t)]()},m.add=function(i,c){var u,p=this;i=Number(i);var g=v.p(c),f=function(t){var e=S(p);return v.w(e.date(e.date()+Math.round(t*i)),p)};if(g===h)return this.set(h,this.$M+i);if(g===d)return this.set(d,this.$y+i);if(g===s)return f(1);if(g===l)return f(7);var y=(u={},u[n]=e,u[a]=r,u[o]=t,u)[g]||1,m=this.$d.getTime()+i*y;return v.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,r=this.$locale();if(!this.isValid())return r.invalidDate||p;var i=t||"YYYY-MM-DDTHH:mm:ssZ",o=v.z(this),n=this.$H,a=this.$m,s=this.$M,l=r.weekdays,h=r.months,c=r.meridiem,d=function(t,r,o,n){return t&&(t[r]||t(e,i))||o[r].slice(0,n)},u=function(t){return v.s(n%12||12,t,"0")},g=c||function(t,e,r){var i=t<12?"AM":"PM";return r?i.toLowerCase():i};return i.replace(f,function(t,i){return i||function(t){switch(t){case"YY":return String(e.$y).slice(-2);case"YYYY":return v.s(e.$y,4,"0");case"M":return s+1;case"MM":return v.s(s+1,2,"0");case"MMM":return d(r.monthsShort,s,h,3);case"MMMM":return d(h,s);case"D":return e.$D;case"DD":return v.s(e.$D,2,"0");case"d":return String(e.$W);case"dd":return d(r.weekdaysMin,e.$W,l,2);case"ddd":return d(r.weekdaysShort,e.$W,l,3);case"dddd":return l[e.$W];case"H":return String(n);case"HH":return v.s(n,2,"0");case"h":return u(1);case"hh":return u(2);case"a":return g(n,a,!0);case"A":return g(n,a,!1);case"m":return String(a);case"mm":return v.s(a,2,"0");case"s":return String(e.$s);case"ss":return v.s(e.$s,2,"0");case"SSS":return v.s(e.$ms,3,"0");case"Z":return o}return null}(t)||o.replace(":","")})},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(i,u,p){var g,f=this,y=v.p(u),m=S(i),C=(m.utcOffset()-this.utcOffset())*e,x=this-m,b=function(){return v.m(f,m)};switch(y){case d:g=b()/12;break;case h:g=b();break;case c:g=b()/3;break;case l:g=(x-C)/6048e5;break;case s:g=(x-C)/864e5;break;case a:g=x/r;break;case n:g=x/e;break;case o:g=x/t;break;default:g=x}return p?g:v.a(g)},m.daysInMonth=function(){return this.endOf(h).$D},m.$locale=function(){return b[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var r=this.clone(),i=T(t,e,!0);return i&&(r.$L=i),r},m.clone=function(){return v.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},y}(),_=B.prototype;return S.prototype=_,[["$ms",i],["$s",o],["$m",n],["$H",a],["$W",s],["$M",h],["$y",d],["$D",u]].forEach(function(t){_[t[1]]=function(e){return this.$g(e,t[0],t[1])}}),S.extend=function(t,e){return t.$i||(t(e,B,S),t.$i=!0),S},S.locale=T,S.isDayjs=w,S.unix=function(t){return S(1e3*t)},S.en=b[x],S.Ls=b,S.p={},S}()},2274(t,e,r){"use strict";function i(t,e,r){if(t&&t.length){const[i,o]=e,n=Math.PI/180*r,a=Math.cos(n),s=Math.sin(n);for(const e of t){const[t,r]=e;e[0]=(t-i)*a-(r-o)*s+i,e[1]=(t-i)*s+(r-o)*a+o}}}function o(t,e){return t[0]===e[0]&&t[1]===e[1]}function n(t,e,r,n=1){const a=r,s=Math.max(e,.1),l=t[0]&&t[0][0]&&"number"==typeof t[0][0]?[t]:t,h=[0,0];if(a)for(const o of l)i(o,h,a);const c=function(t,e,r){const i=[];for(const c of t){const t=[...c];o(t[0],t[t.length-1])||t.push([t[0][0],t[0][1]]),t.length>2&&i.push(t)}const n=[];e=Math.max(e,.1);const a=[];for(const o of i)for(let t=0;t<o.length-1;t++){const e=o[t],r=o[t+1];if(e[1]!==r[1]){const t=Math.min(e[1],r[1]);a.push({ymin:t,ymax:Math.max(e[1],r[1]),x:t===e[1]?e[0]:r[0],islope:(r[0]-e[0])/(r[1]-e[1])})}}if(a.sort((t,e)=>t.ymin<e.ymin?-1:t.ymin>e.ymin?1:t.x<e.x?-1:t.x>e.x?1:t.ymax===e.ymax?0:(t.ymax-e.ymax)/Math.abs(t.ymax-e.ymax)),!a.length)return n;let s=[],l=a[0].ymin,h=0;for(;s.length||a.length;){if(a.length){let t=-1;for(let e=0;e<a.length&&!(a[e].ymin>l);e++)t=e;a.splice(0,t+1).forEach(t=>{s.push({s:l,edge:t})})}if(s=s.filter(t=>!(t.edge.ymax<=l)),s.sort((t,e)=>t.edge.x===e.edge.x?0:(t.edge.x-e.edge.x)/Math.abs(t.edge.x-e.edge.x)),(1!==r||h%e==0)&&s.length>1)for(let t=0;t<s.length;t+=2){const e=t+1;if(e>=s.length)break;const r=s[t].edge,i=s[e].edge;n.push([[Math.round(r.x),l],[Math.round(i.x),l]])}l+=r,s.forEach(t=>{t.edge.x=t.edge.x+r*t.edge.islope}),h++}return n}(l,s,n);if(a){for(const t of l)i(t,h,-a);!function(t,e,r){const o=[];t.forEach(t=>o.push(...t)),i(o,e,r)}(c,h,-a)}return c}function a(t,e){var r;const i=e.hachureAngle+90;let o=e.hachureGap;o<0&&(o=4*e.strokeWidth),o=Math.round(Math.max(o,.1));let a=1;return e.roughness>=1&&((null===(r=e.randomizer)||void 0===r?void 0:r.next())||Math.random())>.7&&(a=o),n(t,o,i,a||1)}r.d(e,{A:()=>ot});class s{constructor(t){this.helper=t}fillPolygons(t,e){return this._fillPolygons(t,e)}_fillPolygons(t,e){const r=a(t,e);return{type:"fillSketch",ops:this.renderLines(r,e)}}renderLines(t,e){const r=[];for(const i of t)r.push(...this.helper.doubleLineOps(i[0][0],i[0][1],i[1][0],i[1][1],e));return r}}function l(t){const e=t[0],r=t[1];return Math.sqrt(Math.pow(e[0]-r[0],2)+Math.pow(e[1]-r[1],2))}class h extends s{fillPolygons(t,e){let r=e.hachureGap;r<0&&(r=4*e.strokeWidth),r=Math.max(r,.1);const i=a(t,Object.assign({},e,{hachureGap:r})),o=Math.PI/180*e.hachureAngle,n=[],s=.5*r*Math.cos(o),h=.5*r*Math.sin(o);for(const[a,c]of i)l([a,c])&&n.push([[a[0]-s,a[1]+h],[...c]],[[a[0]+s,a[1]-h],[...c]]);return{type:"fillSketch",ops:this.renderLines(n,e)}}}class c extends s{fillPolygons(t,e){const r=this._fillPolygons(t,e),i=Object.assign({},e,{hachureAngle:e.hachureAngle+90}),o=this._fillPolygons(t,i);return r.ops=r.ops.concat(o.ops),r}}class d{constructor(t){this.helper=t}fillPolygons(t,e){const r=a(t,e=Object.assign({},e,{hachureAngle:0}));return this.dotsOnLines(r,e)}dotsOnLines(t,e){const r=[];let i=e.hachureGap;i<0&&(i=4*e.strokeWidth),i=Math.max(i,.1);let o=e.fillWeight;o<0&&(o=e.strokeWidth/2);const n=i/4;for(const a of t){const t=l(a),s=t/i,h=Math.ceil(s)-1,c=t-h*i,d=(a[0][0]+a[1][0])/2-i/4,u=Math.min(a[0][1],a[1][1]);for(let a=0;a<h;a++){const t=u+c+a*i,s=d-n+2*Math.random()*n,l=t-n+2*Math.random()*n,h=this.helper.ellipse(s,l,o,o,e);r.push(...h.ops)}}return{type:"fillSketch",ops:r}}}class u{constructor(t){this.helper=t}fillPolygons(t,e){const r=a(t,e);return{type:"fillSketch",ops:this.dashedLine(r,e)}}dashedLine(t,e){const r=e.dashOffset<0?e.hachureGap<0?4*e.strokeWidth:e.hachureGap:e.dashOffset,i=e.dashGap<0?e.hachureGap<0?4*e.strokeWidth:e.hachureGap:e.dashGap,o=[];return t.forEach(t=>{const n=l(t),a=Math.floor(n/(r+i)),s=(n+i-a*(r+i))/2;let h=t[0],c=t[1];h[0]>c[0]&&(h=t[1],c=t[0]);const d=Math.atan((c[1]-h[1])/(c[0]-h[0]));for(let l=0;l<a;l++){const t=l*(r+i),n=t+r,a=[h[0]+t*Math.cos(d)+s*Math.cos(d),h[1]+t*Math.sin(d)+s*Math.sin(d)],c=[h[0]+n*Math.cos(d)+s*Math.cos(d),h[1]+n*Math.sin(d)+s*Math.sin(d)];o.push(...this.helper.doubleLineOps(a[0],a[1],c[0],c[1],e))}}),o}}class p{constructor(t){this.helper=t}fillPolygons(t,e){const r=e.hachureGap<0?4*e.strokeWidth:e.hachureGap,i=e.zigzagOffset<0?r:e.zigzagOffset,o=a(t,e=Object.assign({},e,{hachureGap:r+i}));return{type:"fillSketch",ops:this.zigzagLines(o,i,e)}}zigzagLines(t,e,r){const i=[];return t.forEach(t=>{const o=l(t),n=Math.round(o/(2*e));let a=t[0],s=t[1];a[0]>s[0]&&(a=t[1],s=t[0]);const h=Math.atan((s[1]-a[1])/(s[0]-a[0]));for(let l=0;l<n;l++){const t=2*l*e,o=2*(l+1)*e,n=Math.sqrt(2*Math.pow(e,2)),s=[a[0]+t*Math.cos(h),a[1]+t*Math.sin(h)],c=[a[0]+o*Math.cos(h),a[1]+o*Math.sin(h)],d=[s[0]+n*Math.cos(h+Math.PI/4),s[1]+n*Math.sin(h+Math.PI/4)];i.push(...this.helper.doubleLineOps(s[0],s[1],d[0],d[1],r),...this.helper.doubleLineOps(d[0],d[1],c[0],c[1],r))}}),i}}const g={};class f{constructor(t){this.seed=t}next(){return this.seed?(2**31-1&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}}const y={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0};function m(t,e){return t.type===e}function C(t){const e=[],r=function(t){const e=new Array;for(;""!==t;)if(t.match(/^([ \t\r\n,]+)/))t=t.substr(RegExp.$1.length);else if(t.match(/^([aAcChHlLmMqQsStTvVzZ])/))e[e.length]={type:0,text:RegExp.$1},t=t.substr(RegExp.$1.length);else{if(!t.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];e[e.length]={type:1,text:`${parseFloat(RegExp.$1)}`},t=t.substr(RegExp.$1.length)}return e[e.length]={type:2,text:""},e}(t);let i="BOD",o=0,n=r[o];for(;!m(n,2);){let a=0;const s=[];if("BOD"===i){if("M"!==n.text&&"m"!==n.text)return C("M0,0"+t);o++,a=y[n.text],i=n.text}else m(n,1)?a=y[i]:(o++,a=y[n.text],i=n.text);if(!(o+a<r.length))throw new Error("Path data ended short");for(let t=o;t<o+a;t++){const e=r[t];if(!m(e,1))throw new Error("Param not a number: "+i+","+e.text);s[s.length]=+e.text}if("number"!=typeof y[i])throw new Error("Bad segment: "+i);{const t={key:i,data:s};e.push(t),o+=a,n=r[o],"M"===i&&(i="L"),"m"===i&&(i="l")}}return e}function x(t){let e=0,r=0,i=0,o=0;const n=[];for(const{key:a,data:s}of t)switch(a){case"M":n.push({key:"M",data:[...s]}),[e,r]=s,[i,o]=s;break;case"m":e+=s[0],r+=s[1],n.push({key:"M",data:[e,r]}),i=e,o=r;break;case"L":n.push({key:"L",data:[...s]}),[e,r]=s;break;case"l":e+=s[0],r+=s[1],n.push({key:"L",data:[e,r]});break;case"C":n.push({key:"C",data:[...s]}),e=s[4],r=s[5];break;case"c":{const t=s.map((t,i)=>i%2?t+r:t+e);n.push({key:"C",data:t}),e=t[4],r=t[5];break}case"Q":n.push({key:"Q",data:[...s]}),e=s[2],r=s[3];break;case"q":{const t=s.map((t,i)=>i%2?t+r:t+e);n.push({key:"Q",data:t}),e=t[2],r=t[3];break}case"A":n.push({key:"A",data:[...s]}),e=s[5],r=s[6];break;case"a":e+=s[5],r+=s[6],n.push({key:"A",data:[s[0],s[1],s[2],s[3],s[4],e,r]});break;case"H":n.push({key:"H",data:[...s]}),e=s[0];break;case"h":e+=s[0],n.push({key:"H",data:[e]});break;case"V":n.push({key:"V",data:[...s]}),r=s[0];break;case"v":r+=s[0],n.push({key:"V",data:[r]});break;case"S":n.push({key:"S",data:[...s]}),e=s[2],r=s[3];break;case"s":{const t=s.map((t,i)=>i%2?t+r:t+e);n.push({key:"S",data:t}),e=t[2],r=t[3];break}case"T":n.push({key:"T",data:[...s]}),e=s[0],r=s[1];break;case"t":e+=s[0],r+=s[1],n.push({key:"T",data:[e,r]});break;case"Z":case"z":n.push({key:"Z",data:[]}),e=i,r=o}return n}function b(t){const e=[];let r="",i=0,o=0,n=0,a=0,s=0,l=0;for(const{key:h,data:c}of t){switch(h){case"M":e.push({key:"M",data:[...c]}),[i,o]=c,[n,a]=c;break;case"C":e.push({key:"C",data:[...c]}),i=c[4],o=c[5],s=c[2],l=c[3];break;case"L":e.push({key:"L",data:[...c]}),[i,o]=c;break;case"H":i=c[0],e.push({key:"L",data:[i,o]});break;case"V":o=c[0],e.push({key:"L",data:[i,o]});break;case"S":{let t=0,n=0;"C"===r||"S"===r?(t=i+(i-s),n=o+(o-l)):(t=i,n=o),e.push({key:"C",data:[t,n,...c]}),s=c[0],l=c[1],i=c[2],o=c[3];break}case"T":{const[t,n]=c;let a=0,h=0;"Q"===r||"T"===r?(a=i+(i-s),h=o+(o-l)):(a=i,h=o);const d=i+2*(a-i)/3,u=o+2*(h-o)/3,p=t+2*(a-t)/3,g=n+2*(h-n)/3;e.push({key:"C",data:[d,u,p,g,t,n]}),s=a,l=h,i=t,o=n;break}case"Q":{const[t,r,n,a]=c,h=i+2*(t-i)/3,d=o+2*(r-o)/3,u=n+2*(t-n)/3,p=a+2*(r-a)/3;e.push({key:"C",data:[h,d,u,p,n,a]}),s=t,l=r,i=n,o=a;break}case"A":{const t=Math.abs(c[0]),r=Math.abs(c[1]),n=c[2],a=c[3],s=c[4],l=c[5],h=c[6];0===t||0===r?(e.push({key:"C",data:[i,o,l,h,l,h]}),i=l,o=h):i===l&&o===h||(w(i,o,l,h,t,r,n,a,s).forEach(function(t){e.push({key:"C",data:t})}),i=l,o=h);break}case"Z":e.push({key:"Z",data:[]}),i=n,o=a}r=h}return e}function k(t,e,r){return[t*Math.cos(r)-e*Math.sin(r),t*Math.sin(r)+e*Math.cos(r)]}function w(t,e,r,i,o,n,a,s,l,h){const c=(d=a,Math.PI*d/180);var d;let u=[],p=0,g=0,f=0,y=0;if(h)[p,g,f,y]=h;else{[t,e]=k(t,e,-c),[r,i]=k(r,i,-c);const a=(t-r)/2,h=(e-i)/2;let d=a*a/(o*o)+h*h/(n*n);d>1&&(d=Math.sqrt(d),o*=d,n*=d);const u=o*o,m=n*n,C=u*m-u*h*h-m*a*a,x=u*h*h+m*a*a,b=(s===l?-1:1)*Math.sqrt(Math.abs(C/x));f=b*o*h/n+(t+r)/2,y=b*-n*a/o+(e+i)/2,p=Math.asin(parseFloat(((e-y)/n).toFixed(9))),g=Math.asin(parseFloat(((i-y)/n).toFixed(9))),t<f&&(p=Math.PI-p),r<f&&(g=Math.PI-g),p<0&&(p=2*Math.PI+p),g<0&&(g=2*Math.PI+g),l&&p>g&&(p-=2*Math.PI),!l&&g>p&&(g-=2*Math.PI)}let m=g-p;if(Math.abs(m)>120*Math.PI/180){const t=g,e=r,s=i;g=l&&g>p?p+120*Math.PI/180*1:p+120*Math.PI/180*-1,u=w(r=f+o*Math.cos(g),i=y+n*Math.sin(g),e,s,o,n,a,0,l,[g,t,f,y])}m=g-p;const C=Math.cos(p),x=Math.sin(p),b=Math.cos(g),T=Math.sin(g),S=Math.tan(m/4),v=4/3*o*S,B=4/3*n*S,_=[t,e],A=[t+v*x,e-B*C],L=[r+v*T,i-B*b],F=[r,i];if(A[0]=2*_[0]-A[0],A[1]=2*_[1]-A[1],h)return[A,L,F].concat(u);{u=[A,L,F].concat(u);const t=[];for(let e=0;e<u.length;e+=3){const r=k(u[e][0],u[e][1],c),i=k(u[e+1][0],u[e+1][1],c),o=k(u[e+2][0],u[e+2][1],c);t.push([r[0],r[1],i[0],i[1],o[0],o[1]])}return t}}const T={randOffset:function(t,e){return I(t,e)},randOffsetWithRange:function(t,e,r){return D(t,e,r)},ellipse:function(t,e,r,i,o){return A(t,e,o,_(r,i,o)).opset},doubleLineOps:function(t,e,r,i,o){return P(t,e,r,i,o,!0)}};function S(t,e,r,i,o){return{type:"path",ops:P(t,e,r,i,o)}}function v(t,e,r){const i=(t||[]).length;if(i>2){const o=[];for(let e=0;e<i-1;e++)o.push(...P(t[e][0],t[e][1],t[e+1][0],t[e+1][1],r));return e&&o.push(...P(t[i-1][0],t[i-1][1],t[0][0],t[0][1],r)),{type:"path",ops:o}}return 2===i?S(t[0][0],t[0][1],t[1][0],t[1][1],r):{type:"path",ops:[]}}function B(t,e){if(t.length){const r="number"==typeof t[0][0]?[t]:t,i=R(r[0],1*(1+.2*e.roughness),e),o=e.disableMultiStroke?[]:R(r[0],1.5*(1+.22*e.roughness),$(e));for(let t=1;t<r.length;t++){const n=r[t];if(n.length){const t=R(n,1*(1+.2*e.roughness),e),r=e.disableMultiStroke?[]:R(n,1.5*(1+.22*e.roughness),$(e));for(const e of t)"move"!==e.op&&i.push(e);for(const e of r)"move"!==e.op&&o.push(e)}}return{type:"path",ops:i.concat(o)}}return{type:"path",ops:[]}}function _(t,e,r){const i=Math.sqrt(2*Math.PI*Math.sqrt((Math.pow(t/2,2)+Math.pow(e/2,2))/2)),o=Math.ceil(Math.max(r.curveStepCount,r.curveStepCount/Math.sqrt(200)*i)),n=2*Math.PI/o;let a=Math.abs(t/2),s=Math.abs(e/2);const l=1-r.curveFitting;return a+=I(a*l,r),s+=I(s*l,r),{increment:n,rx:a,ry:s}}function A(t,e,r,i){const[o,n]=K(i.increment,t,e,i.rx,i.ry,1,i.increment*D(.1,D(.4,1,r),r),r);let a=z(o,null,r);if(!r.disableMultiStroke&&0!==r.roughness){const[o]=K(i.increment,t,e,i.rx,i.ry,1.5,0,r),n=z(o,null,r);a=a.concat(n)}return{estimatedPoints:n,opset:{type:"path",ops:a}}}function L(t,e,r,i,o,n,a,s,l){const h=t,c=e;let d=Math.abs(r/2),u=Math.abs(i/2);d+=I(.01*d,l),u+=I(.01*u,l);let p=o,g=n;for(;p<0;)p+=2*Math.PI,g+=2*Math.PI;g-p>2*Math.PI&&(p=0,g=2*Math.PI);const f=2*Math.PI/l.curveStepCount,y=Math.min(f/2,(g-p)/2),m=N(y,h,c,d,u,p,g,1,l);if(!l.disableMultiStroke){const t=N(y,h,c,d,u,p,g,1.5,l);m.push(...t)}return a&&(s?m.push(...P(h,c,h+d*Math.cos(p),c+u*Math.sin(p),l),...P(h,c,h+d*Math.cos(g),c+u*Math.sin(g),l)):m.push({op:"lineTo",data:[h,c]},{op:"lineTo",data:[h+d*Math.cos(p),c+u*Math.sin(p)]})),{type:"path",ops:m}}function F(t,e){const r=b(x(C(t))),i=[];let o=[0,0],n=[0,0];for(const{key:a,data:s}of r)switch(a){case"M":n=[s[0],s[1]],o=[s[0],s[1]];break;case"L":i.push(...P(n[0],n[1],s[0],s[1],e)),n=[s[0],s[1]];break;case"C":{const[t,r,o,a,l,h]=s;i.push(...j(t,r,o,a,l,h,n,e)),n=[l,h];break}case"Z":i.push(...P(n[0],n[1],o[0],o[1],e)),n=[o[0],o[1]]}return{type:"path",ops:i}}function M(t,e){const r=[];for(const i of t)if(i.length){const t=e.maxRandomnessOffset||0,o=i.length;if(o>2){r.push({op:"move",data:[i[0][0]+I(t,e),i[0][1]+I(t,e)]});for(let n=1;n<o;n++)r.push({op:"lineTo",data:[i[n][0]+I(t,e),i[n][1]+I(t,e)]})}}return{type:"fillPath",ops:r}}function E(t,e){return function(t,e){let r=t.fillStyle||"hachure";if(!g[r])switch(r){case"zigzag":g[r]||(g[r]=new h(e));break;case"cross-hatch":g[r]||(g[r]=new c(e));break;case"dots":g[r]||(g[r]=new d(e));break;case"dashed":g[r]||(g[r]=new u(e));break;case"zigzag-line":g[r]||(g[r]=new p(e));break;default:r="hachure",g[r]||(g[r]=new s(e))}return g[r]}(e,T).fillPolygons(t,e)}function $(t){const e=Object.assign({},t);return e.randomizer=void 0,t.seed&&(e.seed=t.seed+1),e}function O(t){return t.randomizer||(t.randomizer=new f(t.seed||0)),t.randomizer.next()}function D(t,e,r,i=1){return r.roughness*i*(O(r)*(e-t)+t)}function I(t,e,r=1){return D(-t,t,e,r)}function P(t,e,r,i,o,n=!1){const a=n?o.disableMultiStrokeFill:o.disableMultiStroke,s=q(t,e,r,i,o,!0,!1);if(a)return s;const l=q(t,e,r,i,o,!0,!0);return s.concat(l)}function q(t,e,r,i,o,n,a){const s=Math.pow(t-r,2)+Math.pow(e-i,2),l=Math.sqrt(s);let h=1;h=l<200?1:l>500?.4:-.0016668*l+1.233334;let c=o.maxRandomnessOffset||0;c*c*100>s&&(c=l/10);const d=c/2,u=.2+.2*O(o);let p=o.bowing*o.maxRandomnessOffset*(i-e)/200,g=o.bowing*o.maxRandomnessOffset*(t-r)/200;p=I(p,o,h),g=I(g,o,h);const f=[],y=()=>I(d,o,h),m=()=>I(c,o,h),C=o.preserveVertices;return n&&(a?f.push({op:"move",data:[t+(C?0:y()),e+(C?0:y())]}):f.push({op:"move",data:[t+(C?0:I(c,o,h)),e+(C?0:I(c,o,h))]})),a?f.push({op:"bcurveTo",data:[p+t+(r-t)*u+y(),g+e+(i-e)*u+y(),p+t+2*(r-t)*u+y(),g+e+2*(i-e)*u+y(),r+(C?0:y()),i+(C?0:y())]}):f.push({op:"bcurveTo",data:[p+t+(r-t)*u+m(),g+e+(i-e)*u+m(),p+t+2*(r-t)*u+m(),g+e+2*(i-e)*u+m(),r+(C?0:m()),i+(C?0:m())]}),f}function R(t,e,r){if(!t.length)return[];const i=[];i.push([t[0][0]+I(e,r),t[0][1]+I(e,r)]),i.push([t[0][0]+I(e,r),t[0][1]+I(e,r)]);for(let o=1;o<t.length;o++)i.push([t[o][0]+I(e,r),t[o][1]+I(e,r)]),o===t.length-1&&i.push([t[o][0]+I(e,r),t[o][1]+I(e,r)]);return z(i,null,r)}function z(t,e,r){const i=t.length,o=[];if(i>3){const n=[],a=1-r.curveTightness;o.push({op:"move",data:[t[1][0],t[1][1]]});for(let e=1;e+2<i;e++){const r=t[e];n[0]=[r[0],r[1]],n[1]=[r[0]+(a*t[e+1][0]-a*t[e-1][0])/6,r[1]+(a*t[e+1][1]-a*t[e-1][1])/6],n[2]=[t[e+1][0]+(a*t[e][0]-a*t[e+2][0])/6,t[e+1][1]+(a*t[e][1]-a*t[e+2][1])/6],n[3]=[t[e+1][0],t[e+1][1]],o.push({op:"bcurveTo",data:[n[1][0],n[1][1],n[2][0],n[2][1],n[3][0],n[3][1]]})}if(e&&2===e.length){const t=r.maxRandomnessOffset;o.push({op:"lineTo",data:[e[0]+I(t,r),e[1]+I(t,r)]})}}else 3===i?(o.push({op:"move",data:[t[1][0],t[1][1]]}),o.push({op:"bcurveTo",data:[t[1][0],t[1][1],t[2][0],t[2][1],t[2][0],t[2][1]]})):2===i&&o.push(...q(t[0][0],t[0][1],t[1][0],t[1][1],r,!0,!0));return o}function K(t,e,r,i,o,n,a,s){const l=[],h=[];if(0===s.roughness){t/=4,h.push([e+i*Math.cos(-t),r+o*Math.sin(-t)]);for(let n=0;n<=2*Math.PI;n+=t){const t=[e+i*Math.cos(n),r+o*Math.sin(n)];l.push(t),h.push(t)}h.push([e+i*Math.cos(0),r+o*Math.sin(0)]),h.push([e+i*Math.cos(t),r+o*Math.sin(t)])}else{const c=I(.5,s)-Math.PI/2;h.push([I(n,s)+e+.9*i*Math.cos(c-t),I(n,s)+r+.9*o*Math.sin(c-t)]);const d=2*Math.PI+c-.01;for(let a=c;a<d;a+=t){const t=[I(n,s)+e+i*Math.cos(a),I(n,s)+r+o*Math.sin(a)];l.push(t),h.push(t)}h.push([I(n,s)+e+i*Math.cos(c+2*Math.PI+.5*a),I(n,s)+r+o*Math.sin(c+2*Math.PI+.5*a)]),h.push([I(n,s)+e+.98*i*Math.cos(c+a),I(n,s)+r+.98*o*Math.sin(c+a)]),h.push([I(n,s)+e+.9*i*Math.cos(c+.5*a),I(n,s)+r+.9*o*Math.sin(c+.5*a)])}return[h,l]}function N(t,e,r,i,o,n,a,s,l){const h=n+I(.1,l),c=[];c.push([I(s,l)+e+.9*i*Math.cos(h-t),I(s,l)+r+.9*o*Math.sin(h-t)]);for(let d=h;d<=a;d+=t)c.push([I(s,l)+e+i*Math.cos(d),I(s,l)+r+o*Math.sin(d)]);return c.push([e+i*Math.cos(a),r+o*Math.sin(a)]),c.push([e+i*Math.cos(a),r+o*Math.sin(a)]),z(c,null,l)}function j(t,e,r,i,o,n,a,s){const l=[],h=[s.maxRandomnessOffset||1,(s.maxRandomnessOffset||1)+.3];let c=[0,0];const d=s.disableMultiStroke?1:2,u=s.preserveVertices;for(let p=0;p<d;p++)0===p?l.push({op:"move",data:[a[0],a[1]]}):l.push({op:"move",data:[a[0]+(u?0:I(h[0],s)),a[1]+(u?0:I(h[0],s))]}),c=u?[o,n]:[o+I(h[p],s),n+I(h[p],s)],l.push({op:"bcurveTo",data:[t+I(h[p],s),e+I(h[p],s),r+I(h[p],s),i+I(h[p],s),c[0],c[1]]});return l}function W(t){return[...t]}function H(t,e=0){const r=t.length;if(r<3)throw new Error("A curve must have at least three points.");const i=[];if(3===r)i.push(W(t[0]),W(t[1]),W(t[2]),W(t[2]));else{const r=[];r.push(t[0],t[0]);for(let e=1;e<t.length;e++)r.push(t[e]),e===t.length-1&&r.push(t[e]);const o=[],n=1-e;i.push(W(r[0]));for(let t=1;t+2<r.length;t++){const e=r[t];o[0]=[e[0],e[1]],o[1]=[e[0]+(n*r[t+1][0]-n*r[t-1][0])/6,e[1]+(n*r[t+1][1]-n*r[t-1][1])/6],o[2]=[r[t+1][0]+(n*r[t][0]-n*r[t+2][0])/6,r[t+1][1]+(n*r[t][1]-n*r[t+2][1])/6],o[3]=[r[t+1][0],r[t+1][1]],i.push(o[1],o[2],o[3])}}return i}function U(t,e){return Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)}function Y(t,e,r){const i=U(e,r);if(0===i)return U(t,e);let o=((t[0]-e[0])*(r[0]-e[0])+(t[1]-e[1])*(r[1]-e[1]))/i;return o=Math.max(0,Math.min(1,o)),U(t,G(e,r,o))}function G(t,e,r){return[t[0]+(e[0]-t[0])*r,t[1]+(e[1]-t[1])*r]}function X(t,e,r,i){const o=i||[];if(function(t,e){const r=t[e+0],i=t[e+1],o=t[e+2],n=t[e+3];let a=3*i[0]-2*r[0]-n[0];a*=a;let s=3*i[1]-2*r[1]-n[1];s*=s;let l=3*o[0]-2*n[0]-r[0];l*=l;let h=3*o[1]-2*n[1]-r[1];return h*=h,a<l&&(a=l),s<h&&(s=h),a+s}(t,e)<r){const r=t[e+0];o.length?(n=o[o.length-1],a=r,Math.sqrt(U(n,a))>1&&o.push(r)):o.push(r),o.push(t[e+3])}else{const i=.5,n=t[e+0],a=t[e+1],s=t[e+2],l=t[e+3],h=G(n,a,i),c=G(a,s,i),d=G(s,l,i),u=G(h,c,i),p=G(c,d,i),g=G(u,p,i);X([n,h,u,g],0,r,o),X([g,p,d,l],0,r,o)}var n,a;return o}function V(t,e){return Z(t,0,t.length,e)}function Z(t,e,r,i,o){const n=o||[],a=t[e],s=t[r-1];let l=0,h=1;for(let c=e+1;c<r-1;++c){const e=Y(t[c],a,s);e>l&&(l=e,h=c)}return Math.sqrt(l)>i?(Z(t,e,h+1,i,n),Z(t,h,r,i,n)):(n.length||n.push(a),n.push(s)),n}function Q(t,e=.15,r){const i=[],o=(t.length-1)/3;for(let n=0;n<o;n++)X(t,3*n,e,i);return r&&r>0?Z(i,0,i.length,r):i}const J="none";class tt{constructor(t){this.defaultOptions={maxRandomnessOffset:2,roughness:1,bowing:1,stroke:"#000",strokeWidth:1,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:"hachure",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,seed:0,disableMultiStroke:!1,disableMultiStrokeFill:!1,preserveVertices:!1,fillShapeRoughnessGain:.8},this.config=t||{},this.config.options&&(this.defaultOptions=this._o(this.config.options))}static newSeed(){return Math.floor(Math.random()*2**31)}_o(t){return t?Object.assign({},this.defaultOptions,t):this.defaultOptions}_d(t,e,r){return{shape:t,sets:e||[],options:r||this.defaultOptions}}line(t,e,r,i,o){const n=this._o(o);return this._d("line",[S(t,e,r,i,n)],n)}rectangle(t,e,r,i,o){const n=this._o(o),a=[],s=function(t,e,r,i,o){return function(t,e){return v(t,!0,e)}([[t,e],[t+r,e],[t+r,e+i],[t,e+i]],o)}(t,e,r,i,n);if(n.fill){const o=[[t,e],[t+r,e],[t+r,e+i],[t,e+i]];"solid"===n.fillStyle?a.push(M([o],n)):a.push(E([o],n))}return n.stroke!==J&&a.push(s),this._d("rectangle",a,n)}ellipse(t,e,r,i,o){const n=this._o(o),a=[],s=_(r,i,n),l=A(t,e,n,s);if(n.fill)if("solid"===n.fillStyle){const r=A(t,e,n,s).opset;r.type="fillPath",a.push(r)}else a.push(E([l.estimatedPoints],n));return n.stroke!==J&&a.push(l.opset),this._d("ellipse",a,n)}circle(t,e,r,i){const o=this.ellipse(t,e,r,r,i);return o.shape="circle",o}linearPath(t,e){const r=this._o(e);return this._d("linearPath",[v(t,!1,r)],r)}arc(t,e,r,i,o,n,a=!1,s){const l=this._o(s),h=[],c=L(t,e,r,i,o,n,a,!0,l);if(a&&l.fill)if("solid"===l.fillStyle){const a=Object.assign({},l);a.disableMultiStroke=!0;const s=L(t,e,r,i,o,n,!0,!1,a);s.type="fillPath",h.push(s)}else h.push(function(t,e,r,i,o,n,a){const s=t,l=e;let h=Math.abs(r/2),c=Math.abs(i/2);h+=I(.01*h,a),c+=I(.01*c,a);let d=o,u=n;for(;d<0;)d+=2*Math.PI,u+=2*Math.PI;u-d>2*Math.PI&&(d=0,u=2*Math.PI);const p=(u-d)/a.curveStepCount,g=[];for(let f=d;f<=u;f+=p)g.push([s+h*Math.cos(f),l+c*Math.sin(f)]);return g.push([s+h*Math.cos(u),l+c*Math.sin(u)]),g.push([s,l]),E([g],a)}(t,e,r,i,o,n,l));return l.stroke!==J&&h.push(c),this._d("arc",h,l)}curve(t,e){const r=this._o(e),i=[],o=B(t,r);if(r.fill&&r.fill!==J)if("solid"===r.fillStyle){const e=B(t,Object.assign(Object.assign({},r),{disableMultiStroke:!0,roughness:r.roughness?r.roughness+r.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(e.ops)})}else{const e=[],o=t;if(o.length){const t="number"==typeof o[0][0]?[o]:o;for(const i of t)i.length<3?e.push(...i):3===i.length?e.push(...Q(H([i[0],i[0],i[1],i[2]]),10,(1+r.roughness)/2)):e.push(...Q(H(i),10,(1+r.roughness)/2))}e.length&&i.push(E([e],r))}return r.stroke!==J&&i.push(o),this._d("curve",i,r)}polygon(t,e){const r=this._o(e),i=[],o=v(t,!0,r);return r.fill&&("solid"===r.fillStyle?i.push(M([t],r)):i.push(E([t],r))),r.stroke!==J&&i.push(o),this._d("polygon",i,r)}path(t,e){const r=this._o(e),i=[];if(!t)return this._d("path",i,r);t=(t||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," ");const o=r.fill&&"transparent"!==r.fill&&r.fill!==J,n=r.stroke!==J,a=!!(r.simplification&&r.simplification<1),s=function(t,e,r){const i=b(x(C(t))),o=[];let n=[],a=[0,0],s=[];const l=()=>{s.length>=4&&n.push(...Q(s,1)),s=[]},h=()=>{l(),n.length&&(o.push(n),n=[])};for(const{key:d,data:u}of i)switch(d){case"M":h(),a=[u[0],u[1]],n.push(a);break;case"L":l(),n.push([u[0],u[1]]);break;case"C":if(!s.length){const t=n.length?n[n.length-1]:a;s.push([t[0],t[1]])}s.push([u[0],u[1]]),s.push([u[2],u[3]]),s.push([u[4],u[5]]);break;case"Z":l(),n.push([a[0],a[1]])}if(h(),!r)return o;const c=[];for(const d of o){const t=V(d,r);t.length&&c.push(t)}return c}(t,0,a?4-4*(r.simplification||1):(1+r.roughness)/2),l=F(t,r);if(o)if("solid"===r.fillStyle)if(1===s.length){const e=F(t,Object.assign(Object.assign({},r),{disableMultiStroke:!0,roughness:r.roughness?r.roughness+r.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(e.ops)})}else i.push(M(s,r));else i.push(E(s,r));return n&&(a?s.forEach(t=>{i.push(v(t,!1,r))}):i.push(l)),this._d("path",i,r)}opsToPath(t,e){let r="";for(const i of t.ops){const t="number"==typeof e&&e>=0?i.data.map(t=>+t.toFixed(e)):i.data;switch(i.op){case"move":r+=`M${t[0]} ${t[1]} `;break;case"bcurveTo":r+=`C${t[0]} ${t[1]}, ${t[2]} ${t[3]}, ${t[4]} ${t[5]} `;break;case"lineTo":r+=`L${t[0]} ${t[1]} `}}return r.trim()}toPaths(t){const e=t.sets||[],r=t.options||this.defaultOptions,i=[];for(const o of e){let t=null;switch(o.type){case"path":t={d:this.opsToPath(o),stroke:r.stroke,strokeWidth:r.strokeWidth,fill:J};break;case"fillPath":t={d:this.opsToPath(o),stroke:J,strokeWidth:0,fill:r.fill||J};break;case"fillSketch":t=this.fillSketch(o,r)}t&&i.push(t)}return i}fillSketch(t,e){let r=e.fillWeight;return r<0&&(r=e.strokeWidth/2),{d:this.opsToPath(t),stroke:e.fill||J,strokeWidth:r,fill:J}}_mergedShape(t){return t.filter((t,e)=>0===e||"move"!==t.op)}}class et{constructor(t,e){this.canvas=t,this.ctx=this.canvas.getContext("2d"),this.gen=new tt(e)}draw(t){const e=t.sets||[],r=t.options||this.getDefaultOptions(),i=this.ctx,o=t.options.fixedDecimalPlaceDigits;for(const n of e)switch(n.type){case"path":i.save(),i.strokeStyle="none"===r.stroke?"transparent":r.stroke,i.lineWidth=r.strokeWidth,r.strokeLineDash&&i.setLineDash(r.strokeLineDash),r.strokeLineDashOffset&&(i.lineDashOffset=r.strokeLineDashOffset),this._drawToContext(i,n,o),i.restore();break;case"fillPath":{i.save(),i.fillStyle=r.fill||"";const e="curve"===t.shape||"polygon"===t.shape||"path"===t.shape?"evenodd":"nonzero";this._drawToContext(i,n,o,e),i.restore();break}case"fillSketch":this.fillSketch(i,n,r)}}fillSketch(t,e,r){let i=r.fillWeight;i<0&&(i=r.strokeWidth/2),t.save(),r.fillLineDash&&t.setLineDash(r.fillLineDash),r.fillLineDashOffset&&(t.lineDashOffset=r.fillLineDashOffset),t.strokeStyle=r.fill||"",t.lineWidth=i,this._drawToContext(t,e,r.fixedDecimalPlaceDigits),t.restore()}_drawToContext(t,e,r,i="nonzero"){t.beginPath();for(const o of e.ops){const e="number"==typeof r&&r>=0?o.data.map(t=>+t.toFixed(r)):o.data;switch(o.op){case"move":t.moveTo(e[0],e[1]);break;case"bcurveTo":t.bezierCurveTo(e[0],e[1],e[2],e[3],e[4],e[5]);break;case"lineTo":t.lineTo(e[0],e[1])}}"fillPath"===e.type?t.fill(i):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,e,r,i,o){const n=this.gen.line(t,e,r,i,o);return this.draw(n),n}rectangle(t,e,r,i,o){const n=this.gen.rectangle(t,e,r,i,o);return this.draw(n),n}ellipse(t,e,r,i,o){const n=this.gen.ellipse(t,e,r,i,o);return this.draw(n),n}circle(t,e,r,i){const o=this.gen.circle(t,e,r,i);return this.draw(o),o}linearPath(t,e){const r=this.gen.linearPath(t,e);return this.draw(r),r}polygon(t,e){const r=this.gen.polygon(t,e);return this.draw(r),r}arc(t,e,r,i,o,n,a=!1,s){const l=this.gen.arc(t,e,r,i,o,n,a,s);return this.draw(l),l}curve(t,e){const r=this.gen.curve(t,e);return this.draw(r),r}path(t,e){const r=this.gen.path(t,e);return this.draw(r),r}}const rt="http://www.w3.org/2000/svg";class it{constructor(t,e){this.svg=t,this.gen=new tt(e)}draw(t){const e=t.sets||[],r=t.options||this.getDefaultOptions(),i=this.svg.ownerDocument||window.document,o=i.createElementNS(rt,"g"),n=t.options.fixedDecimalPlaceDigits;for(const a of e){let e=null;switch(a.type){case"path":e=i.createElementNS(rt,"path"),e.setAttribute("d",this.opsToPath(a,n)),e.setAttribute("stroke",r.stroke),e.setAttribute("stroke-width",r.strokeWidth+""),e.setAttribute("fill","none"),r.strokeLineDash&&e.setAttribute("stroke-dasharray",r.strokeLineDash.join(" ").trim()),r.strokeLineDashOffset&&e.setAttribute("stroke-dashoffset",`${r.strokeLineDashOffset}`);break;case"fillPath":e=i.createElementNS(rt,"path"),e.setAttribute("d",this.opsToPath(a,n)),e.setAttribute("stroke","none"),e.setAttribute("stroke-width","0"),e.setAttribute("fill",r.fill||""),"curve"!==t.shape&&"polygon"!==t.shape||e.setAttribute("fill-rule","evenodd");break;case"fillSketch":e=this.fillSketch(i,a,r)}e&&o.appendChild(e)}return o}fillSketch(t,e,r){let i=r.fillWeight;i<0&&(i=r.strokeWidth/2);const o=t.createElementNS(rt,"path");return o.setAttribute("d",this.opsToPath(e,r.fixedDecimalPlaceDigits)),o.setAttribute("stroke",r.fill||""),o.setAttribute("stroke-width",i+""),o.setAttribute("fill","none"),r.fillLineDash&&o.setAttribute("stroke-dasharray",r.fillLineDash.join(" ").trim()),r.fillLineDashOffset&&o.setAttribute("stroke-dashoffset",`${r.fillLineDashOffset}`),o}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t,e){return this.gen.opsToPath(t,e)}line(t,e,r,i,o){const n=this.gen.line(t,e,r,i,o);return this.draw(n)}rectangle(t,e,r,i,o){const n=this.gen.rectangle(t,e,r,i,o);return this.draw(n)}ellipse(t,e,r,i,o){const n=this.gen.ellipse(t,e,r,i,o);return this.draw(n)}circle(t,e,r,i){const o=this.gen.circle(t,e,r,i);return this.draw(o)}linearPath(t,e){const r=this.gen.linearPath(t,e);return this.draw(r)}polygon(t,e){const r=this.gen.polygon(t,e);return this.draw(r)}arc(t,e,r,i,o,n,a=!1,s){const l=this.gen.arc(t,e,r,i,o,n,a,s);return this.draw(l)}curve(t,e){const r=this.gen.curve(t,e);return this.draw(r)}path(t,e){const r=this.gen.path(t,e);return this.draw(r)}}var ot={canvas:(t,e)=>new et(t,e),svg:(t,e)=>new it(t,e),generator:t=>new tt(t),newSeed:()=>tt.newSeed()}},513(t,e,r){"use strict";function i(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];var i=Array.from("string"==typeof t?[t]:t);i[i.length-1]=i[i.length-1].replace(/\r?\n([\t ]*)$/,"");var o=i.reduce(function(t,e){var r=e.match(/\n([\t ]+|(?!\s).)/g);return r?t.concat(r.map(function(t){var e,r;return null!==(r=null===(e=t.match(/[\t ]/g))||void 0===e?void 0:e.length)&&void 0!==r?r:0})):t},[]);if(o.length){var n=new RegExp("\n[\t ]{"+Math.min.apply(Math,o)+"}","g");i=i.map(function(t){return t.replace(n,"\n")})}i[0]=i[0].replace(/^\r?\n/,"");var a=i[0];return e.forEach(function(t,e){var r=a.match(/(?:^|\n)( *)$/),o=r?r[1]:"",n=t;"string"==typeof t&&t.includes("\n")&&(n=String(t).split("\n").map(function(t,e){return 0===e?t:""+o+t}).join("\n")),a+=n+i[e+1]}),a}r.d(e,{T:()=>i})},451(t,e,r){"use strict";function i(t,e){let r;if(void 0===e)for(const i of t)null!=i&&(r<i||void 0===r&&i>=i)&&(r=i);else{let i=-1;for(let o of t)null!=(o=e(o,++i,t))&&(r<o||void 0===r&&o>=o)&&(r=o)}return r}function o(t,e){let r;if(void 0===e)for(const i of t)null!=i&&(r>i||void 0===r&&i>=i)&&(r=i);else{let i=-1;for(let o of t)null!=(o=e(o,++i,t))&&(r>o||void 0===r&&o>=o)&&(r=o)}return r}function n(t){return t}r.d(e,{JLW:()=>rh,l78:()=>g,tlR:()=>p,qrM:()=>fh,Yu4:()=>mh,IA3:()=>xh,Wi0:()=>kh,PGM:()=>wh,OEq:()=>Sh,y8u:()=>_h,olC:()=>Lh,IrU:()=>Mh,oDi:()=>Oh,Q7f:()=>Ih,cVp:()=>qh,lUB:()=>nh,Lx9:()=>zh,nVG:()=>Gh,uxU:()=>Xh,Xf2:()=>Qh,GZz:()=>tc,UPb:()=>rc,dyv:()=>ec,GPZ:()=>To,Sk5:()=>No,bEH:()=>wn,n8j:()=>lh,T9B:()=>i,jkA:()=>o,rLf:()=>dh,WH:()=>Mn,m4Y:()=>ca,UMr:()=>Fn,w7C:()=>Bl,zt:()=>Al,Ltv:()=>Ll,UAC:()=>_a,DCK:()=>ns,TUC:()=>Ia,Agd:()=>va,t6C:()=>ka,wXd:()=>Ta,ABi:()=>Ea,Ui6:()=>Ua,rGn:()=>Pa,ucG:()=>wa,YPH:()=>Ma,Mol:()=>Da,PGu:()=>$a,GuW:()=>Oa,hkb:()=>en}),Object.defineProperty(n,"name",{value:"default",configurable:!0});var a=1e-6;function s(t){return"translate("+t+",0)"}function l(t){return"translate(0,"+t+")"}function h(t){return e=>+t(e)}function c(t,e){return e=Math.max(0,t.bandwidth()-2*e)/2,t.round()&&(e=Math.round(e)),r=>+t(r)+e}function d(){return!this.__axis}function u(t,e){var r=[],i=null,o=null,u=6,p=6,g=3,f="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,y=1===t||4===t?-1:1,m=4===t||2===t?"x":"y",C=1===t||3===t?s:l;function x(s){var l=null==i?e.ticks?e.ticks.apply(e,r):e.domain():i,x=null==o?e.tickFormat?e.tickFormat.apply(e,r):n:o,b=Math.max(u,0)+g,k=e.range(),w=+k[0]+f,T=+k[k.length-1]+f,S=(e.bandwidth?c:h)(e.copy(),f),v=s.selection?s.selection():s,B=v.selectAll(".domain").data([null]),_=v.selectAll(".tick").data(l,e).order(),A=_.exit(),L=_.enter().append("g").attr("class","tick"),F=_.select("line"),M=_.select("text");B=B.merge(B.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),_=_.merge(L),F=F.merge(L.append("line").attr("stroke","currentColor").attr(m+"2",y*u)),M=M.merge(L.append("text").attr("fill","currentColor").attr(m,y*b).attr("dy",1===t?"0em":3===t?"0.71em":"0.32em")),s!==v&&(B=B.transition(s),_=_.transition(s),F=F.transition(s),M=M.transition(s),A=A.transition(s).attr("opacity",a).attr("transform",function(t){return isFinite(t=S(t))?C(t+f):this.getAttribute("transform")}),L.attr("opacity",a).attr("transform",function(t){var e=this.parentNode.__axis;return C((e&&isFinite(e=e(t))?e:S(t))+f)})),A.remove(),B.attr("d",4===t||2===t?p?"M"+y*p+","+w+"H"+f+"V"+T+"H"+y*p:"M"+f+","+w+"V"+T:p?"M"+w+","+y*p+"V"+f+"H"+T+"V"+y*p:"M"+w+","+f+"H"+T),_.attr("opacity",1).attr("transform",function(t){return C(S(t)+f)}),F.attr(m+"2",y*u),M.attr(m,y*b).text(x),v.filter(d).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",2===t?"start":4===t?"end":"middle"),v.each(function(){this.__axis=S})}return x.scale=function(t){return arguments.length?(e=t,x):e},x.ticks=function(){return r=Array.from(arguments),x},x.tickArguments=function(t){return arguments.length?(r=null==t?[]:Array.from(t),x):r.slice()},x.tickValues=function(t){return arguments.length?(i=null==t?null:Array.from(t),x):i&&i.slice()},x.tickFormat=function(t){return arguments.length?(o=t,x):o},x.tickSize=function(t){return arguments.length?(u=p=+t,x):u},x.tickSizeInner=function(t){return arguments.length?(u=+t,x):u},x.tickSizeOuter=function(t){return arguments.length?(p=+t,x):p},x.tickPadding=function(t){return arguments.length?(g=+t,x):g},x.offset=function(t){return arguments.length?(f=+t,x):f},x}function p(t){return u(1,t)}function g(t){return u(3,t)}function f(){}function y(t){return null==t?f:function(){return this.querySelector(t)}}function m(t){"function"!=typeof t&&(t=y(t));for(var e=this._groups,r=e.length,i=new Array(r),o=0;o<r;++o)for(var n,a,s=e[o],l=s.length,h=i[o]=new Array(l),c=0;c<l;++c)(n=s[c])&&(a=t.call(n,n.__data__,c,s))&&("__data__"in n&&(a.__data__=n.__data__),h[c]=a);return new ae(i,this._parents)}function C(){return[]}function x(t){return null==t?C:function(){return this.querySelectorAll(t)}}function b(t){return function(){return null==(e=t.apply(this,arguments))?[]:Array.isArray(e)?e:Array.from(e);var e}}function k(t){t="function"==typeof t?b(t):x(t);for(var e=this._groups,r=e.length,i=[],o=[],n=0;n<r;++n)for(var a,s=e[n],l=s.length,h=0;h<l;++h)(a=s[h])&&(i.push(t.call(a,a.__data__,h,s)),o.push(a));return new ae(i,o)}function w(t){return function(){return this.matches(t)}}function T(t){return function(e){return e.matches(t)}}Object.defineProperty(y,"name",{value:"default",configurable:!0}),Object.defineProperty(m,"name",{value:"default",configurable:!0}),Object.defineProperty(x,"name",{value:"default",configurable:!0}),Object.defineProperty(k,"name",{value:"default",configurable:!0}),Object.defineProperty(w,"name",{value:"default",configurable:!0}),Object.defineProperty(B,"name",{value:"default",configurable:!0});var S=Array.prototype.find;function v(){return this.firstElementChild}function B(t){return this.select(null==t?v:function(t){return function(){return S.call(this.children,t)}}("function"==typeof t?t:T(t)))}Object.defineProperty(L,"name",{value:"default",configurable:!0});var _=Array.prototype.filter;function A(){return Array.from(this.children)}function L(t){return this.selectAll(null==t?A:function(t){return function(){return _.call(this.children,t)}}("function"==typeof t?t:T(t)))}function F(t){"function"!=typeof t&&(t=w(t));for(var e=this._groups,r=e.length,i=new Array(r),o=0;o<r;++o)for(var n,a=e[o],s=a.length,l=i[o]=[],h=0;h<s;++h)(n=a[h])&&t.call(n,n.__data__,h,a)&&l.push(n);return new ae(i,this._parents)}function M(t){return new Array(t.length)}function E(){return new ae(this._enter||this._groups.map(M),this._parents)}function $(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function O(t){return function(){return t}}function D(t,e,r,i,o,n){for(var a,s=0,l=e.length,h=n.length;s<h;++s)(a=e[s])?(a.__data__=n[s],i[s]=a):r[s]=new $(t,n[s]);for(;s<l;++s)(a=e[s])&&(o[s]=a)}function I(t,e,r,i,o,n,a){var s,l,h,c=new Map,d=e.length,u=n.length,p=new Array(d);for(s=0;s<d;++s)(l=e[s])&&(p[s]=h=a.call(l,l.__data__,s,e)+"",c.has(h)?o[s]=l:c.set(h,l));for(s=0;s<u;++s)h=a.call(t,n[s],s,n)+"",(l=c.get(h))?(i[s]=l,l.__data__=n[s],c.delete(h)):r[s]=new $(t,n[s]);for(s=0;s<d;++s)(l=e[s])&&c.get(p[s])===l&&(o[s]=l)}function P(t){return t.__data__}function q(t,e){if(!arguments.length)return Array.from(this,P);var r=e?I:D,i=this._parents,o=this._groups;"function"!=typeof t&&(t=O(t));for(var n=o.length,a=new Array(n),s=new Array(n),l=new Array(n),h=0;h<n;++h){var c=i[h],d=o[h],u=d.length,p=R(t.call(c,c&&c.__data__,h,i)),g=p.length,f=s[h]=new Array(g),y=a[h]=new Array(g);r(c,d,f,y,l[h]=new Array(u),p,e);for(var m,C,x=0,b=0;x<g;++x)if(m=f[x]){for(x>=b&&(b=x+1);!(C=y[b])&&++b<g;);m._next=C||null}}return(a=new ae(a,i))._enter=s,a._exit=l,a}function R(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function z(){return new ae(this._exit||this._groups.map(M),this._parents)}function K(t,e,r){var i=this.enter(),o=this,n=this.exit();return"function"==typeof t?(i=t(i))&&(i=i.selection()):i=i.append(t+""),null!=e&&(o=e(o))&&(o=o.selection()),null==r?n.remove():r(n),i&&o?i.merge(o).order():o}function N(t){for(var e=t.selection?t.selection():t,r=this._groups,i=e._groups,o=r.length,n=i.length,a=Math.min(o,n),s=new Array(o),l=0;l<a;++l)for(var h,c=r[l],d=i[l],u=c.length,p=s[l]=new Array(u),g=0;g<u;++g)(h=c[g]||d[g])&&(p[g]=h);for(;l<o;++l)s[l]=r[l];return new ae(s,this._parents)}function j(){for(var t=this._groups,e=-1,r=t.length;++e<r;)for(var i,o=t[e],n=o.length-1,a=o[n];--n>=0;)(i=o[n])&&(a&&4^i.compareDocumentPosition(a)&&a.parentNode.insertBefore(i,a),a=i);return this}function W(t){function e(e,r){return e&&r?t(e.__data__,r.__data__):!e-!r}t||(t=H);for(var r=this._groups,i=r.length,o=new Array(i),n=0;n<i;++n){for(var a,s=r[n],l=s.length,h=o[n]=new Array(l),c=0;c<l;++c)(a=s[c])&&(h[c]=a);h.sort(e)}return new ae(o,this._parents).order()}function H(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function U(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function Y(){return Array.from(this)}function G(){for(var t=this._groups,e=0,r=t.length;e<r;++e)for(var i=t[e],o=0,n=i.length;o<n;++o){var a=i[o];if(a)return a}return null}function X(){let t=0;for(const e of this)++t;return t}function V(){return!this.node()}function Z(t){for(var e=this._groups,r=0,i=e.length;r<i;++r)for(var o,n=e[r],a=0,s=n.length;a<s;++a)(o=n[a])&&t.call(o,o.__data__,a,n);return this}Object.defineProperty(F,"name",{value:"default",configurable:!0}),Object.defineProperty(M,"name",{value:"default",configurable:!0}),Object.defineProperty(E,"name",{value:"default",configurable:!0}),$.prototype={constructor:$,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}},Object.defineProperty(O,"name",{value:"default",configurable:!0}),Object.defineProperty(q,"name",{value:"default",configurable:!0}),Object.defineProperty(z,"name",{value:"default",configurable:!0}),Object.defineProperty(K,"name",{value:"default",configurable:!0}),Object.defineProperty(N,"name",{value:"default",configurable:!0}),Object.defineProperty(j,"name",{value:"default",configurable:!0}),Object.defineProperty(W,"name",{value:"default",configurable:!0}),Object.defineProperty(U,"name",{value:"default",configurable:!0}),Object.defineProperty(Y,"name",{value:"default",configurable:!0}),Object.defineProperty(G,"name",{value:"default",configurable:!0}),Object.defineProperty(X,"name",{value:"default",configurable:!0}),Object.defineProperty(V,"name",{value:"default",configurable:!0}),Object.defineProperty(Z,"name",{value:"default",configurable:!0});var Q="http://www.w3.org/1999/xhtml";const J={svg:"http://www.w3.org/2000/svg",xhtml:Q,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function tt(t){var e=t+="",r=e.indexOf(":");return r>=0&&"xmlns"!==(e=t.slice(0,r))&&(t=t.slice(r+1)),J.hasOwnProperty(e)?{space:J[e],local:t}:t}function et(t){return function(){this.removeAttribute(t)}}function rt(t){return function(){this.removeAttributeNS(t.space,t.local)}}function it(t,e){return function(){this.setAttribute(t,e)}}function ot(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function nt(t,e){return function(){var r=e.apply(this,arguments);null==r?this.removeAttribute(t):this.setAttribute(t,r)}}function at(t,e){return function(){var r=e.apply(this,arguments);null==r?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,r)}}function st(t,e){var r=tt(t);if(arguments.length<2){var i=this.node();return r.local?i.getAttributeNS(r.space,r.local):i.getAttribute(r)}return this.each((null==e?r.local?rt:et:"function"==typeof e?r.local?at:nt:r.local?ot:it)(r,e))}function lt(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function ht(t){return function(){this.style.removeProperty(t)}}function ct(t,e,r){return function(){this.style.setProperty(t,e,r)}}function dt(t,e,r){return function(){var i=e.apply(this,arguments);null==i?this.style.removeProperty(t):this.style.setProperty(t,i,r)}}function ut(t,e,r){return arguments.length>1?this.each((null==e?ht:"function"==typeof e?dt:ct)(t,e,null==r?"":r)):pt(this.node(),t)}function pt(t,e){return t.style.getPropertyValue(e)||lt(t).getComputedStyle(t,null).getPropertyValue(e)}function gt(t){return function(){delete this[t]}}function ft(t,e){return function(){this[t]=e}}function yt(t,e){return function(){var r=e.apply(this,arguments);null==r?delete this[t]:this[t]=r}}function mt(t,e){return arguments.length>1?this.each((null==e?gt:"function"==typeof e?yt:ft)(t,e)):this.node()[t]}function Ct(t){return t.trim().split(/^|\s+/)}function xt(t){return t.classList||new bt(t)}function bt(t){this._node=t,this._names=Ct(t.getAttribute("class")||"")}function kt(t,e){for(var r=xt(t),i=-1,o=e.length;++i<o;)r.add(e[i])}function wt(t,e){for(var r=xt(t),i=-1,o=e.length;++i<o;)r.remove(e[i])}function Tt(t){return function(){kt(this,t)}}function St(t){return function(){wt(this,t)}}function vt(t,e){return function(){(e.apply(this,arguments)?kt:wt)(this,t)}}function Bt(t,e){var r=Ct(t+"");if(arguments.length<2){for(var i=xt(this.node()),o=-1,n=r.length;++o<n;)if(!i.contains(r[o]))return!1;return!0}return this.each(("function"==typeof e?vt:e?Tt:St)(r,e))}function _t(){this.textContent=""}function At(t){return function(){this.textContent=t}}function Lt(t){return function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}}function Ft(t){return arguments.length?this.each(null==t?_t:("function"==typeof t?Lt:At)(t)):this.node().textContent}function Mt(){this.innerHTML=""}function Et(t){return function(){this.innerHTML=t}}function $t(t){return function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}}function Ot(t){return arguments.length?this.each(null==t?Mt:("function"==typeof t?$t:Et)(t)):this.node().innerHTML}function Dt(){this.nextSibling&&this.parentNode.appendChild(this)}function It(){return this.each(Dt)}function Pt(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function qt(){return this.each(Pt)}function Rt(t){return function(){var e=this.ownerDocument,r=this.namespaceURI;return r===Q&&e.documentElement.namespaceURI===Q?e.createElement(t):e.createElementNS(r,t)}}function zt(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Kt(t){var e=tt(t);return(e.local?zt:Rt)(e)}function Nt(t){var e="function"==typeof t?t:Kt(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}function jt(){return null}function Wt(t,e){var r="function"==typeof t?t:Kt(t),i=null==e?jt:"function"==typeof e?e:y(e);return this.select(function(){return this.insertBefore(r.apply(this,arguments),i.apply(this,arguments)||null)})}function Ht(){var t=this.parentNode;t&&t.removeChild(this)}function Ut(){return this.each(Ht)}function Yt(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function Gt(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function Xt(t){return this.select(t?Gt:Yt)}function Vt(t){return arguments.length?this.property("__data__",t):this.node().__data__}function Zt(t){return function(){var e=this.__on;if(e){for(var r,i=0,o=-1,n=e.length;i<n;++i)r=e[i],t.type&&r.type!==t.type||r.name!==t.name?e[++o]=r:this.removeEventListener(r.type,r.listener,r.options);++o?e.length=o:delete this.__on}}}function Qt(t,e,r){return function(){var i,o=this.__on,n=function(t){return function(e){t.call(this,e,this.__data__)}}(e);if(o)for(var a=0,s=o.length;a<s;++a)if((i=o[a]).type===t.type&&i.name===t.name)return this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=n,i.options=r),void(i.value=e);this.addEventListener(t.type,n,r),i={type:t.type,name:t.name,value:e,listener:n,options:r},o?o.push(i):this.__on=[i]}}function Jt(t,e,r){var i,o,n=function(t){return t.trim().split(/^|\s+/).map(function(t){var e="",r=t.indexOf(".");return r>=0&&(e=t.slice(r+1),t=t.slice(0,r)),{type:t,name:e}})}(t+""),a=n.length;if(!(arguments.length<2)){for(s=e?Qt:Zt,i=0;i<a;++i)this.each(s(n[i],e,r));return this}var s=this.node().__on;if(s)for(var l,h=0,c=s.length;h<c;++h)for(i=0,l=s[h];i<a;++i)if((o=n[i]).type===l.type&&o.name===l.name)return l.value}function te(t,e,r){var i=lt(t),o=i.CustomEvent;"function"==typeof o?o=new o(e,r):(o=i.document.createEvent("Event"),r?(o.initEvent(e,r.bubbles,r.cancelable),o.detail=r.detail):o.initEvent(e,!1,!1)),t.dispatchEvent(o)}function ee(t,e){return function(){return te(this,t,e)}}function re(t,e){return function(){return te(this,t,e.apply(this,arguments))}}function ie(t,e){return this.each(("function"==typeof e?re:ee)(t,e))}function*oe(){for(var t=this._groups,e=0,r=t.length;e<r;++e)for(var i,o=t[e],n=0,a=o.length;n<a;++n)(i=o[n])&&(yield i)}Object.defineProperty(tt,"name",{value:"default",configurable:!0}),Object.defineProperty(st,"name",{value:"default",configurable:!0}),Object.defineProperty(lt,"name",{value:"default",configurable:!0}),Object.defineProperty(ut,"name",{value:"default",configurable:!0}),Object.defineProperty(mt,"name",{value:"default",configurable:!0}),Object.defineProperty(Bt,"name",{value:"default",configurable:!0}),bt.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}},Object.defineProperty(Ft,"name",{value:"default",configurable:!0}),Object.defineProperty(Ot,"name",{value:"default",configurable:!0}),Object.defineProperty(It,"name",{value:"default",configurable:!0}),Object.defineProperty(qt,"name",{value:"default",configurable:!0}),Object.defineProperty(Kt,"name",{value:"default",configurable:!0}),Object.defineProperty(Nt,"name",{value:"default",configurable:!0}),Object.defineProperty(Wt,"name",{value:"default",configurable:!0}),Object.defineProperty(Ut,"name",{value:"default",configurable:!0}),Object.defineProperty(Xt,"name",{value:"default",configurable:!0}),Object.defineProperty(Vt,"name",{value:"default",configurable:!0}),Object.defineProperty(Jt,"name",{value:"default",configurable:!0}),Object.defineProperty(ie,"name",{value:"default",configurable:!0}),Object.defineProperty(oe,"name",{value:"default",configurable:!0});var ne=[null];function ae(t,e){this._groups=t,this._parents=e}function se(){return new ae([[document.documentElement]],ne)}ae.prototype=se.prototype={constructor:ae,select:m,selectAll:k,selectChild:B,selectChildren:L,filter:F,data:q,enter:E,exit:z,join:K,merge:N,selection:function(){return this},order:j,sort:W,call:U,nodes:Y,node:G,size:X,empty:V,each:Z,attr:st,style:ut,property:mt,classed:Bt,text:Ft,html:Ot,raise:It,lower:qt,append:Nt,insert:Wt,remove:Ut,clone:Xt,datum:Vt,on:Jt,dispatch:ie,[Symbol.iterator]:oe};const le=se;var he={value:()=>{}};function ce(){for(var t,e=0,r=arguments.length,i={};e<r;++e){if(!(t=arguments[e]+"")||t in i||/[\s.]/.test(t))throw new Error("illegal type: "+t);i[t]=[]}return new de(i)}function de(t){this._=t}function ue(t,e){for(var r,i=0,o=t.length;i<o;++i)if((r=t[i]).name===e)return r.value}function pe(t,e,r){for(var i=0,o=t.length;i<o;++i)if(t[i].name===e){t[i]=he,t=t.slice(0,i).concat(t.slice(i+1));break}return null!=r&&t.push({name:e,value:r}),t}de.prototype=ce.prototype={constructor:de,on:function(t,e){var r,i,o=this._,n=(i=o,(t+"").trim().split(/^|\s+/).map(function(t){var e="",r=t.indexOf(".");if(r>=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!i.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}})),a=-1,s=n.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++a<s;)if(r=(t=n[a]).type)o[r]=pe(o[r],t.name,e);else if(null==e)for(r in o)o[r]=pe(o[r],t.name,null);return this}for(;++a<s;)if((r=(t=n[a]).type)&&(r=ue(o[r],t.name)))return r},copy:function(){var t={},e=this._;for(var r in e)t[r]=e[r].slice();return new de(t)},call:function(t,e){if((r=arguments.length-2)>0)for(var r,i,o=new Array(r),n=0;n<r;++n)o[n]=arguments[n+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(n=0,r=(i=this._[t]).length;n<r;++n)i[n].value.apply(e,o)},apply:function(t,e,r){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var i=this._[t],o=0,n=i.length;o<n;++o)i[o].value.apply(e,r)}};const ge=ce;var fe,ye,me=0,Ce=0,xe=0,be=0,ke=0,we=0,Te="object"==typeof performance&&performance.now?performance:Date,Se="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function ve(){return ke||(Se(Be),ke=Te.now()+we)}function Be(){ke=0}function _e(){this._call=this._time=this._next=null}function Ae(t,e,r){var i=new _e;return i.restart(t,e,r),i}function Le(){ke=(be=Te.now())+we,me=Ce=0;try{!function(){ve(),++me;for(var t,e=fe;e;)(t=ke-e._time)>=0&&e._call.call(void 0,t),e=e._next;--me}()}finally{me=0,function(){var t,e,r=fe,i=1/0;for(;r;)r._call?(i>r._time&&(i=r._time),t=r,r=r._next):(e=r._next,r._next=null,r=t?t._next=e:fe=e);ye=t,Me(i)}(),ke=0}}function Fe(){var t=Te.now(),e=t-be;e>1e3&&(we-=e,be=t)}function Me(t){me||(Ce&&(Ce=clearTimeout(Ce)),t-ke>24?(t<1/0&&(Ce=setTimeout(Le,t-Te.now()-we)),xe&&(xe=clearInterval(xe))):(xe||(be=Te.now(),xe=setInterval(Fe,1e3)),me=1,Se(Le)))}function Ee(t,e,r){var i=new _e;return e=null==e?0:+e,i.restart(r=>{i.stop(),t(r+e)},e,r),i}_e.prototype=Ae.prototype={constructor:_e,restart:function(t,e,r){if("function"!=typeof t)throw new TypeError("callback is not a function");r=(null==r?ve():+r)+(null==e?0:+e),this._next||ye===this||(ye?ye._next=this:fe=this,ye=this),this._call=t,this._time=r,Me()},stop:function(){this._call&&(this._call=null,this._time=1/0,Me())}},Object.defineProperty(Ee,"name",{value:"default",configurable:!0}),Object.defineProperty(De,"name",{value:"default",configurable:!0});var $e=ge("start","end","cancel","interrupt"),Oe=[];function De(t,e,r,i,o,n){var a=t.__transition;if(a){if(r in a)return}else t.__transition={};!function(t,e,r){var i,o=t.__transition;function n(t){r.state=1,r.timer.restart(a,r.delay,r.time),r.delay<=t&&a(t-r.delay)}function a(n){var h,c,d,u;if(1!==r.state)return l();for(h in o)if((u=o[h]).name===r.name){if(3===u.state)return Ee(a);4===u.state?(u.state=6,u.timer.stop(),u.on.call("interrupt",t,t.__data__,u.index,u.group),delete o[h]):+h<e&&(u.state=6,u.timer.stop(),u.on.call("cancel",t,t.__data__,u.index,u.group),delete o[h])}if(Ee(function(){3===r.state&&(r.state=4,r.timer.restart(s,r.delay,r.time),s(n))}),r.state=2,r.on.call("start",t,t.__data__,r.index,r.group),2===r.state){for(r.state=3,i=new Array(d=r.tween.length),h=0,c=-1;h<d;++h)(u=r.tween[h].value.call(t,t.__data__,r.index,r.group))&&(i[++c]=u);i.length=c+1}}function s(e){for(var o=e<r.duration?r.ease.call(null,e/r.duration):(r.timer.restart(l),r.state=5,1),n=-1,a=i.length;++n<a;)i[n].call(t,o);5===r.state&&(r.on.call("end",t,t.__data__,r.index,r.group),l())}function l(){for(var i in r.state=6,r.timer.stop(),delete o[e],o)return;delete t.__transition}o[e]=r,r.timer=Ae(n,0,r.time)}(t,r,{name:e,index:i,group:o,on:$e,tween:Oe,time:n.time,delay:n.delay,duration:n.duration,ease:n.ease,timer:null,state:0})}function Ie(t,e){var r=qe(t,e);if(r.state>0)throw new Error("too late; already scheduled");return r}function Pe(t,e){var r=qe(t,e);if(r.state>3)throw new Error("too late; already running");return r}function qe(t,e){var r=t.__transition;if(!r||!(r=r[e]))throw new Error("transition not found");return r}function Re(t,e){var r,i,o,n=t.__transition,a=!0;if(n){for(o in e=null==e?null:e+"",n)(r=n[o]).name===e?(i=r.state>2&&r.state<5,r.state=6,r.timer.stop(),r.on.call(i?"interrupt":"cancel",t,t.__data__,r.index,r.group),delete n[o]):a=!1;a&&delete t.__transition}}function ze(t){return this.each(function(){Re(this,t)})}function Ke(t,e){return t=+t,e=+e,function(r){return t*(1-r)+e*r}}Object.defineProperty(Re,"name",{value:"default",configurable:!0}),Object.defineProperty(ze,"name",{value:"default",configurable:!0}),Object.defineProperty(Ke,"name",{value:"default",configurable:!0}),Object.defineProperty(He,"name",{value:"default",configurable:!0});var Ne,je=180/Math.PI,We={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function He(t,e,r,i,o,n){var a,s,l;return(a=Math.sqrt(t*t+e*e))&&(t/=a,e/=a),(l=t*r+e*i)&&(r-=t*l,i-=e*l),(s=Math.sqrt(r*r+i*i))&&(r/=s,i/=s,l/=s),t*i<e*r&&(t=-t,e=-e,l=-l,a=-a),{translateX:o,translateY:n,rotate:Math.atan2(e,t)*je,skewX:Math.atan(l)*je,scaleX:a,scaleY:s}}function Ue(t,e,r,i){function o(t){return t.length?t.pop()+" ":""}return function(n,a){var s=[],l=[];return n=t(n),a=t(a),function(t,i,o,n,a,s){if(t!==o||i!==n){var l=a.push("translate(",null,e,null,r);s.push({i:l-4,x:Ke(t,o)},{i:l-2,x:Ke(i,n)})}else(o||n)&&a.push("translate("+o+e+n+r)}(n.translateX,n.translateY,a.translateX,a.translateY,s,l),function(t,e,r,n){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),n.push({i:r.push(o(r)+"rotate(",null,i)-2,x:Ke(t,e)})):e&&r.push(o(r)+"rotate("+e+i)}(n.rotate,a.rotate,s,l),function(t,e,r,n){t!==e?n.push({i:r.push(o(r)+"skewX(",null,i)-2,x:Ke(t,e)}):e&&r.push(o(r)+"skewX("+e+i)}(n.skewX,a.skewX,s,l),function(t,e,r,i,n,a){if(t!==r||e!==i){var s=n.push(o(n)+"scale(",null,",",null,")");a.push({i:s-4,x:Ke(t,r)},{i:s-2,x:Ke(e,i)})}else 1===r&&1===i||n.push(o(n)+"scale("+r+","+i+")")}(n.scaleX,n.scaleY,a.scaleX,a.scaleY,s,l),n=a=null,function(t){for(var e,r=-1,i=l.length;++r<i;)s[(e=l[r]).i]=e.x(t);return s.join("")}}}var Ye=Ue(function(t){const e=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?We:He(e.a,e.b,e.c,e.d,e.e,e.f)},"px, ","px)","deg)"),Ge=Ue(function(t){return null==t?We:(Ne||(Ne=document.createElementNS("http://www.w3.org/2000/svg","g")),Ne.setAttribute("transform",t),(t=Ne.transform.baseVal.consolidate())?He((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):We)},", ",")",")");function Xe(t,e){var r,i;return function(){var o=Pe(this,t),n=o.tween;if(n!==r)for(var a=0,s=(i=r=n).length;a<s;++a)if(i[a].name===e){(i=i.slice()).splice(a,1);break}o.tween=i}}function Ve(t,e,r){var i,o;if("function"!=typeof r)throw new Error;return function(){var n=Pe(this,t),a=n.tween;if(a!==i){o=(i=a).slice();for(var s={name:e,value:r},l=0,h=o.length;l<h;++l)if(o[l].name===e){o[l]=s;break}l===h&&o.push(s)}n.tween=o}}function Ze(t,e){var r=this._id;if(t+="",arguments.length<2){for(var i,o=qe(this.node(),r).tween,n=0,a=o.length;n<a;++n)if((i=o[n]).name===t)return i.value;return null}return this.each((null==e?Xe:Ve)(r,t,e))}function Qe(t,e,r){var i=t._id;return t.each(function(){var t=Pe(this,i);(t.value||(t.value={}))[e]=r.apply(this,arguments)}),function(t){return qe(t,i).value[e]}}function Je(t,e,r){t.prototype=e.prototype=r,r.constructor=t}function tr(t,e){var r=Object.create(t.prototype);for(var i in e)r[i]=e[i];return r}function er(){}Object.defineProperty(Ze,"name",{value:"default",configurable:!0}),Object.defineProperty(Je,"name",{value:"default",configurable:!0});var rr=.7,ir=1/rr,or="\\s*([+-]?\\d+)\\s*",nr="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",ar="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",sr=/^#([0-9a-f]{3,8})$/,lr=new RegExp(`^rgb\\(${or},${or},${or}\\)$`),hr=new RegExp(`^rgb\\(${ar},${ar},${ar}\\)$`),cr=new RegExp(`^rgba\\(${or},${or},${or},${nr}\\)$`),dr=new RegExp(`^rgba\\(${ar},${ar},${ar},${nr}\\)$`),ur=new RegExp(`^hsl\\(${nr},${ar},${ar}\\)$`),pr=new RegExp(`^hsla\\(${nr},${ar},${ar},${nr}\\)$`),gr={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function fr(){return this.rgb().formatHex()}function yr(){return this.rgb().formatRgb()}function mr(t){var e,r;return t=(t+"").trim().toLowerCase(),(e=sr.exec(t))?(r=e[1].length,e=parseInt(e[1],16),6===r?Cr(e):3===r?new wr(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===r?xr(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===r?xr(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=lr.exec(t))?new wr(e[1],e[2],e[3],1):(e=hr.exec(t))?new wr(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=cr.exec(t))?xr(e[1],e[2],e[3],e[4]):(e=dr.exec(t))?xr(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=ur.exec(t))?Ar(e[1],e[2]/100,e[3]/100,1):(e=pr.exec(t))?Ar(e[1],e[2]/100,e[3]/100,e[4]):gr.hasOwnProperty(t)?Cr(gr[t]):"transparent"===t?new wr(NaN,NaN,NaN,0):null}function Cr(t){return new wr(t>>16&255,t>>8&255,255&t,1)}function xr(t,e,r,i){return i<=0&&(t=e=r=NaN),new wr(t,e,r,i)}function br(t){return t instanceof er||(t=mr(t)),t?new wr((t=t.rgb()).r,t.g,t.b,t.opacity):new wr}function kr(t,e,r,i){return 1===arguments.length?br(t):new wr(t,e,r,null==i?1:i)}function wr(t,e,r,i){this.r=+t,this.g=+e,this.b=+r,this.opacity=+i}function Tr(){return`#${_r(this.r)}${_r(this.g)}${_r(this.b)}`}function Sr(){const t=vr(this.opacity);return`${1===t?"rgb(":"rgba("}${Br(this.r)}, ${Br(this.g)}, ${Br(this.b)}${1===t?")":`, ${t})`}`}function vr(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Br(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function _r(t){return((t=Br(t))<16?"0":"")+t.toString(16)}function Ar(t,e,r,i){return i<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new Fr(t,e,r,i)}function Lr(t){if(t instanceof Fr)return new Fr(t.h,t.s,t.l,t.opacity);if(t instanceof er||(t=mr(t)),!t)return new Fr;if(t instanceof Fr)return t;var e=(t=t.rgb()).r/255,r=t.g/255,i=t.b/255,o=Math.min(e,r,i),n=Math.max(e,r,i),a=NaN,s=n-o,l=(n+o)/2;return s?(a=e===n?(r-i)/s+6*(r<i):r===n?(i-e)/s+2:(e-r)/s+4,s/=l<.5?n+o:2-n-o,a*=60):s=l>0&&l<1?0:a,new Fr(a,s,l,t.opacity)}function Fr(t,e,r,i){this.h=+t,this.s=+e,this.l=+r,this.opacity=+i}function Mr(t){return(t=(t||0)%360)<0?t+360:t}function Er(t){return Math.max(0,Math.min(1,t||0))}function $r(t,e,r){return 255*(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)}function Or(t,e,r,i,o){var n=t*t,a=n*t;return((1-3*t+3*n-a)*e+(4-6*n+3*a)*r+(1+3*t+3*n-3*a)*i+a*o)/6}function Dr(t){var e=t.length-1;return function(r){var i=r<=0?r=0:r>=1?(r=1,e-1):Math.floor(r*e),o=t[i],n=t[i+1],a=i>0?t[i-1]:2*o-n,s=i<e-1?t[i+2]:2*n-o;return Or((r-i/e)*e,a,o,n,s)}}function Ir(t){var e=t.length;return function(r){var i=Math.floor(((r%=1)<0?++r:r)*e),o=t[(i+e-1)%e],n=t[i%e],a=t[(i+1)%e],s=t[(i+2)%e];return Or((r-i/e)*e,o,n,a,s)}}Je(er,mr,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:fr,formatHex:fr,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return Lr(this).formatHsl()},formatRgb:yr,toString:yr}),Je(wr,kr,tr(er,{brighter(t){return t=null==t?ir:Math.pow(ir,t),new wr(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?rr:Math.pow(rr,t),new wr(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new wr(Br(this.r),Br(this.g),Br(this.b),vr(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Tr,formatHex:Tr,formatHex8:function(){return`#${_r(this.r)}${_r(this.g)}${_r(this.b)}${_r(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:Sr,toString:Sr})),Je(Fr,function(t,e,r,i){return 1===arguments.length?Lr(t):new Fr(t,e,r,null==i?1:i)},tr(er,{brighter(t){return t=null==t?ir:Math.pow(ir,t),new Fr(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?rr:Math.pow(rr,t),new Fr(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,i=r+(r<.5?r:1-r)*e,o=2*r-i;return new wr($r(t>=240?t-240:t+120,o,i),$r(t,o,i),$r(t<120?t+240:t-120,o,i),this.opacity)},clamp(){return new Fr(Mr(this.h),Er(this.s),Er(this.l),vr(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=vr(this.opacity);return`${1===t?"hsl(":"hsla("}${Mr(this.h)}, ${100*Er(this.s)}%, ${100*Er(this.l)}%${1===t?")":`, ${t})`}`}})),Object.defineProperty(Dr,"name",{value:"default",configurable:!0}),Object.defineProperty(Ir,"name",{value:"default",configurable:!0});const Pr=t=>()=>t;function qr(t,e){return function(r){return t+r*e}}function Rr(t){return 1===(t=+t)?zr:function(e,r){return r-e?function(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(i){return Math.pow(t+i*e,r)}}(e,r,t):Pr(isNaN(e)?r:e)}}function zr(t,e){var r=e-t;return r?qr(t,r):Pr(isNaN(t)?e:t)}(Object.getOwnPropertyDescriptor(Pr,"name")||{}).writable||Object.defineProperty(Pr,"name",{value:"default",configurable:!0});const Kr=function t(e){var r=Rr(e);function i(t,e){var i=r((t=kr(t)).r,(e=kr(e)).r),o=r(t.g,e.g),n=r(t.b,e.b),a=zr(t.opacity,e.opacity);return function(e){return t.r=i(e),t.g=o(e),t.b=n(e),t.opacity=a(e),t+""}}return i.gamma=t,i}(1);function Nr(t){return function(e){var r,i,o=e.length,n=new Array(o),a=new Array(o),s=new Array(o);for(r=0;r<o;++r)i=kr(e[r]),n[r]=i.r||0,a[r]=i.g||0,s[r]=i.b||0;return n=t(n),a=t(a),s=t(s),i.opacity=1,function(t){return i.r=n(t),i.g=a(t),i.b=s(t),i+""}}}Nr(Dr),Nr(Ir);Object.defineProperty(Hr,"name",{value:"default",configurable:!0});var jr=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Wr=new RegExp(jr.source,"g");function Hr(t,e){var r,i,o,n=jr.lastIndex=Wr.lastIndex=0,a=-1,s=[],l=[];for(t+="",e+="";(r=jr.exec(t))&&(i=Wr.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),s[a]?s[a]+=o:s[++a]=o),(r=r[0])===(i=i[0])?s[a]?s[a]+=i:s[++a]=i:(s[++a]=null,l.push({i:a,x:Ke(r,i)})),n=Wr.lastIndex;return n<e.length&&(o=e.slice(n),s[a]?s[a]+=o:s[++a]=o),s.length<2?l[0]?function(t){return function(e){return t(e)+""}}(l[0].x):function(t){return function(){return t}}(e):(e=l.length,function(t){for(var r,i=0;i<e;++i)s[(r=l[i]).i]=r.x(t);return s.join("")})}function Ur(t,e){var r;return("number"==typeof e?Ke:e instanceof mr?Kr:(r=mr(e))?(e=r,Kr):Hr)(t,e)}function Yr(t){return function(){this.removeAttribute(t)}}function Gr(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Xr(t,e,r){var i,o,n=r+"";return function(){var a=this.getAttribute(t);return a===n?null:a===i?o:o=e(i=a,r)}}function Vr(t,e,r){var i,o,n=r+"";return function(){var a=this.getAttributeNS(t.space,t.local);return a===n?null:a===i?o:o=e(i=a,r)}}function Zr(t,e,r){var i,o,n;return function(){var a,s,l=r(this);if(null!=l)return(a=this.getAttribute(t))===(s=l+"")?null:a===i&&s===o?n:(o=s,n=e(i=a,l));this.removeAttribute(t)}}function Qr(t,e,r){var i,o,n;return function(){var a,s,l=r(this);if(null!=l)return(a=this.getAttributeNS(t.space,t.local))===(s=l+"")?null:a===i&&s===o?n:(o=s,n=e(i=a,l));this.removeAttributeNS(t.space,t.local)}}function Jr(t,e){var r=tt(t),i="transform"===r?Ge:Ur;return this.attrTween(t,"function"==typeof e?(r.local?Qr:Zr)(r,i,Qe(this,"attr."+t,e)):null==e?(r.local?Gr:Yr)(r):(r.local?Vr:Xr)(r,i,e))}function ti(t,e){var r,i;function o(){var o=e.apply(this,arguments);return o!==i&&(r=(i=o)&&function(t,e){return function(r){this.setAttributeNS(t.space,t.local,e.call(this,r))}}(t,o)),r}return o._value=e,o}function ei(t,e){var r,i;function o(){var o=e.apply(this,arguments);return o!==i&&(r=(i=o)&&function(t,e){return function(r){this.setAttribute(t,e.call(this,r))}}(t,o)),r}return o._value=e,o}function ri(t,e){var r="attr."+t;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==e)return this.tween(r,null);if("function"!=typeof e)throw new Error;var i=tt(t);return this.tween(r,(i.local?ti:ei)(i,e))}function ii(t,e){return function(){Ie(this,t).delay=+e.apply(this,arguments)}}function oi(t,e){return e=+e,function(){Ie(this,t).delay=e}}function ni(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?ii:oi)(e,t)):qe(this.node(),e).delay}function ai(t,e){return function(){Pe(this,t).duration=+e.apply(this,arguments)}}function si(t,e){return e=+e,function(){Pe(this,t).duration=e}}function li(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?ai:si)(e,t)):qe(this.node(),e).duration}function hi(t){var e=this._id;return arguments.length?this.each(function(t,e){if("function"!=typeof e)throw new Error;return function(){Pe(this,t).ease=e}}(e,t)):qe(this.node(),e).ease}function ci(t){if("function"!=typeof t)throw new Error;return this.each(function(t,e){return function(){var r=e.apply(this,arguments);if("function"!=typeof r)throw new Error;Pe(this,t).ease=r}}(this._id,t))}function di(t){"function"!=typeof t&&(t=w(t));for(var e=this._groups,r=e.length,i=new Array(r),o=0;o<r;++o)for(var n,a=e[o],s=a.length,l=i[o]=[],h=0;h<s;++h)(n=a[h])&&t.call(n,n.__data__,h,a)&&l.push(n);return new _i(i,this._parents,this._name,this._id)}function ui(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,r=t._groups,i=e.length,o=r.length,n=Math.min(i,o),a=new Array(i),s=0;s<n;++s)for(var l,h=e[s],c=r[s],d=h.length,u=a[s]=new Array(d),p=0;p<d;++p)(l=h[p]||c[p])&&(u[p]=l);for(;s<i;++s)a[s]=e[s];return new _i(a,this._parents,this._name,this._id)}function pi(t,e){var r=this._id;return arguments.length<2?qe(this.node(),r).on.on(t):this.each(function(t,e,r){var i,o,n=function(t){return(t+"").trim().split(/^|\s+/).every(function(t){var e=t.indexOf(".");return e>=0&&(t=t.slice(0,e)),!t||"start"===t})}(e)?Ie:Pe;return function(){var a=n(this,t),s=a.on;s!==i&&(o=(i=s).copy()).on(e,r),a.on=o}}(r,t,e))}function gi(){return this.on("end.remove",function(t){return function(){var e=this.parentNode;for(var r in this.__transition)if(+r!==t)return;e&&e.removeChild(this)}}(this._id))}function fi(t){var e=this._name,r=this._id;"function"!=typeof t&&(t=y(t));for(var i=this._groups,o=i.length,n=new Array(o),a=0;a<o;++a)for(var s,l,h=i[a],c=h.length,d=n[a]=new Array(c),u=0;u<c;++u)(s=h[u])&&(l=t.call(s,s.__data__,u,h))&&("__data__"in s&&(l.__data__=s.__data__),d[u]=l,De(d[u],e,r,u,d,qe(s,r)));return new _i(n,this._parents,e,r)}function yi(t){var e=this._name,r=this._id;"function"!=typeof t&&(t=x(t));for(var i=this._groups,o=i.length,n=[],a=[],s=0;s<o;++s)for(var l,h=i[s],c=h.length,d=0;d<c;++d)if(l=h[d]){for(var u,p=t.call(l,l.__data__,d,h),g=qe(l,r),f=0,y=p.length;f<y;++f)(u=p[f])&&De(u,e,r,f,p,g);n.push(p),a.push(l)}return new _i(n,a,e,r)}Object.defineProperty(Ur,"name",{value:"default",configurable:!0}),Object.defineProperty(Jr,"name",{value:"default",configurable:!0}),Object.defineProperty(ri,"name",{value:"default",configurable:!0}),Object.defineProperty(ni,"name",{value:"default",configurable:!0}),Object.defineProperty(li,"name",{value:"default",configurable:!0}),Object.defineProperty(hi,"name",{value:"default",configurable:!0}),Object.defineProperty(ci,"name",{value:"default",configurable:!0}),Object.defineProperty(di,"name",{value:"default",configurable:!0}),Object.defineProperty(ui,"name",{value:"default",configurable:!0}),Object.defineProperty(pi,"name",{value:"default",configurable:!0}),Object.defineProperty(gi,"name",{value:"default",configurable:!0}),Object.defineProperty(fi,"name",{value:"default",configurable:!0}),Object.defineProperty(yi,"name",{value:"default",configurable:!0}),Object.defineProperty(Ci,"name",{value:"default",configurable:!0});var mi=le.prototype.constructor;function Ci(){return new mi(this._groups,this._parents)}function xi(t){return function(){this.style.removeProperty(t)}}function bi(t,e,r){var i="transform"==(t+="")?Ye:Ur;return null==e?this.styleTween(t,function(t,e){var r,i,o;return function(){var n=pt(this,t),a=(this.style.removeProperty(t),pt(this,t));return n===a?null:n===r&&a===i?o:o=e(r=n,i=a)}}(t,i)).on("end.style."+t,xi(t)):"function"==typeof e?this.styleTween(t,function(t,e,r){var i,o,n;return function(){var a=pt(this,t),s=r(this),l=s+"";return null==s&&(this.style.removeProperty(t),l=s=pt(this,t)),a===l?null:a===i&&l===o?n:(o=l,n=e(i=a,s))}}(t,i,Qe(this,"style."+t,e))).each(function(t,e){var r,i,o,n,a="style."+e,s="end."+a;return function(){var l=Pe(this,t),h=l.on,c=null==l.value[a]?n||(n=xi(e)):void 0;h===r&&o===c||(i=(r=h).copy()).on(s,o=c),l.on=i}}(this._id,t)):this.styleTween(t,function(t,e,r){var i,o,n=r+"";return function(){var a=pt(this,t);return a===n?null:a===i?o:o=e(i=a,r)}}(t,i,e),r).on("end.style."+t,null)}function ki(t,e,r){var i="style."+(t+="");if(arguments.length<2)return(i=this.tween(i))&&i._value;if(null==e)return this.tween(i,null);if("function"!=typeof e)throw new Error;return this.tween(i,function(t,e,r){var i,o;function n(){var n=e.apply(this,arguments);return n!==o&&(i=(o=n)&&function(t,e,r){return function(i){this.style.setProperty(t,e.call(this,i),r)}}(t,n,r)),i}return n._value=e,n}(t,e,null==r?"":r))}function wi(t){return this.tween("text","function"==typeof t?function(t){return function(){var e=t(this);this.textContent=null==e?"":e}}(Qe(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))}function Ti(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(null==t)return this.tween(e,null);if("function"!=typeof t)throw new Error;return this.tween(e,function(t){var e,r;function i(){var i=t.apply(this,arguments);return i!==r&&(e=(r=i)&&function(t){return function(e){this.textContent=t.call(this,e)}}(i)),e}return i._value=t,i}(t))}function Si(){for(var t=this._name,e=this._id,r=Ai(),i=this._groups,o=i.length,n=0;n<o;++n)for(var a,s=i[n],l=s.length,h=0;h<l;++h)if(a=s[h]){var c=qe(a,e);De(a,t,r,h,s,{time:c.time+c.delay+c.duration,delay:0,duration:c.duration,ease:c.ease})}return new _i(i,this._parents,t,r)}function vi(){var t,e,r=this,i=r._id,o=r.size();return new Promise(function(n,a){var s={value:a},l={value:function(){0===--o&&n()}};r.each(function(){var r=Pe(this,i),o=r.on;o!==t&&((e=(t=o).copy())._.cancel.push(s),e._.interrupt.push(s),e._.end.push(l)),r.on=e}),0===o&&n()})}Object.defineProperty(bi,"name",{value:"default",configurable:!0}),Object.defineProperty(ki,"name",{value:"default",configurable:!0}),Object.defineProperty(wi,"name",{value:"default",configurable:!0}),Object.defineProperty(Ti,"name",{value:"default",configurable:!0}),Object.defineProperty(Si,"name",{value:"default",configurable:!0}),Object.defineProperty(vi,"name",{value:"default",configurable:!0});var Bi=0;function _i(t,e,r,i){this._groups=t,this._parents=e,this._name=r,this._id=i}function Ai(){return++Bi}var Li=le.prototype;_i.prototype=function(t){return le().transition(t)}.prototype={constructor:_i,select:fi,selectAll:yi,selectChild:Li.selectChild,selectChildren:Li.selectChildren,filter:di,merge:ui,selection:Ci,transition:Si,call:Li.call,nodes:Li.nodes,node:Li.node,size:Li.size,empty:Li.empty,each:Li.each,on:pi,attr:Jr,attrTween:ri,style:bi,styleTween:ki,text:wi,textTween:Ti,remove:gi,tween:Ze,delay:ni,duration:li,ease:hi,easeVarying:ci,end:vi,[Symbol.iterator]:Li[Symbol.iterator]},Object.defineProperty(Pi,"name",{value:"default",configurable:!0});var Fi,Mi,Ei,$i,Oi,Di={time:null,delay:0,duration:250,ease:function(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}};function Ii(t,e){for(var r;!(r=t.__transition)||!(r=r[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return r}function Pi(t){var e,r;t instanceof _i?(e=t._id,t=t._name):(e=Ai(),(r=Di).time=ve(),t=null==t?null:t+"");for(var i=this._groups,o=i.length,n=0;n<o;++n)for(var a,s=i[n],l=s.length,h=0;h<l;++h)(a=s[h])&&De(a,t,e,h,s,r||Ii(a,e));return new _i(i,this._parents,t,e)}le.prototype.interrupt=ze,le.prototype.transition=Pi,Object.defineProperty(function(){return ao(Xi)},"name",{value:"default",configurable:!0});var qi={name:"drag"},Ri={name:"space"},zi={name:"handle"},Ki={name:"center"};const{abs:Ni,max:ji,min:Wi}=Math;function Hi(t){return[+t[0],+t[1]]}function Ui(t){return[Hi(t[0]),Hi(t[1])]}var Yi={name:"x",handles:["w","e"].map(eo),input:function(t,e){return null==t?null:[[+t[0],e[0][1]],[+t[1],e[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},Gi={name:"y",handles:["n","s"].map(eo),input:function(t,e){return null==t?null:[[e[0][0],+t[0]],[e[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},Xi={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(eo),input:function(t){return null==t?null:Ui(t)},output:function(t){return t}},Vi={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Zi={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},Qi={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},Ji={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},to={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function eo(t){return{type:t}}function ro(t){return!t.ctrlKey&&!t.button}function io(){var t=this.ownerSVGElement||this;return t.hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function oo(){return navigator.maxTouchPoints||"ontouchstart"in this}function no(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function ao(t){var e,r=io,i=ro,o=oo,n=!0,a=(void 0)("start","brush","end"),s=6;function l(e){var r=e.property("__brush",f).selectAll(".overlay").data([eo("overlay")]);r.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",Vi.overlay).merge(r).each(function(){var t=no(this).extent;Mi(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])}),e.selectAll(".selection").data([eo("selection")]).enter().append("rect").attr("class","selection").attr("cursor",Vi.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var i=e.selectAll(".handle").data(t.handles,function(t){return t.type});i.exit().remove(),i.enter().append("rect").attr("class",function(t){return"handle handle--"+t.type}).attr("cursor",function(t){return Vi[t.type]}),e.each(h).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",u).filter(o).on("touchstart.brush",u).on("touchmove.brush",p).on("touchend.brush touchcancel.brush",g).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function h(){var t=Mi(this),e=no(this).selection;e?(t.selectAll(".selection").style("display",null).attr("x",e[0][0]).attr("y",e[0][1]).attr("width",e[1][0]-e[0][0]).attr("height",e[1][1]-e[0][1]),t.selectAll(".handle").style("display",null).attr("x",function(t){return"e"===t.type[t.type.length-1]?e[1][0]-s/2:e[0][0]-s/2}).attr("y",function(t){return"s"===t.type[0]?e[1][1]-s/2:e[0][1]-s/2}).attr("width",function(t){return"n"===t.type||"s"===t.type?e[1][0]-e[0][0]+s:s}).attr("height",function(t){return"e"===t.type||"w"===t.type?e[1][1]-e[0][1]+s:s})):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function c(t,e,r){var i=t.__brush.emitter;return!i||r&&i.clean?new d(t,e,r):i}function d(t,e,r){this.that=t,this.args=e,this.state=t.__brush,this.active=0,this.clean=r}function u(r){if((!e||r.touches)&&i.apply(this,arguments)){var o,a,s,l,d,u,p,g,f,y,m,C=this,x=r.target.__data__.type,b="selection"===(n&&r.metaKey?x="overlay":x)?qi:n&&r.altKey?Ki:zi,k=t===Gi?null:Ji[x],w=t===Yi?null:to[x],T=no(C),S=T.extent,v=T.selection,B=S[0][0],_=S[0][1],A=S[1][0],L=S[1][1],F=0,M=0,E=k&&w&&n&&r.shiftKey,$=Array.from(r.touches||[r],t=>{const e=t.identifier;return(t=Fi(t,C)).point0=t.slice(),t.identifier=e,t});Ei(C);var O=c(C,arguments,!0).beforestart();if("overlay"===x){v&&(f=!0);const e=[$[0],$[1]||$[0]];T.selection=v=[[o=t===Gi?B:Wi(e[0][0],e[1][0]),s=t===Yi?_:Wi(e[0][1],e[1][1])],[d=t===Gi?A:ji(e[0][0],e[1][0]),p=t===Yi?L:ji(e[0][1],e[1][1])]],$.length>1&&R(r)}else o=v[0][0],s=v[0][1],d=v[1][0],p=v[1][1];a=o,l=s,u=d,g=p;var D=Mi(C).attr("pointer-events","none"),I=D.selectAll(".overlay").attr("cursor",Vi[x]);if(r.touches)O.moved=q,O.ended=z;else{var P=Mi(r.view).on("mousemove.brush",q,!0).on("mouseup.brush",z,!0);n&&P.on("keydown.brush",function(t){switch(t.keyCode){case 16:E=k&&w;break;case 18:b===zi&&(k&&(d=u-F*k,o=a+F*k),w&&(p=g-M*w,s=l+M*w),b=Ki,R(t));break;case 32:b!==zi&&b!==Ki||(k<0?d=u-F:k>0&&(o=a-F),w<0?p=g-M:w>0&&(s=l-M),b=Ri,I.attr("cursor",Vi.selection),R(t));break;default:return}Oi(t)},!0).on("keyup.brush",function(t){switch(t.keyCode){case 16:E&&(y=m=E=!1,R(t));break;case 18:b===Ki&&(k<0?d=u:k>0&&(o=a),w<0?p=g:w>0&&(s=l),b=zi,R(t));break;case 32:b===Ri&&(t.altKey?(k&&(d=u-F*k,o=a+F*k),w&&(p=g-M*w,s=l+M*w),b=Ki):(k<0?d=u:k>0&&(o=a),w<0?p=g:w>0&&(s=l),b=zi),I.attr("cursor",Vi[x]),R(t));break;default:return}Oi(t)},!0),(void 0)(r.view)}h.call(C),O.start(r,b.name)}function q(t){for(const e of t.changedTouches||[t])for(const t of $)t.identifier===e.identifier&&(t.cur=Fi(e,C));if(E&&!y&&!m&&1===$.length){const t=$[0];Ni(t.cur[0]-t[0])>Ni(t.cur[1]-t[1])?m=!0:y=!0}for(const e of $)e.cur&&(e[0]=e.cur[0],e[1]=e.cur[1]);f=!0,Oi(t),R(t)}function R(t){const e=$[0],r=e.point0;var i;switch(F=e[0]-r[0],M=e[1]-r[1],b){case Ri:case qi:k&&(F=ji(B-o,Wi(A-d,F)),a=o+F,u=d+F),w&&(M=ji(_-s,Wi(L-p,M)),l=s+M,g=p+M);break;case zi:$[1]?(k&&(a=ji(B,Wi(A,$[0][0])),u=ji(B,Wi(A,$[1][0])),k=1),w&&(l=ji(_,Wi(L,$[0][1])),g=ji(_,Wi(L,$[1][1])),w=1)):(k<0?(F=ji(B-o,Wi(A-o,F)),a=o+F,u=d):k>0&&(F=ji(B-d,Wi(A-d,F)),a=o,u=d+F),w<0?(M=ji(_-s,Wi(L-s,M)),l=s+M,g=p):w>0&&(M=ji(_-p,Wi(L-p,M)),l=s,g=p+M));break;case Ki:k&&(a=ji(B,Wi(A,o-F*k)),u=ji(B,Wi(A,d+F*k))),w&&(l=ji(_,Wi(L,s-M*w)),g=ji(_,Wi(L,p+M*w)))}u<a&&(k*=-1,i=o,o=d,d=i,i=a,a=u,u=i,x in Zi&&I.attr("cursor",Vi[x=Zi[x]])),g<l&&(w*=-1,i=s,s=p,p=i,i=l,l=g,g=i,x in Qi&&I.attr("cursor",Vi[x=Qi[x]])),T.selection&&(v=T.selection),y&&(a=v[0][0],u=v[1][0]),m&&(l=v[0][1],g=v[1][1]),v[0][0]===a&&v[0][1]===l&&v[1][0]===u&&v[1][1]===g||(T.selection=[[a,l],[u,g]],h.call(C),O.brush(t,b.name))}function z(t){if((void 0)(t),t.touches){if(t.touches.length)return;e&&clearTimeout(e),e=setTimeout(function(){e=null},500)}else(void 0)(t.view,f),P.on("keydown.brush keyup.brush mousemove.brush mouseup.brush",null);D.attr("pointer-events","all"),I.attr("cursor",Vi.overlay),T.selection&&(v=T.selection),function(t){return t[0][0]===t[1][0]||t[0][1]===t[1][1]}(v)&&(T.selection=null,h.call(C)),O.end(t,b.name)}}function p(t){c(this,arguments).moved(t)}function g(t){c(this,arguments).ended(t)}function f(){var e=this.__brush||{selection:null};return e.extent=Ui(r.apply(this,arguments)),e.dim=t,e}return l.move=function(e,r,i){e.tween?e.on("start.brush",function(t){c(this,arguments).beforestart().start(t)}).on("interrupt.brush end.brush",function(t){c(this,arguments).end(t)}).tween("brush",function(){var e=this,i=e.__brush,o=c(e,arguments),n=i.selection,a=t.input("function"==typeof r?r.apply(this,arguments):r,i.extent),s=(void 0)(n,a);function l(t){i.selection=1===t&&null===a?null:s(t),h.call(e),o.brush()}return null!==n&&null!==a?l:l(1)}):e.each(function(){var e=this,o=arguments,n=e.__brush,a=t.input("function"==typeof r?r.apply(e,o):r,n.extent),s=c(e,o).beforestart();Ei(e),n.selection=null===a?null:a,h.call(e),s.start(i).brush(i).end(i)})},l.clear=function(t,e){l.move(t,null,e)},d.prototype={beforestart:function(){return 1===++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(t,e){return this.starting?(this.starting=!1,this.emit("start",t,e)):this.emit("brush",t),this},brush:function(t,e){return this.emit("brush",t,e),this},end:function(t,e){return 0===--this.active&&(delete this.state.emitter,this.emit("end",t,e)),this},emit:function(e,r,i){var o=Mi(this.that).datum();a.call(e,this.that,new(void 0)(e,{sourceEvent:r,target:l,selection:t.output(this.state.selection),mode:i,dispatch:a}),o)}},l.extent=function(t){return arguments.length?(r="function"==typeof t?t:$i(Ui(t)),l):r},l.filter=function(t){return arguments.length?(i="function"==typeof t?t:$i(!!t),l):i},l.touchable=function(t){return arguments.length?(o="function"==typeof t?t:$i(!!t),l):o},l.handleSize=function(t){return arguments.length?(s=+t,l):s},l.keyModifiers=function(t){return arguments.length?(n=!!t,l):n},l.on=function(){var t=a.on.apply(a,arguments);return t===a?l:t},l}function so(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function lo(t,e){if(!isFinite(t)||0===t)return null;var r=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"),i=t.slice(0,r);return[i.length>1?i[0]+i.slice(2):i,+t.slice(r+1)]}function ho(t){return(t=lo(Math.abs(t)))?t[1]:NaN}function co(t,e){return function(r,i){for(var o=r.length,n=[],a=0,s=t[0],l=0;o>0&&s>0&&(l+s+1>i&&(s=Math.max(1,i-l)),n.push(r.substring(o-=s,o+s)),!((l+=s+1)>i));)s=t[a=(a+1)%t.length];return n.reverse().join(e)}}function uo(t){return function(e){return e.replace(/[0-9]/g,function(e){return t[+e]})}}Object.defineProperty(so,"name",{value:"default",configurable:!0}),Object.defineProperty(ho,"name",{value:"default",configurable:!0}),Object.defineProperty(co,"name",{value:"default",configurable:!0}),Object.defineProperty(uo,"name",{value:"default",configurable:!0});var po,go=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function fo(t){if(!(e=go.exec(t)))throw new Error("invalid format: "+t);var e;return new yo({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function yo(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function mo(t){t:for(var e,r=t.length,i=1,o=-1;i<r;++i)switch(t[i]){case".":o=e=i;break;case"0":0===o&&(o=i),e=i;break;default:if(!+t[i])break t;o>0&&(o=0)}return o>0?t.slice(0,o)+t.slice(e+1):t}function Co(t,e){var r=lo(t,e);if(!r)return po=void 0,t.toPrecision(e);var i=r[0],o=r[1],n=o-(po=3*Math.max(-8,Math.min(8,Math.floor(o/3))))+1,a=i.length;return n===a?i:n>a?i+new Array(n-a+1).join("0"):n>0?i.slice(0,n)+"."+i.slice(n):"0."+new Array(1-n).join("0")+lo(t,Math.max(0,e+n-1))[0]}function xo(t,e){var r=lo(t,e);if(!r)return t+"";var i=r[0],o=r[1];return o<0?"0."+new Array(-o).join("0")+i:i.length>o+1?i.slice(0,o+1)+"."+i.slice(o+1):i+new Array(o-i.length+2).join("0")}fo.prototype=yo.prototype,yo.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type},Object.defineProperty(mo,"name",{value:"default",configurable:!0}),Object.defineProperty(Co,"name",{value:"default",configurable:!0}),Object.defineProperty(xo,"name",{value:"default",configurable:!0});const bo={"%":(t,e)=>(100*t).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:so,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>xo(100*t,e),r:xo,s:Co,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function ko(t){return t}Object.defineProperty(ko,"name",{value:"default",configurable:!0}),Object.defineProperty(_o,"name",{value:"default",configurable:!0});var wo,To,So,vo=Array.prototype.map,Bo=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"];function _o(t){var e=void 0===t.grouping||void 0===t.thousands?ko:co(vo.call(t.grouping,Number),t.thousands+""),r=void 0===t.currency?"":t.currency[0]+"",i=void 0===t.currency?"":t.currency[1]+"",o=void 0===t.decimal?".":t.decimal+"",n=void 0===t.numerals?ko:uo(vo.call(t.numerals,String)),a=void 0===t.percent?"%":t.percent+"",s=void 0===t.minus?"\u2212":t.minus+"",l=void 0===t.nan?"NaN":t.nan+"";function h(t,h){var c=(t=fo(t)).fill,d=t.align,u=t.sign,p=t.symbol,g=t.zero,f=t.width,y=t.comma,m=t.precision,C=t.trim,x=t.type;"n"===x?(y=!0,x="g"):bo[x]||(void 0===m&&(m=12),C=!0,x="g"),(g||"0"===c&&"="===d)&&(g=!0,c="0",d="=");var b=(h&&void 0!==h.prefix?h.prefix:"")+("$"===p?r:"#"===p&&/[boxX]/.test(x)?"0"+x.toLowerCase():""),k=("$"===p?i:/[%p]/.test(x)?a:"")+(h&&void 0!==h.suffix?h.suffix:""),w=bo[x],T=/[defgprs%]/.test(x);function S(t){var r,i,a,h=b,p=k;if("c"===x)p=w(t)+p,t="";else{var S=(t=+t)<0||1/t<0;if(t=isNaN(t)?l:w(Math.abs(t),m),C&&(t=mo(t)),S&&0===+t&&"+"!==u&&(S=!1),h=(S?"("===u?u:s:"-"===u||"("===u?"":u)+h,p=("s"!==x||isNaN(t)||void 0===po?"":Bo[8+po/3])+p+(S&&"("===u?")":""),T)for(r=-1,i=t.length;++r<i;)if(48>(a=t.charCodeAt(r))||a>57){p=(46===a?o+t.slice(r+1):t.slice(r))+p,t=t.slice(0,r);break}}y&&!g&&(t=e(t,1/0));var v=h.length+t.length+p.length,B=v<f?new Array(f-v+1).join(c):"";switch(y&&g&&(t=e(B+t,B.length?f-p.length:1/0),B=""),d){case"<":t=h+t+p+B;break;case"=":t=h+B+t+p;break;case"^":t=B.slice(0,v=B.length>>1)+h+t+p+B.slice(v);break;default:t=B+h+t+p}return n(t)}return m=void 0===m?6:/[gprs]/.test(x)?Math.max(1,Math.min(21,m)):Math.max(0,Math.min(20,m)),S.toString=function(){return t+""},S}return{format:h,formatPrefix:function(t,e){var r=3*Math.max(-8,Math.min(8,Math.floor(ho(e)/3))),i=Math.pow(10,-r),o=h(((t=fo(t)).type="f",t),{suffix:Bo[8+r/3]});return function(t){return o(i*t)}}}}function Ao(t){var e=0,r=t.children,i=r&&r.length;if(i)for(;--i>=0;)e+=r[i].value;else e=1;t.value=e}function Lo(){return this.eachAfter(Ao)}function Fo(t,e){let r=-1;for(const i of this)t.call(e,i,++r,this);return this}function Mo(t,e){for(var r,i,o=this,n=[o],a=-1;o=n.pop();)if(t.call(e,o,++a,this),r=o.children)for(i=r.length-1;i>=0;--i)n.push(r[i]);return this}function Eo(t,e){for(var r,i,o,n=this,a=[n],s=[],l=-1;n=a.pop();)if(s.push(n),r=n.children)for(i=0,o=r.length;i<o;++i)a.push(r[i]);for(;n=s.pop();)t.call(e,n,++l,this);return this}function $o(t,e){let r=-1;for(const i of this)if(t.call(e,i,++r,this))return i}function Oo(t){return this.eachAfter(function(e){for(var r=+t(e.data)||0,i=e.children,o=i&&i.length;--o>=0;)r+=i[o].value;e.value=r})}function Do(t){return this.eachBefore(function(e){e.children&&e.children.sort(t)})}function Io(t){for(var e=this,r=function(t,e){if(t===e)return t;var r=t.ancestors(),i=e.ancestors(),o=null;t=r.pop(),e=i.pop();for(;t===e;)o=t,t=r.pop(),e=i.pop();return o}(e,t),i=[e];e!==r;)e=e.parent,i.push(e);for(var o=i.length;t!==r;)i.splice(o,0,t),t=t.parent;return i}function Po(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e}function qo(){return Array.from(this)}function Ro(){var t=[];return this.eachBefore(function(e){e.children||t.push(e)}),t}function zo(){var t=this,e=[];return t.each(function(r){r!==t&&e.push({source:r.parent,target:r})}),e}function*Ko(){var t,e,r,i,o=this,n=[o];do{for(t=n.reverse(),n=[];o=t.pop();)if(yield o,e=o.children)for(r=0,i=e.length;r<i;++r)n.push(e[r])}while(n.length)}function No(t,e){t instanceof Map?(t=[void 0,t],void 0===e&&(e=Wo)):void 0===e&&(e=jo);for(var r,i,o,n,a,s=new Yo(t),l=[s];r=l.pop();)if((o=e(r.data))&&(a=(o=Array.from(o)).length))for(r.children=o,n=a-1;n>=0;--n)l.push(i=o[n]=new Yo(o[n])),i.parent=r,i.depth=r.depth+1;return s.eachBefore(Uo)}function jo(t){return t.children}function Wo(t){return Array.isArray(t)?t[1]:null}function Ho(t){void 0!==t.data.value&&(t.value=t.data.value),t.data=t.data.data}function Uo(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function Yo(t){this.data=t,this.depth=this.height=0,this.parent=null}function Go(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}function Xo(t,e,r,i,o){for(var n,a=t.children,s=-1,l=a.length,h=t.value&&(i-e)/t.value;++s<l;)(n=a[s]).y0=r,n.y1=o,n.x0=e,n.x1=e+=n.value*h}function Vo(t,e,r,i,o){for(var n,a=t.children,s=-1,l=a.length,h=t.value&&(o-r)/t.value;++s<l;)(n=a[s]).x0=e,n.x1=i,n.y0=r,n.y1=r+=n.value*h}wo=_o({thousands:",",grouping:[3],currency:["$",""]}),To=wo.format,So=wo.formatPrefix,Object.defineProperty(Lo,"name",{value:"default",configurable:!0}),Object.defineProperty(Fo,"name",{value:"default",configurable:!0}),Object.defineProperty(Mo,"name",{value:"default",configurable:!0}),Object.defineProperty(Eo,"name",{value:"default",configurable:!0}),Object.defineProperty($o,"name",{value:"default",configurable:!0}),Object.defineProperty(Oo,"name",{value:"default",configurable:!0}),Object.defineProperty(Do,"name",{value:"default",configurable:!0}),Object.defineProperty(Io,"name",{value:"default",configurable:!0}),Object.defineProperty(Po,"name",{value:"default",configurable:!0}),Object.defineProperty(qo,"name",{value:"default",configurable:!0}),Object.defineProperty(Ro,"name",{value:"default",configurable:!0}),Object.defineProperty(zo,"name",{value:"default",configurable:!0}),Object.defineProperty(Ko,"name",{value:"default",configurable:!0}),Yo.prototype=No.prototype={constructor:Yo,count:Lo,each:Fo,eachAfter:Eo,eachBefore:Mo,find:$o,sum:Oo,sort:Do,path:Io,ancestors:Po,descendants:qo,leaves:Ro,links:zo,copy:function(){return No(this).eachBefore(Ho)},[Symbol.iterator]:Ko},Object.defineProperty(Go,"name",{value:"default",configurable:!0}),Object.defineProperty(Xo,"name",{value:"default",configurable:!0}),Object.defineProperty(Vo,"name",{value:"default",configurable:!0});const Zo=function t(e){function r(t,r,i,o,n){!function(t,e,r,i,o,n){for(var a,s,l,h,c,d,u,p,g,f,y,m=[],C=e.children,x=0,b=0,k=C.length,w=e.value;x<k;){l=o-r,h=n-i;do{c=C[b++].value}while(!c&&b<k);for(d=u=c,y=c*c*(f=Math.max(h/l,l/h)/(w*t)),g=Math.max(u/y,y/d);b<k;++b){if(c+=s=C[b].value,s<d&&(d=s),s>u&&(u=s),y=c*c*f,(p=Math.max(u/y,y/d))>g){c-=s;break}g=p}m.push(a={value:c,dice:l<h,children:C.slice(x,b)}),a.dice?Xo(a,r,i,o,w?i+=h*c/w:n):Vo(a,r,i,w?r+=l*c/w:o,n),w-=c,x=b}}(e,t,r,i,o,n)}return r.ratio=function(e){return t((e=+e)>1?e:1)},r}((1+Math.sqrt(5))/2);function Qo(t){if("function"!=typeof t)throw new Error;return t}function Jo(){return 0}function tn(t){return function(){return t}}function en(){var t=Zo,e=!1,r=1,i=1,o=[0],n=Jo,a=Jo,s=Jo,l=Jo,h=Jo;function c(t){return t.x0=t.y0=0,t.x1=r,t.y1=i,t.eachBefore(d),o=[0],e&&t.eachBefore(Go),t}function d(e){var r=o[e.depth],i=e.x0+r,c=e.y0+r,d=e.x1-r,u=e.y1-r;d<i&&(i=d=(i+d)/2),u<c&&(c=u=(c+u)/2),e.x0=i,e.y0=c,e.x1=d,e.y1=u,e.children&&(r=o[e.depth+1]=n(e)/2,i+=h(e)-r,c+=a(e)-r,(d-=s(e)-r)<i&&(i=d=(i+d)/2),(u-=l(e)-r)<c&&(c=u=(c+u)/2),t(e,i,c,d,u))}return c.round=function(t){return arguments.length?(e=!!t,c):e},c.size=function(t){return arguments.length?(r=+t[0],i=+t[1],c):[r,i]},c.tile=function(e){return arguments.length?(t=Qo(e),c):t},c.padding=function(t){return arguments.length?c.paddingInner(t).paddingOuter(t):c.paddingInner()},c.paddingInner=function(t){return arguments.length?(n="function"==typeof t?t:tn(+t),c):n},c.paddingOuter=function(t){return arguments.length?c.paddingTop(t).paddingRight(t).paddingBottom(t).paddingLeft(t):c.paddingTop()},c.paddingTop=function(t){return arguments.length?(a="function"==typeof t?t:tn(+t),c):a},c.paddingRight=function(t){return arguments.length?(s="function"==typeof t?t:tn(+t),c):s},c.paddingBottom=function(t){return arguments.length?(l="function"==typeof t?t:tn(+t),c):l},c.paddingLeft=function(t){return arguments.length?(h="function"==typeof t?t:tn(+t),c):h},c}Object.defineProperty(tn,"name",{value:"default",configurable:!0}),Object.defineProperty(en,"name",{value:"default",configurable:!0});const rn=Math.PI/180,on=180/Math.PI,nn=.96422,an=.82521,sn=4/29,ln=6/29,hn=3*ln*ln,cn=ln*ln*ln;function dn(t){if(t instanceof un)return new un(t.l,t.a,t.b,t.opacity);if(t instanceof xn)return bn(t);t instanceof wr||(t=br(t));var e,r,i=yn(t.r),o=yn(t.g),n=yn(t.b),a=pn((.2225045*i+.7168786*o+.0606169*n)/1);return i===o&&o===n?e=r=a:(e=pn((.4360747*i+.3850649*o+.1430804*n)/nn),r=pn((.0139322*i+.0971045*o+.7141733*n)/an)),new un(116*a-16,500*(e-a),200*(a-r),t.opacity)}function un(t,e,r,i){this.l=+t,this.a=+e,this.b=+r,this.opacity=+i}function pn(t){return t>cn?Math.pow(t,1/3):t/hn+sn}function gn(t){return t>ln?t*t*t:hn*(t-sn)}function fn(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function yn(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function mn(t){if(t instanceof xn)return new xn(t.h,t.c,t.l,t.opacity);if(t instanceof un||(t=dn(t)),0===t.a&&0===t.b)return new xn(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*on;return new xn(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Cn(t,e,r,i){return 1===arguments.length?mn(t):new xn(t,e,r,null==i?1:i)}function xn(t,e,r,i){this.h=+t,this.c=+e,this.l=+r,this.opacity=+i}function bn(t){if(isNaN(t.h))return new un(t.l,0,0,t.opacity);var e=t.h*rn;return new un(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}function kn(t){return function(e,r){var i=t((e=Cn(e)).h,(r=Cn(r)).h),o=zr(e.c,r.c),n=zr(e.l,r.l),a=zr(e.opacity,r.opacity);return function(t){return e.h=i(t),e.c=o(t),e.l=n(t),e.opacity=a(t),e+""}}}Je(un,function(t,e,r,i){return 1===arguments.length?dn(t):new un(t,e,r,null==i?1:i)},tr(er,{brighter(t){return new un(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker(t){return new un(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,r=isNaN(this.b)?t:t-this.b/200;return new wr(fn(3.1338561*(e=nn*gn(e))-1.6168667*(t=1*gn(t))-.4906146*(r=an*gn(r))),fn(-.9787684*e+1.9161415*t+.033454*r),fn(.0719453*e-.2289914*t+1.4052427*r),this.opacity)}})),Je(xn,Cn,tr(er,{brighter(t){return new xn(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker(t){return new xn(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb(){return bn(this).rgb()}}));const wn=kn(function(t,e){var r=e-t;return r?qr(t,r>180||r<-180?r-360*Math.round(r/360):r):Pr(isNaN(t)?e:t)});kn(zr);function Tn(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}class Sn extends Map{constructor(t,e=An){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),null!=t)for(const[r,i]of t)this.set(r,i)}get(t){return super.get(vn(this,t))}has(t){return super.has(vn(this,t))}set(t,e){return super.set(Bn(this,t),e)}delete(t){return super.delete(_n(this,t))}}Set;function vn({_intern:t,_key:e},r){const i=e(r);return t.has(i)?t.get(i):r}function Bn({_intern:t,_key:e},r){const i=e(r);return t.has(i)?t.get(i):(t.set(i,r),r)}function _n({_intern:t,_key:e},r){const i=e(r);return t.has(i)&&(r=t.get(i),t.delete(i)),r}function An(t){return null!==t&&"object"==typeof t?t.valueOf():t}const Ln=Symbol("implicit");function Fn(){var t=new Sn,e=[],r=[],i=Ln;function o(o){let n=t.get(o);if(void 0===n){if(i!==Ln)return i;t.set(o,n=e.push(o)-1)}return r[n%r.length]}return o.domain=function(r){if(!arguments.length)return e.slice();e=[],t=new Sn;for(const i of r)t.has(i)||t.set(i,e.push(i)-1);return o},o.range=function(t){return arguments.length?(r=Array.from(t),o):r.slice()},o.unknown=function(t){return arguments.length?(i=t,o):i},o.copy=function(){return Fn(e,r).unknown(i)},Tn.apply(o,arguments),o}function Mn(){var t,e,r=Fn().unknown(void 0),i=r.domain,o=r.range,n=0,a=1,s=!1,l=0,h=0,c=.5;function d(){var r=i().length,d=a<n,u=d?a:n,p=d?n:a;t=(p-u)/Math.max(1,r-l+2*h),s&&(t=Math.floor(t)),u+=(p-u-t*(r-l))*c,e=t*(1-l),s&&(u=Math.round(u),e=Math.round(e));var g=function(t,e,r){t=+t,e=+e,r=(o=arguments.length)<2?(e=t,t=0,1):o<3?1:+r;for(var i=-1,o=0|Math.max(0,Math.ceil((e-t)/r)),n=new Array(o);++i<o;)n[i]=t+i*r;return n}(r).map(function(e){return u+t*e});return o(d?g.reverse():g)}return delete r.unknown,r.domain=function(t){return arguments.length?(i(t),d()):i()},r.range=function(t){return arguments.length?([n,a]=t,n=+n,a=+a,d()):[n,a]},r.rangeRound=function(t){return[n,a]=t,n=+n,a=+a,s=!0,d()},r.bandwidth=function(){return e},r.step=function(){return t},r.round=function(t){return arguments.length?(s=!!t,d()):s},r.padding=function(t){return arguments.length?(l=Math.min(1,h=+t),d()):l},r.paddingInner=function(t){return arguments.length?(l=Math.min(1,t),d()):l},r.paddingOuter=function(t){return arguments.length?(h=+t,d()):h},r.align=function(t){return arguments.length?(c=Math.max(0,Math.min(1,t)),d()):c},r.copy=function(){return Mn(i(),[n,a]).round(s).paddingInner(l).paddingOuter(h).align(c)},Tn.apply(d(),arguments)}const En=Math.sqrt(50),$n=Math.sqrt(10),On=Math.sqrt(2);function Dn(t,e,r){const i=(e-t)/Math.max(0,r),o=Math.floor(Math.log10(i)),n=i/Math.pow(10,o),a=n>=En?10:n>=$n?5:n>=On?2:1;let s,l,h;return o<0?(h=Math.pow(10,-o)/a,s=Math.round(t*h),l=Math.round(e*h),s/h<t&&++s,l/h>e&&--l,h=-h):(h=Math.pow(10,o)*a,s=Math.round(t/h),l=Math.round(e/h),s*h<t&&++s,l*h>e&&--l),l<s&&.5<=r&&r<2?Dn(t,e,2*r):[s,l,h]}function In(t,e,r){return Dn(t=+t,e=+e,r=+r)[2]}function Pn(t,e,r){r=+r;const i=(e=+e)<(t=+t),o=i?In(e,t,r):In(t,e,r);return(i?-1:1)*(o<0?1/-o:o)}function qn(t,e){return null==t||null==e?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Rn(t,e){return null==t||null==e?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function zn(t){let e,r,i;function o(t,i,o=0,n=t.length){if(o<n){if(0!==e(i,i))return n;do{const e=o+n>>>1;r(t[e],i)<0?o=e+1:n=e}while(o<n)}return o}return 2!==t.length?(e=qn,r=(e,r)=>qn(t(e),r),i=(e,r)=>t(e)-r):(e=t===qn||t===Rn?t:Kn,r=t,i=t),{left:o,center:function(t,e,r=0,n=t.length){const a=o(t,e,r,n-1);return a>r&&i(t[a-1],e)>-i(t[a],e)?a-1:a},right:function(t,i,o=0,n=t.length){if(o<n){if(0!==e(i,i))return n;do{const e=o+n>>>1;r(t[e],i)<=0?o=e+1:n=e}while(o<n)}return o}}}function Kn(){return 0}const Nn=zn(qn),jn=Nn.right,Wn=(Nn.left,zn(function(t){return null===t?NaN:+t}).center,jn);function Hn(t,e){var r,i=e?e.length:0,o=t?Math.min(i,t.length):0,n=new Array(o),a=new Array(i);for(r=0;r<o;++r)n[r]=Xn(t[r],e[r]);for(;r<i;++r)a[r]=e[r];return function(t){for(r=0;r<o;++r)a[r]=n[r](t);return a}}function Un(t,e){var r=new Date;return t=+t,e=+e,function(i){return r.setTime(t*(1-i)+e*i),r}}function Yn(t,e){var r,i={},o={};for(r in null!==t&&"object"==typeof t||(t={}),null!==e&&"object"==typeof e||(e={}),e)r in t?i[r]=Xn(t[r],e[r]):o[r]=e[r];return function(t){for(r in i)o[r]=i[r](t);return o}}function Gn(t,e){e||(e=[]);var r,i=t?Math.min(e.length,t.length):0,o=e.slice();return function(n){for(r=0;r<i;++r)o[r]=t[r]*(1-n)+e[r]*n;return o}}function Xn(t,e){var r,i,o=typeof e;return null==e||"boolean"===o?Pr(e):("number"===o?Ke:"string"===o?(r=mr(e))?(e=r,Kr):Hr:e instanceof mr?Kr:e instanceof Date?Un:(i=e,!ArrayBuffer.isView(i)||i instanceof DataView?Array.isArray(e)?Hn:"function"!=typeof e.valueOf&&"function"!=typeof e.toString||isNaN(e)?Yn:Ke:Gn))(t,e)}function Vn(t,e){return t=+t,e=+e,function(r){return Math.round(t*(1-r)+e*r)}}function Zn(t){return+t}Object.defineProperty(function(t,e){return((void 0)(e)?void 0:Hn)(t,e)},"name",{value:"default",configurable:!0}),Object.defineProperty(Un,"name",{value:"default",configurable:!0}),Object.defineProperty(Yn,"name",{value:"default",configurable:!0}),Object.defineProperty(Gn,"name",{value:"default",configurable:!0}),Object.defineProperty(Xn,"name",{value:"default",configurable:!0}),Object.defineProperty(Vn,"name",{value:"default",configurable:!0});var Qn=[0,1];function Jn(t){return t}function ta(t,e){return(e-=t=+t)?function(r){return(r-t)/e}:(r=isNaN(e)?NaN:.5,function(){return r});var r}function ea(t,e,r){var i=t[0],o=t[1],n=e[0],a=e[1];return o<i?(i=ta(o,i),n=r(a,n)):(i=ta(i,o),n=r(n,a)),function(t){return n(i(t))}}function ra(t,e,r){var i=Math.min(t.length,e.length)-1,o=new Array(i),n=new Array(i),a=-1;for(t[i]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++a<i;)o[a]=ta(t[a],t[a+1]),n[a]=r(e[a],e[a+1]);return function(e){var r=Wn(t,e,1,i)-1;return n[r](o[r](e))}}function ia(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function oa(){var t,e,r,i,o,n,a=Qn,s=Qn,l=Xn,h=Jn;function c(){var t,e,r,l=Math.min(a.length,s.length);return h!==Jn&&(t=a[0],e=a[l-1],t>e&&(r=t,t=e,e=r),h=function(r){return Math.max(t,Math.min(e,r))}),i=l>2?ra:ea,o=n=null,d}function d(e){return null==e||isNaN(e=+e)?r:(o||(o=i(a.map(t),s,l)))(t(h(e)))}return d.invert=function(r){return h(e((n||(n=i(s,a.map(t),Ke)))(r)))},d.domain=function(t){return arguments.length?(a=Array.from(t,Zn),c()):a.slice()},d.range=function(t){return arguments.length?(s=Array.from(t),c()):s.slice()},d.rangeRound=function(t){return s=Array.from(t),l=Vn,c()},d.clamp=function(t){return arguments.length?(h=!!t||Jn,c()):h!==Jn},d.interpolate=function(t){return arguments.length?(l=t,c()):l},d.unknown=function(t){return arguments.length?(r=t,d):r},function(r,i){return t=r,e=i,c()}}function na(){return oa()(Jn,Jn)}function aa(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(ho(e)/3)))-ho(Math.abs(t)))}function sa(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,ho(e)-ho(t))+1}function la(t){return Math.max(0,-ho(Math.abs(t)))}function ha(t){var e=t.domain;return t.ticks=function(t){var r=e();return function(t,e,r){if(!((r=+r)>0))return[];if((t=+t)===(e=+e))return[t];const i=e<t,[o,n,a]=i?Dn(e,t,r):Dn(t,e,r);if(!(n>=o))return[];const s=n-o+1,l=new Array(s);if(i)if(a<0)for(let h=0;h<s;++h)l[h]=(n-h)/-a;else for(let h=0;h<s;++h)l[h]=(n-h)*a;else if(a<0)for(let h=0;h<s;++h)l[h]=(o+h)/-a;else for(let h=0;h<s;++h)l[h]=(o+h)*a;return l}(r[0],r[r.length-1],null==t?10:t)},t.tickFormat=function(t,r){var i=e();return function(t,e,r,i){var o,n=Pn(t,e,r);switch((i=fo(null==i?",f":i)).type){case"s":var a=Math.max(Math.abs(t),Math.abs(e));return null!=i.precision||isNaN(o=aa(n,a))||(i.precision=o),So(i,a);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(o=sa(n,Math.max(Math.abs(t),Math.abs(e))))||(i.precision=o-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(o=la(n))||(i.precision=o-2*("%"===i.type))}return To(i)}(i[0],i[i.length-1],null==t?10:t,r)},t.nice=function(r){null==r&&(r=10);var i,o,n=e(),a=0,s=n.length-1,l=n[a],h=n[s],c=10;for(h<l&&(o=l,l=h,h=o,o=a,a=s,s=o);c-- >0;){if((o=In(l,h,r))===i)return n[a]=l,n[s]=h,e(n);if(o>0)l=Math.floor(l/o)*o,h=Math.ceil(h/o)*o;else{if(!(o<0))break;l=Math.ceil(l*o)/o,h=Math.floor(h*o)/o}i=o}return t},t}function ca(){var t=na();return t.copy=function(){return ia(t,ca())},Tn.apply(t,arguments),ha(t)}Object.defineProperty(aa,"name",{value:"default",configurable:!0}),Object.defineProperty(sa,"name",{value:"default",configurable:!0}),Object.defineProperty(la,"name",{value:"default",configurable:!0});const da=1e3,ua=6e4,pa=36e5,ga=864e5,fa=6048e5,ya=2592e6,ma=31536e6,Ca=new Date,xa=new Date;function ba(t,e,r,i){function o(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return o.floor=e=>(t(e=new Date(+e)),e),o.ceil=r=>(t(r=new Date(r-1)),e(r,1),t(r),r),o.round=t=>{const e=o(t),r=o.ceil(t);return t-e<r-t?e:r},o.offset=(t,r)=>(e(t=new Date(+t),null==r?1:Math.floor(r)),t),o.range=(r,i,n)=>{const a=[];if(r=o.ceil(r),n=null==n?1:Math.floor(n),!(r<i&&n>0))return a;let s;do{a.push(s=new Date(+r)),e(r,n),t(r)}while(s<r&&r<i);return a},o.filter=r=>ba(e=>{if(e>=e)for(;t(e),!r(e);)e.setTime(e-1)},(t,i)=>{if(t>=t)if(i<0)for(;++i<=0;)for(;e(t,-1),!r(t););else for(;--i>=0;)for(;e(t,1),!r(t););}),r&&(o.count=(e,i)=>(Ca.setTime(+e),xa.setTime(+i),t(Ca),t(xa),Math.floor(r(Ca,xa))),o.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?o.filter(i?e=>i(e)%t===0:e=>o.count(0,e)%t===0):o:null)),o}const ka=ba(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);ka.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?ba(e=>{e.setTime(Math.floor(e/t)*t)},(e,r)=>{e.setTime(+e+r*t)},(e,r)=>(r-e)/t):ka:null);ka.range;const wa=ba(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*da)},(t,e)=>(e-t)/da,t=>t.getUTCSeconds()),Ta=(wa.range,ba(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*da)},(t,e)=>{t.setTime(+t+e*ua)},(t,e)=>(e-t)/ua,t=>t.getMinutes())),Sa=(Ta.range,ba(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*ua)},(t,e)=>(e-t)/ua,t=>t.getUTCMinutes())),va=(Sa.range,ba(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*da-t.getMinutes()*ua)},(t,e)=>{t.setTime(+t+e*pa)},(t,e)=>(e-t)/pa,t=>t.getHours())),Ba=(va.range,ba(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*pa)},(t,e)=>(e-t)/pa,t=>t.getUTCHours())),_a=(Ba.range,ba(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*ua)/ga,t=>t.getDate()-1)),Aa=(_a.range,ba(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/ga,t=>t.getUTCDate()-1)),La=(Aa.range,ba(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/ga,t=>Math.floor(t/ga)));La.range;function Fa(t){return ba(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(t,e)=>{t.setDate(t.getDate()+7*e)},(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*ua)/fa)}const Ma=Fa(0),Ea=Fa(1),$a=Fa(2),Oa=Fa(3),Da=Fa(4),Ia=Fa(5),Pa=Fa(6);Ma.range,Ea.range,$a.range,Oa.range,Da.range,Ia.range,Pa.range;function qa(t){return ba(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+7*e)},(t,e)=>(e-t)/fa)}const Ra=qa(0),za=qa(1),Ka=qa(2),Na=qa(3),ja=qa(4),Wa=qa(5),Ha=qa(6),Ua=(Ra.range,za.range,Ka.range,Na.range,ja.range,Wa.range,Ha.range,ba(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear()),t=>t.getMonth())),Ya=(Ua.range,ba(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear()),t=>t.getUTCMonth())),Ga=(Ya.range,ba(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear()));Ga.every=t=>isFinite(t=Math.floor(t))&&t>0?ba(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,r)=>{e.setFullYear(e.getFullYear()+r*t)}):null;Ga.range;const Xa=ba(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());Xa.every=t=>isFinite(t=Math.floor(t))&&t>0?ba(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCFullYear(e.getUTCFullYear()+r*t)}):null;Xa.range;function Va(t,e,r,i,o,n){const a=[[wa,1,da],[wa,5,5e3],[wa,15,15e3],[wa,30,3e4],[n,1,ua],[n,5,3e5],[n,15,9e5],[n,30,18e5],[o,1,pa],[o,3,108e5],[o,6,216e5],[o,12,432e5],[i,1,ga],[i,2,1728e5],[r,1,fa],[e,1,ya],[e,3,7776e6],[t,1,ma]];function s(e,r,i){const o=Math.abs(r-e)/i,n=zn(([,,t])=>t).right(a,o);if(n===a.length)return t.every(Pn(e/ma,r/ma,i));if(0===n)return ka.every(Math.max(Pn(e,r,i),1));const[s,l]=a[o/a[n-1][2]<a[n][2]/o?n-1:n];return s.every(l)}return[function(t,e,r){const i=e<t;i&&([t,e]=[e,t]);const o=r&&"function"==typeof r.range?r:s(t,e,r),n=o?o.range(t,+e+1):[];return i?n.reverse():n},s]}const[Za,Qa]=Va(Xa,Ya,Ra,La,Ba,Sa),[Ja,ts]=Va(Ga,Ua,Ma,_a,va,Ta);function es(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function rs(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function is(t,e,r){return{y:t,m:e,d:r,H:0,M:0,S:0,L:0}}var os,ns,as={"-":"",_:" ",0:"0"},ss=/^\s*\d+/,ls=/^%/,hs=/[\\^$*+?|[\]().{}]/g;function cs(t,e,r){var i=t<0?"-":"",o=(i?-t:t)+"",n=o.length;return i+(n<r?new Array(r-n+1).join(e)+o:o)}function ds(t){return t.replace(hs,"\\$&")}function us(t){return new RegExp("^(?:"+t.map(ds).join("|")+")","i")}function ps(t){return new Map(t.map((t,e)=>[t.toLowerCase(),e]))}function gs(t,e,r){var i=ss.exec(e.slice(r,r+1));return i?(t.w=+i[0],r+i[0].length):-1}function fs(t,e,r){var i=ss.exec(e.slice(r,r+1));return i?(t.u=+i[0],r+i[0].length):-1}function ys(t,e,r){var i=ss.exec(e.slice(r,r+2));return i?(t.U=+i[0],r+i[0].length):-1}function ms(t,e,r){var i=ss.exec(e.slice(r,r+2));return i?(t.V=+i[0],r+i[0].length):-1}function Cs(t,e,r){var i=ss.exec(e.slice(r,r+2));return i?(t.W=+i[0],r+i[0].length):-1}function xs(t,e,r){var i=ss.exec(e.slice(r,r+4));return i?(t.y=+i[0],r+i[0].length):-1}function bs(t,e,r){var i=ss.exec(e.slice(r,r+2));return i?(t.y=+i[0]+(+i[0]>68?1900:2e3),r+i[0].length):-1}function ks(t,e,r){var i=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(r,r+6));return i?(t.Z=i[1]?0:-(i[2]+(i[3]||"00")),r+i[0].length):-1}function ws(t,e,r){var i=ss.exec(e.slice(r,r+1));return i?(t.q=3*i[0]-3,r+i[0].length):-1}function Ts(t,e,r){var i=ss.exec(e.slice(r,r+2));return i?(t.m=i[0]-1,r+i[0].length):-1}function Ss(t,e,r){var i=ss.exec(e.slice(r,r+2));return i?(t.d=+i[0],r+i[0].length):-1}function vs(t,e,r){var i=ss.exec(e.slice(r,r+3));return i?(t.m=0,t.d=+i[0],r+i[0].length):-1}function Bs(t,e,r){var i=ss.exec(e.slice(r,r+2));return i?(t.H=+i[0],r+i[0].length):-1}function _s(t,e,r){var i=ss.exec(e.slice(r,r+2));return i?(t.M=+i[0],r+i[0].length):-1}function As(t,e,r){var i=ss.exec(e.slice(r,r+2));return i?(t.S=+i[0],r+i[0].length):-1}function Ls(t,e,r){var i=ss.exec(e.slice(r,r+3));return i?(t.L=+i[0],r+i[0].length):-1}function Fs(t,e,r){var i=ss.exec(e.slice(r,r+6));return i?(t.L=Math.floor(i[0]/1e3),r+i[0].length):-1}function Ms(t,e,r){var i=ls.exec(e.slice(r,r+1));return i?r+i[0].length:-1}function Es(t,e,r){var i=ss.exec(e.slice(r));return i?(t.Q=+i[0],r+i[0].length):-1}function $s(t,e,r){var i=ss.exec(e.slice(r));return i?(t.s=+i[0],r+i[0].length):-1}function Os(t,e){return cs(t.getDate(),e,2)}function Ds(t,e){return cs(t.getHours(),e,2)}function Is(t,e){return cs(t.getHours()%12||12,e,2)}function Ps(t,e){return cs(1+_a.count(Ga(t),t),e,3)}function qs(t,e){return cs(t.getMilliseconds(),e,3)}function Rs(t,e){return qs(t,e)+"000"}function zs(t,e){return cs(t.getMonth()+1,e,2)}function Ks(t,e){return cs(t.getMinutes(),e,2)}function Ns(t,e){return cs(t.getSeconds(),e,2)}function js(t){var e=t.getDay();return 0===e?7:e}function Ws(t,e){return cs(Ma.count(Ga(t)-1,t),e,2)}function Hs(t){var e=t.getDay();return e>=4||0===e?Da(t):Da.ceil(t)}function Us(t,e){return t=Hs(t),cs(Da.count(Ga(t),t)+(4===Ga(t).getDay()),e,2)}function Ys(t){return t.getDay()}function Gs(t,e){return cs(Ea.count(Ga(t)-1,t),e,2)}function Xs(t,e){return cs(t.getFullYear()%100,e,2)}function Vs(t,e){return cs((t=Hs(t)).getFullYear()%100,e,2)}function Zs(t,e){return cs(t.getFullYear()%1e4,e,4)}function Qs(t,e){var r=t.getDay();return cs((t=r>=4||0===r?Da(t):Da.ceil(t)).getFullYear()%1e4,e,4)}function Js(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+cs(e/60|0,"0",2)+cs(e%60,"0",2)}function tl(t,e){return cs(t.getUTCDate(),e,2)}function el(t,e){return cs(t.getUTCHours(),e,2)}function rl(t,e){return cs(t.getUTCHours()%12||12,e,2)}function il(t,e){return cs(1+Aa.count(Xa(t),t),e,3)}function ol(t,e){return cs(t.getUTCMilliseconds(),e,3)}function nl(t,e){return ol(t,e)+"000"}function al(t,e){return cs(t.getUTCMonth()+1,e,2)}function sl(t,e){return cs(t.getUTCMinutes(),e,2)}function ll(t,e){return cs(t.getUTCSeconds(),e,2)}function hl(t){var e=t.getUTCDay();return 0===e?7:e}function cl(t,e){return cs(Ra.count(Xa(t)-1,t),e,2)}function dl(t){var e=t.getUTCDay();return e>=4||0===e?ja(t):ja.ceil(t)}function ul(t,e){return t=dl(t),cs(ja.count(Xa(t),t)+(4===Xa(t).getUTCDay()),e,2)}function pl(t){return t.getUTCDay()}function gl(t,e){return cs(za.count(Xa(t)-1,t),e,2)}function fl(t,e){return cs(t.getUTCFullYear()%100,e,2)}function yl(t,e){return cs((t=dl(t)).getUTCFullYear()%100,e,2)}function ml(t,e){return cs(t.getUTCFullYear()%1e4,e,4)}function Cl(t,e){var r=t.getUTCDay();return cs((t=r>=4||0===r?ja(t):ja.ceil(t)).getUTCFullYear()%1e4,e,4)}function xl(){return"+0000"}function bl(){return"%"}function kl(t){return+t}function wl(t){return Math.floor(+t/1e3)}function Tl(t){return new Date(t)}function Sl(t){return t instanceof Date?+t:+new Date(+t)}function vl(t,e,r,i,o,n,a,s,l,h){var c=na(),d=c.invert,u=c.domain,p=h(".%L"),g=h(":%S"),f=h("%I:%M"),y=h("%I %p"),m=h("%a %d"),C=h("%b %d"),x=h("%B"),b=h("%Y");function k(t){return(l(t)<t?p:s(t)<t?g:a(t)<t?f:n(t)<t?y:i(t)<t?o(t)<t?m:C:r(t)<t?x:b)(t)}return c.invert=function(t){return new Date(d(t))},c.domain=function(t){return arguments.length?u(Array.from(t,Sl)):u().map(Tl)},c.ticks=function(e){var r=u();return t(r[0],r[r.length-1],null==e?10:e)},c.tickFormat=function(t,e){return null==e?k:h(e)},c.nice=function(t){var r=u();return t&&"function"==typeof t.range||(t=e(r[0],r[r.length-1],null==t?10:t)),t?u(function(t,e){var r,i=0,o=(t=t.slice()).length-1,n=t[i],a=t[o];return a<n&&(r=i,i=o,o=r,r=n,n=a,a=r),t[i]=e.floor(n),t[o]=e.ceil(a),t}(r,t)):c},c.copy=function(){return ia(c,vl(t,e,r,i,o,n,a,s,l,h))},c}function Bl(){return Tn.apply(vl(Ja,ts,Ga,Ua,Ma,_a,va,Ta,wa,ns).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function _l(t){for(var e=t.length/6|0,r=new Array(e),i=0;i<e;)r[i]="#"+t.slice(6*i,6*++i);return r}!function(t){os=function(t){var e=t.dateTime,r=t.date,i=t.time,o=t.periods,n=t.days,a=t.shortDays,s=t.months,l=t.shortMonths,h=us(o),c=ps(o),d=us(n),u=ps(n),p=us(a),g=ps(a),f=us(s),y=ps(s),m=us(l),C=ps(l),x={a:function(t){return a[t.getDay()]},A:function(t){return n[t.getDay()]},b:function(t){return l[t.getMonth()]},B:function(t){return s[t.getMonth()]},c:null,d:Os,e:Os,f:Rs,g:Vs,G:Qs,H:Ds,I:Is,j:Ps,L:qs,m:zs,M:Ks,p:function(t){return o[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:kl,s:wl,S:Ns,u:js,U:Ws,V:Us,w:Ys,W:Gs,x:null,X:null,y:Xs,Y:Zs,Z:Js,"%":bl},b={a:function(t){return a[t.getUTCDay()]},A:function(t){return n[t.getUTCDay()]},b:function(t){return l[t.getUTCMonth()]},B:function(t){return s[t.getUTCMonth()]},c:null,d:tl,e:tl,f:nl,g:yl,G:Cl,H:el,I:rl,j:il,L:ol,m:al,M:sl,p:function(t){return o[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:kl,s:wl,S:ll,u:hl,U:cl,V:ul,w:pl,W:gl,x:null,X:null,y:fl,Y:ml,Z:xl,"%":bl},k={a:function(t,e,r){var i=p.exec(e.slice(r));return i?(t.w=g.get(i[0].toLowerCase()),r+i[0].length):-1},A:function(t,e,r){var i=d.exec(e.slice(r));return i?(t.w=u.get(i[0].toLowerCase()),r+i[0].length):-1},b:function(t,e,r){var i=m.exec(e.slice(r));return i?(t.m=C.get(i[0].toLowerCase()),r+i[0].length):-1},B:function(t,e,r){var i=f.exec(e.slice(r));return i?(t.m=y.get(i[0].toLowerCase()),r+i[0].length):-1},c:function(t,r,i){return S(t,e,r,i)},d:Ss,e:Ss,f:Fs,g:bs,G:xs,H:Bs,I:Bs,j:vs,L:Ls,m:Ts,M:_s,p:function(t,e,r){var i=h.exec(e.slice(r));return i?(t.p=c.get(i[0].toLowerCase()),r+i[0].length):-1},q:ws,Q:Es,s:$s,S:As,u:fs,U:ys,V:ms,w:gs,W:Cs,x:function(t,e,i){return S(t,r,e,i)},X:function(t,e,r){return S(t,i,e,r)},y:bs,Y:xs,Z:ks,"%":Ms};function w(t,e){return function(r){var i,o,n,a=[],s=-1,l=0,h=t.length;for(r instanceof Date||(r=new Date(+r));++s<h;)37===t.charCodeAt(s)&&(a.push(t.slice(l,s)),null!=(o=as[i=t.charAt(++s)])?i=t.charAt(++s):o="e"===i?" ":"0",(n=e[i])&&(i=n(r,o)),a.push(i),l=s+1);return a.push(t.slice(l,s)),a.join("")}}function T(t,e){return function(r){var i,o,n=is(1900,void 0,1);if(S(n,t,r+="",0)!=r.length)return null;if("Q"in n)return new Date(n.Q);if("s"in n)return new Date(1e3*n.s+("L"in n?n.L:0));if(e&&!("Z"in n)&&(n.Z=0),"p"in n&&(n.H=n.H%12+12*n.p),void 0===n.m&&(n.m="q"in n?n.q:0),"V"in n){if(n.V<1||n.V>53)return null;"w"in n||(n.w=1),"Z"in n?(o=(i=rs(is(n.y,0,1))).getUTCDay(),i=o>4||0===o?za.ceil(i):za(i),i=Aa.offset(i,7*(n.V-1)),n.y=i.getUTCFullYear(),n.m=i.getUTCMonth(),n.d=i.getUTCDate()+(n.w+6)%7):(o=(i=es(is(n.y,0,1))).getDay(),i=o>4||0===o?Ea.ceil(i):Ea(i),i=_a.offset(i,7*(n.V-1)),n.y=i.getFullYear(),n.m=i.getMonth(),n.d=i.getDate()+(n.w+6)%7)}else("W"in n||"U"in n)&&("w"in n||(n.w="u"in n?n.u%7:"W"in n?1:0),o="Z"in n?rs(is(n.y,0,1)).getUTCDay():es(is(n.y,0,1)).getDay(),n.m=0,n.d="W"in n?(n.w+6)%7+7*n.W-(o+5)%7:n.w+7*n.U-(o+6)%7);return"Z"in n?(n.H+=n.Z/100|0,n.M+=n.Z%100,rs(n)):es(n)}}function S(t,e,r,i){for(var o,n,a=0,s=e.length,l=r.length;a<s;){if(i>=l)return-1;if(37===(o=e.charCodeAt(a++))){if(o=e.charAt(a++),!(n=k[o in as?e.charAt(a++):o])||(i=n(t,r,i))<0)return-1}else if(o!=r.charCodeAt(i++))return-1}return i}return x.x=w(r,x),x.X=w(i,x),x.c=w(e,x),b.x=w(r,b),b.X=w(i,b),b.c=w(e,b),{format:function(t){var e=w(t+="",x);return e.toString=function(){return t},e},parse:function(t){var e=T(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=w(t+="",b);return e.toString=function(){return t},e},utcParse:function(t){var e=T(t+="",!0);return e.toString=function(){return t},e}}}(t),ns=os.format,os.parse,os.utcFormat,os.utcParse}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}),Object.defineProperty(_l,"name",{value:"default",configurable:!0});const Al=_l("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab");function Ll(t){return"string"==typeof t?new ae([[document.querySelector(t)]],[document.documentElement]):new ae([[t]],ne)}function Fl(t){return function(){return t}}Object.defineProperty(Ll,"name",{value:"default",configurable:!0}),Object.defineProperty(Fl,"name",{value:"default",configurable:!0});const Ml=Math.abs,El=Math.atan2,$l=Math.cos,Ol=Math.max,Dl=Math.min,Il=Math.sin,Pl=Math.sqrt,ql=1e-12,Rl=Math.PI,zl=Rl/2,Kl=2*Rl;function Nl(t){return t>=1?zl:t<=-1?-zl:Math.asin(t)}const jl=Math.PI,Wl=2*jl,Hl=1e-6,Ul=Wl-Hl;function Yl(t){this._+=t[0];for(let e=1,r=t.length;e<r;++e)this._+=arguments[e]+t[e]}class Gl{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=null==t?Yl:function(t){let e=Math.floor(t);if(!(e>=0))throw new Error(`invalid digits: ${t}`);if(e>15)return Yl;const r=10**e;return function(t){this._+=t[0];for(let e=1,i=t.length;e<i;++e)this._+=Math.round(arguments[e]*r)/r+t[e]}}(t)}moveTo(t,e){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,e){this._append`L${this._x1=+t},${this._y1=+e}`}quadraticCurveTo(t,e,r,i){this._append`Q${+t},${+e},${this._x1=+r},${this._y1=+i}`}bezierCurveTo(t,e,r,i,o,n){this._append`C${+t},${+e},${+r},${+i},${this._x1=+o},${this._y1=+n}`}arcTo(t,e,r,i,o){if(t=+t,e=+e,r=+r,i=+i,(o=+o)<0)throw new Error(`negative radius: ${o}`);let n=this._x1,a=this._y1,s=r-t,l=i-e,h=n-t,c=a-e,d=h*h+c*c;if(null===this._x1)this._append`M${this._x1=t},${this._y1=e}`;else if(d>Hl)if(Math.abs(c*s-l*h)>Hl&&o){let u=r-n,p=i-a,g=s*s+l*l,f=u*u+p*p,y=Math.sqrt(g),m=Math.sqrt(d),C=o*Math.tan((jl-Math.acos((g+d-f)/(2*y*m)))/2),x=C/m,b=C/y;Math.abs(x-1)>Hl&&this._append`L${t+x*h},${e+x*c}`,this._append`A${o},${o},0,0,${+(c*u>h*p)},${this._x1=t+b*s},${this._y1=e+b*l}`}else this._append`L${this._x1=t},${this._y1=e}`;else;}arc(t,e,r,i,o,n){if(t=+t,e=+e,n=!!n,(r=+r)<0)throw new Error(`negative radius: ${r}`);let a=r*Math.cos(i),s=r*Math.sin(i),l=t+a,h=e+s,c=1^n,d=n?i-o:o-i;null===this._x1?this._append`M${l},${h}`:(Math.abs(this._x1-l)>Hl||Math.abs(this._y1-h)>Hl)&&this._append`L${l},${h}`,r&&(d<0&&(d=d%Wl+Wl),d>Ul?this._append`A${r},${r},0,1,${c},${t-a},${e-s}A${r},${r},0,1,${c},${this._x1=l},${this._y1=h}`:d>Hl&&this._append`A${r},${r},0,${+(d>=jl)},${c},${this._x1=t+r*Math.cos(o)},${this._y1=e+r*Math.sin(o)}`)}rect(t,e,r,i){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}h${r=+r}v${+i}h${-r}Z`}toString(){return this._}}function Xl(t){let e=3;return t.digits=function(r){if(!arguments.length)return e;if(null==r)e=null;else{const t=Math.floor(r);if(!(t>=0))throw new RangeError(`invalid digits: ${r}`);e=t}return t},()=>new Gl(e)}function Vl(t){return t.innerRadius}function Zl(t){return t.outerRadius}function Ql(t){return t.startAngle}function Jl(t){return t.endAngle}function th(t){return t&&t.padAngle}function eh(t,e,r,i,o,n,a){var s=t-r,l=e-i,h=(a?n:-n)/Pl(s*s+l*l),c=h*l,d=-h*s,u=t+c,p=e+d,g=r+c,f=i+d,y=(u+g)/2,m=(p+f)/2,C=g-u,x=f-p,b=C*C+x*x,k=o-n,w=u*f-g*p,T=(x<0?-1:1)*Pl(Ol(0,k*k*b-w*w)),S=(w*x-C*T)/b,v=(-w*C-x*T)/b,B=(w*x+C*T)/b,_=(-w*C+x*T)/b,A=S-y,L=v-m,F=B-y,M=_-m;return A*A+L*L>F*F+M*M&&(S=B,v=_),{cx:S,cy:v,x01:-c,y01:-d,x11:S*(o/k-1),y11:v*(o/k-1)}}function rh(){var t=Vl,e=Zl,r=Fl(0),i=null,o=Ql,n=Jl,a=th,s=null,l=Xl(h);function h(){var h,c,d,u=+t.apply(this,arguments),p=+e.apply(this,arguments),g=o.apply(this,arguments)-zl,f=n.apply(this,arguments)-zl,y=Ml(f-g),m=f>g;if(s||(s=h=l()),p<u&&(c=p,p=u,u=c),p>ql)if(y>Kl-ql)s.moveTo(p*$l(g),p*Il(g)),s.arc(0,0,p,g,f,!m),u>ql&&(s.moveTo(u*$l(f),u*Il(f)),s.arc(0,0,u,f,g,m));else{var C,x,b=g,k=f,w=g,T=f,S=y,v=y,B=a.apply(this,arguments)/2,_=B>ql&&(i?+i.apply(this,arguments):Pl(u*u+p*p)),A=Dl(Ml(p-u)/2,+r.apply(this,arguments)),L=A,F=A;if(_>ql){var M=Nl(_/u*Il(B)),E=Nl(_/p*Il(B));(S-=2*M)>ql?(w+=M*=m?1:-1,T-=M):(S=0,w=T=(g+f)/2),(v-=2*E)>ql?(b+=E*=m?1:-1,k-=E):(v=0,b=k=(g+f)/2)}var $=p*$l(b),O=p*Il(b),D=u*$l(T),I=u*Il(T);if(A>ql){var P,q=p*$l(k),R=p*Il(k),z=u*$l(w),K=u*Il(w);if(y<Rl)if(P=function(t,e,r,i,o,n,a,s){var l=r-t,h=i-e,c=a-o,d=s-n,u=d*l-c*h;if(!(u*u<ql))return[t+(u=(c*(e-n)-d*(t-o))/u)*l,e+u*h]}($,O,z,K,q,R,D,I)){var N=$-P[0],j=O-P[1],W=q-P[0],H=R-P[1],U=1/Il(((d=(N*W+j*H)/(Pl(N*N+j*j)*Pl(W*W+H*H)))>1?0:d<-1?Rl:Math.acos(d))/2),Y=Pl(P[0]*P[0]+P[1]*P[1]);L=Dl(A,(u-Y)/(U-1)),F=Dl(A,(p-Y)/(U+1))}else L=F=0}v>ql?F>ql?(C=eh(z,K,$,O,p,F,m),x=eh(q,R,D,I,p,F,m),s.moveTo(C.cx+C.x01,C.cy+C.y01),F<A?s.arc(C.cx,C.cy,F,El(C.y01,C.x01),El(x.y01,x.x01),!m):(s.arc(C.cx,C.cy,F,El(C.y01,C.x01),El(C.y11,C.x11),!m),s.arc(0,0,p,El(C.cy+C.y11,C.cx+C.x11),El(x.cy+x.y11,x.cx+x.x11),!m),s.arc(x.cx,x.cy,F,El(x.y11,x.x11),El(x.y01,x.x01),!m))):(s.moveTo($,O),s.arc(0,0,p,b,k,!m)):s.moveTo($,O),u>ql&&S>ql?L>ql?(C=eh(D,I,q,R,u,-L,m),x=eh($,O,z,K,u,-L,m),s.lineTo(C.cx+C.x01,C.cy+C.y01),L<A?s.arc(C.cx,C.cy,L,El(C.y01,C.x01),El(x.y01,x.x01),!m):(s.arc(C.cx,C.cy,L,El(C.y01,C.x01),El(C.y11,C.x11),!m),s.arc(0,0,u,El(C.cy+C.y11,C.cx+C.x11),El(x.cy+x.y11,x.cx+x.x11),m),s.arc(x.cx,x.cy,L,El(x.y11,x.x11),El(x.y01,x.x01),!m))):s.arc(0,0,u,T,w,m):s.lineTo(D,I)}else s.moveTo(0,0);if(s.closePath(),h)return s=null,h+""||null}return h.centroid=function(){var r=(+t.apply(this,arguments)+ +e.apply(this,arguments))/2,i=(+o.apply(this,arguments)+ +n.apply(this,arguments))/2-Rl/2;return[$l(i)*r,Il(i)*r]},h.innerRadius=function(e){return arguments.length?(t="function"==typeof e?e:Fl(+e),h):t},h.outerRadius=function(t){return arguments.length?(e="function"==typeof t?t:Fl(+t),h):e},h.cornerRadius=function(t){return arguments.length?(r="function"==typeof t?t:Fl(+t),h):r},h.padRadius=function(t){return arguments.length?(i=null==t?null:"function"==typeof t?t:Fl(+t),h):i},h.startAngle=function(t){return arguments.length?(o="function"==typeof t?t:Fl(+t),h):o},h.endAngle=function(t){return arguments.length?(n="function"==typeof t?t:Fl(+t),h):n},h.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:Fl(+t),h):a},h.context=function(t){return arguments.length?(s=null==t?null:t,h):s},h}Object.defineProperty(rh,"name",{value:"default",configurable:!0}),Object.defineProperty(ih,"name",{value:"default",configurable:!0});Array.prototype.slice;function ih(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function oh(t){this._context=t}function nh(t){return new oh(t)}function ah(t){return t[0]}function sh(t){return t[1]}function lh(t,e){var r=Fl(!0),i=null,o=nh,n=null,a=Xl(s);function s(s){var l,h,c,d=(s=ih(s)).length,u=!1;for(null==i&&(n=o(c=a())),l=0;l<=d;++l)!(l<d&&r(h=s[l],l,s))===u&&((u=!u)?n.lineStart():n.lineEnd()),u&&n.point(+t(h,l,s),+e(h,l,s));if(c)return n=null,c+""||null}return t="function"==typeof t?t:void 0===t?ah:Fl(t),e="function"==typeof e?e:void 0===e?sh:Fl(e),s.x=function(e){return arguments.length?(t="function"==typeof e?e:Fl(+e),s):t},s.y=function(t){return arguments.length?(e="function"==typeof t?t:Fl(+t),s):e},s.defined=function(t){return arguments.length?(r="function"==typeof t?t:Fl(!!t),s):r},s.curve=function(t){return arguments.length?(o=t,null!=i&&(n=o(i)),s):o},s.context=function(t){return arguments.length?(null==t?i=n=null:n=o(i=t),s):i},s}function hh(t,e){return e<t?-1:e>t?1:e>=t?0:NaN}function ch(t){return t}function dh(){var t=ch,e=hh,r=null,i=Fl(0),o=Fl(Kl),n=Fl(0);function a(a){var s,l,h,c,d,u=(a=ih(a)).length,p=0,g=new Array(u),f=new Array(u),y=+i.apply(this,arguments),m=Math.min(Kl,Math.max(-Kl,o.apply(this,arguments)-y)),C=Math.min(Math.abs(m)/u,n.apply(this,arguments)),x=C*(m<0?-1:1);for(s=0;s<u;++s)(d=f[g[s]=s]=+t(a[s],s,a))>0&&(p+=d);for(null!=e?g.sort(function(t,r){return e(f[t],f[r])}):null!=r&&g.sort(function(t,e){return r(a[t],a[e])}),s=0,h=p?(m-u*x)/p:0;s<u;++s,y=c)l=g[s],c=y+((d=f[l])>0?d*h:0)+x,f[l]={data:a[l],index:s,value:d,startAngle:y,endAngle:c,padAngle:C};return f}return a.value=function(e){return arguments.length?(t="function"==typeof e?e:Fl(+e),a):t},a.sortValues=function(t){return arguments.length?(e=t,r=null,a):e},a.sort=function(t){return arguments.length?(r=t,e=null,a):r},a.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:Fl(+t),a):i},a.endAngle=function(t){return arguments.length?(o="function"==typeof t?t:Fl(+t),a):o},a.padAngle=function(t){return arguments.length?(n="function"==typeof t?t:Fl(+t),a):n},a}function uh(){}function ph(t,e,r){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+r)/6)}function gh(t){this._context=t}function fh(t){return new gh(t)}function yh(t){this._context=t}function mh(t){return new yh(t)}function Ch(t){this._context=t}function xh(t){return new Ch(t)}Object.defineProperty(nh,"name",{value:"default",configurable:!0}),oh.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}},Object.defineProperty(lh,"name",{value:"default",configurable:!0}),Object.defineProperty(hh,"name",{value:"default",configurable:!0}),Object.defineProperty(ch,"name",{value:"default",configurable:!0}),Object.defineProperty(dh,"name",{value:"default",configurable:!0}),Object.defineProperty(uh,"name",{value:"default",configurable:!0}),Object.defineProperty(fh,"name",{value:"default",configurable:!0}),gh.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:ph(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:ph(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},Object.defineProperty(mh,"name",{value:"default",configurable:!0}),yh.prototype={areaStart:uh,areaEnd:uh,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:ph(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},Object.defineProperty(xh,"name",{value:"default",configurable:!0}),Ch.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+t)/6,i=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(r,i):this._context.moveTo(r,i);break;case 3:this._point=4;default:ph(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};class bh{constructor(t,e){this._context=t,this._x=e}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,e,t,e):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+e)/2,t,this._y0,t,e)}this._x0=t,this._y0=e}}function kh(t){return new bh(t,!0)}function wh(t){return new bh(t,!1)}function Th(t,e){this._basis=new gh(t),this._beta=e}Th.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,r=t.length-1;if(r>0)for(var i,o=t[0],n=e[0],a=t[r]-o,s=e[r]-n,l=-1;++l<=r;)i=l/r,this._basis.point(this._beta*t[l]+(1-this._beta)*(o+i*a),this._beta*e[l]+(1-this._beta)*(n+i*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};const Sh=function t(e){function r(t){return 1===e?new gh(t):new Th(t,e)}return r.beta=function(e){return t(+e)},r}(.85);function vh(t,e,r){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-r),t._x2,t._y2)}function Bh(t,e){this._context=t,this._k=(1-e)/6}Bh.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:vh(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:vh(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const _h=function t(e){function r(t){return new Bh(t,e)}return r.tension=function(e){return t(+e)},r}(0);function Ah(t,e){this._context=t,this._k=(1-e)/6}Ah.prototype={areaStart:uh,areaEnd:uh,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:vh(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Lh=function t(e){function r(t){return new Ah(t,e)}return r.tension=function(e){return t(+e)},r}(0);function Fh(t,e){this._context=t,this._k=(1-e)/6}Fh.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:vh(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Mh=function t(e){function r(t){return new Fh(t,e)}return r.tension=function(e){return t(+e)},r}(0);function Eh(t,e,r){var i=t._x1,o=t._y1,n=t._x2,a=t._y2;if(t._l01_a>ql){var s=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,l=3*t._l01_a*(t._l01_a+t._l12_a);i=(i*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,o=(o*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>ql){var h=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,c=3*t._l23_a*(t._l23_a+t._l12_a);n=(n*h+t._x1*t._l23_2a-e*t._l12_2a)/c,a=(a*h+t._y1*t._l23_2a-r*t._l12_2a)/c}t._context.bezierCurveTo(i,o,n,a,t._x2,t._y2)}function $h(t,e){this._context=t,this._alpha=e}$h.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:Eh(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Oh=function t(e){function r(t){return e?new $h(t,e):new Bh(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function Dh(t,e){this._context=t,this._alpha=e}Dh.prototype={areaStart:uh,areaEnd:uh,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Eh(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Ih=function t(e){function r(t){return e?new Dh(t,e):new Ah(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function Ph(t,e){this._context=t,this._alpha=e}Ph.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Eh(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const qh=function t(e){function r(t){return e?new Ph(t,e):new Fh(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function Rh(t){this._context=t}function zh(t){return new Rh(t)}function Kh(t){return t<0?-1:1}function Nh(t,e,r){var i=t._x1-t._x0,o=e-t._x1,n=(t._y1-t._y0)/(i||o<0&&-0),a=(r-t._y1)/(o||i<0&&-0),s=(n*o+a*i)/(i+o);return(Kh(n)+Kh(a))*Math.min(Math.abs(n),Math.abs(a),.5*Math.abs(s))||0}function jh(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function Wh(t,e,r){var i=t._x0,o=t._y0,n=t._x1,a=t._y1,s=(n-i)/3;t._context.bezierCurveTo(i+s,o+s*e,n-s,a-s*r,n,a)}function Hh(t){this._context=t}function Uh(t){this._context=new Yh(t)}function Yh(t){this._context=t}function Gh(t){return new Hh(t)}function Xh(t){return new Uh(t)}function Vh(t){this._context=t}function Zh(t){var e,r,i=t.length-1,o=new Array(i),n=new Array(i),a=new Array(i);for(o[0]=0,n[0]=2,a[0]=t[0]+2*t[1],e=1;e<i-1;++e)o[e]=1,n[e]=4,a[e]=4*t[e]+2*t[e+1];for(o[i-1]=2,n[i-1]=7,a[i-1]=8*t[i-1]+t[i],e=1;e<i;++e)r=o[e]/n[e-1],n[e]-=r,a[e]-=r*a[e-1];for(o[i-1]=a[i-1]/n[i-1],e=i-2;e>=0;--e)o[e]=(a[e]-o[e+1])/n[e];for(n[i-1]=(t[i]+o[i-1])/2,e=0;e<i-1;++e)n[e]=2*t[e+1]-o[e+1];return[o,n]}function Qh(t){return new Vh(t)}function Jh(t,e){this._context=t,this._t=e}function tc(t){return new Jh(t,.5)}function ec(t){return new Jh(t,0)}function rc(t){return new Jh(t,1)}function ic(t,e,r){this.k=t,this.x=e,this.y=r}Object.defineProperty(zh,"name",{value:"default",configurable:!0}),Rh.prototype={areaStart:uh,areaEnd:uh,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}},Hh.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Wh(this,this._t0,jh(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var r=NaN;if(e=+e,(t=+t)!==this._x1||e!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,Wh(this,jh(this,r=Nh(this,t,e)),r);break;default:Wh(this,this._t0,r=Nh(this,t,e))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=r}}},(Uh.prototype=Object.create(Hh.prototype)).point=function(t,e){Hh.prototype.point.call(this,e,t)},Yh.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,r,i,o,n){this._context.bezierCurveTo(e,t,i,r,n,o)}},Object.defineProperty(Qh,"name",{value:"default",configurable:!0}),Vh.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,e=this._y,r=t.length;if(r)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),2===r)this._context.lineTo(t[1],e[1]);else for(var i=Zh(t),o=Zh(e),n=0,a=1;a<r;++n,++a)this._context.bezierCurveTo(i[0][n],o[0][n],i[1][n],o[1][n],t[a],e[a]);(this._line||0!==this._line&&1===r)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,e){this._x.push(+t),this._y.push(+e)}},Object.defineProperty(tc,"name",{value:"default",configurable:!0}),Jh.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,e)}}this._x=t,this._y=e}},ic.prototype={constructor:ic,scale:function(t){return 1===t?this:new ic(this.k*t,this.x,this.y)},translate:function(t,e){return 0===t&0===e?this:new ic(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var oc,nc,ac,sc,lc,hc,cc,dc;new ic(1,0,0);function uc(t){return!(t.ctrlKey&&"wheel"!==t.type||t.button)}function pc(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t).hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]:[[0,0],[t.clientWidth,t.clientHeight]]}function gc(){return this.__zoom||lc}function fc(t){return-t.deltaY*(1===t.deltaMode?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function yc(){return navigator.maxTouchPoints||"ontouchstart"in this}function mc(t,e,r){var i=t.invertX(e[0][0])-r[0][0],o=t.invertX(e[1][0])-r[1][0],n=t.invertY(e[0][1])-r[0][1],a=t.invertY(e[1][1])-r[1][1];return t.translate(o>i?(i+o)/2:Math.min(0,i)||Math.max(0,o),a>n?(n+a)/2:Math.min(0,n)||Math.max(0,a))}ic.prototype,Object.defineProperty(function(){var t,e,r,i=uc,o=pc,n=mc,a=fc,s=yc,l=[0,1/0],h=[[-1/0,-1/0],[1/0,1/0]],c=250,d=void 0,u=(void 0)("start","zoom","end"),p=0,g=10;function f(t){t.property("__zoom",gc).on("wheel.zoom",w,{passive:!1}).on("mousedown.zoom",T).on("dblclick.zoom",S).filter(s).on("touchstart.zoom",v).on("touchmove.zoom",B).on("touchend.zoom touchcancel.zoom",_).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function y(t,e){return(e=Math.max(l[0],Math.min(l[1],e)))===t.k?t:new hc(e,t.x,t.y)}function m(t,e,r){var i=e[0]-r[0]*t.k,o=e[1]-r[1]*t.k;return i===t.x&&o===t.y?t:new hc(t.k,i,o)}function C(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function x(t,e,r,i){t.on("start.zoom",function(){b(this,arguments).event(i).start()}).on("interrupt.zoom end.zoom",function(){b(this,arguments).event(i).end()}).tween("zoom",function(){var t=this,n=arguments,a=b(t,n).event(i),s=o.apply(t,n),l=null==r?C(s):"function"==typeof r?r.apply(t,n):r,h=Math.max(s[1][0]-s[0][0],s[1][1]-s[0][1]),c=t.__zoom,u="function"==typeof e?e.apply(t,n):e,p=d(c.invert(l).concat(h/c.k),u.invert(l).concat(h/u.k));return function(t){if(1===t)t=u;else{var e=p(t),r=h/e[2];t=new hc(r,l[0]-e[0]*r,l[1]-e[1]*r)}a.zoom(null,t)}})}function b(t,e,r){return!r&&t.__zooming||new k(t,e)}function k(t,e){this.that=t,this.args=e,this.active=0,this.sourceEvent=null,this.extent=o.apply(t,e),this.taps=0}function w(t,...e){if(i.apply(this,arguments)){var r=b(this,e).event(t),o=this.__zoom,s=Math.max(l[0],Math.min(l[1],o.k*Math.pow(2,a.apply(this,arguments)))),c=oc(t);if(r.wheel)r.mouse[0][0]===c[0]&&r.mouse[0][1]===c[1]||(r.mouse[1]=o.invert(r.mouse[0]=c)),clearTimeout(r.wheel);else{if(o.k===s)return;r.mouse=[c,o.invert(c)],ac(this),r.start()}cc(t),r.wheel=setTimeout(function(){r.wheel=null,r.end()},150),r.zoom("mouse",n(m(y(o,s),r.mouse[0],r.mouse[1]),r.extent,h))}}function T(t,...e){if(!r&&i.apply(this,arguments)){var o=t.currentTarget,a=b(this,e,!0).event(t),s=nc(t.view).on("mousemove.zoom",function(t){if(cc(t),!a.moved){var e=t.clientX-c,r=t.clientY-d;a.moved=e*e+r*r>p}a.event(t).zoom("mouse",n(m(a.that.__zoom,a.mouse[0]=oc(t,o),a.mouse[1]),a.extent,h))},!0).on("mouseup.zoom",function(t){s.on("mousemove.zoom mouseup.zoom",null),(void 0)(t.view,a.moved),cc(t),a.event(t).end()},!0),l=oc(t,o),c=t.clientX,d=t.clientY;(void 0)(t.view),dc(t),a.mouse=[l,this.__zoom.invert(l)],ac(this),a.start()}}function S(t,...e){if(i.apply(this,arguments)){var r=this.__zoom,a=oc(t.changedTouches?t.changedTouches[0]:t,this),s=r.invert(a),l=r.k*(t.shiftKey?.5:2),d=n(m(y(r,l),a,s),o.apply(this,e),h);cc(t),c>0?nc(this).transition().duration(c).call(x,d,a,t):nc(this).call(f.transform,d,a,t)}}function v(r,...o){if(i.apply(this,arguments)){var n,a,s,l,h=r.touches,c=h.length,d=b(this,o,r.changedTouches.length===c).event(r);for(dc(r),a=0;a<c;++a)s=h[a],l=[l=oc(s,this),this.__zoom.invert(l),s.identifier],d.touch0?d.touch1||d.touch0[2]===l[2]||(d.touch1=l,d.taps=0):(d.touch0=l,n=!0,d.taps=1+!!t);t&&(t=clearTimeout(t)),n&&(d.taps<2&&(e=l[0],t=setTimeout(function(){t=null},500)),ac(this),d.start())}}function B(t,...e){if(this.__zooming){var r,i,o,a,s=b(this,e).event(t),l=t.changedTouches,c=l.length;for(cc(t),r=0;r<c;++r)i=l[r],o=oc(i,this),s.touch0&&s.touch0[2]===i.identifier?s.touch0[0]=o:s.touch1&&s.touch1[2]===i.identifier&&(s.touch1[0]=o);if(i=s.that.__zoom,s.touch1){var d=s.touch0[0],u=s.touch0[1],p=s.touch1[0],g=s.touch1[1],f=(f=p[0]-d[0])*f+(f=p[1]-d[1])*f,C=(C=g[0]-u[0])*C+(C=g[1]-u[1])*C;i=y(i,Math.sqrt(f/C)),o=[(d[0]+p[0])/2,(d[1]+p[1])/2],a=[(u[0]+g[0])/2,(u[1]+g[1])/2]}else{if(!s.touch0)return;o=s.touch0[0],a=s.touch0[1]}s.zoom("touch",n(m(i,o,a),s.extent,h))}}function _(t,...i){if(this.__zooming){var o,n,a=b(this,i).event(t),s=t.changedTouches,l=s.length;for(dc(t),r&&clearTimeout(r),r=setTimeout(function(){r=null},500),o=0;o<l;++o)n=s[o],a.touch0&&a.touch0[2]===n.identifier?delete a.touch0:a.touch1&&a.touch1[2]===n.identifier&&delete a.touch1;if(a.touch1&&!a.touch0&&(a.touch0=a.touch1,delete a.touch1),a.touch0)a.touch0[1]=this.__zoom.invert(a.touch0[0]);else if(a.end(),2===a.taps&&(n=oc(n,this),Math.hypot(e[0]-n[0],e[1]-n[1])<g)){var h=nc(this).on("dblclick.zoom");h&&h.apply(this,arguments)}}}return f.transform=function(t,e,r,i){var o=t.selection?t.selection():t;o.property("__zoom",gc),t!==o?x(t,e,r,i):o.interrupt().each(function(){b(this,arguments).event(i).start().zoom(null,"function"==typeof e?e.apply(this,arguments):e).end()})},f.scaleBy=function(t,e,r,i){f.scaleTo(t,function(){return this.__zoom.k*("function"==typeof e?e.apply(this,arguments):e)},r,i)},f.scaleTo=function(t,e,r,i){f.transform(t,function(){var t=o.apply(this,arguments),i=this.__zoom,a=null==r?C(t):"function"==typeof r?r.apply(this,arguments):r,s=i.invert(a),l="function"==typeof e?e.apply(this,arguments):e;return n(m(y(i,l),a,s),t,h)},r,i)},f.translateBy=function(t,e,r,i){f.transform(t,function(){return n(this.__zoom.translate("function"==typeof e?e.apply(this,arguments):e,"function"==typeof r?r.apply(this,arguments):r),o.apply(this,arguments),h)},null,i)},f.translateTo=function(t,e,r,i,a){f.transform(t,function(){var t=o.apply(this,arguments),a=this.__zoom,s=null==i?C(t):"function"==typeof i?i.apply(this,arguments):i;return n(lc.translate(s[0],s[1]).scale(a.k).translate("function"==typeof e?-e.apply(this,arguments):-e,"function"==typeof r?-r.apply(this,arguments):-r),t,h)},i,a)},k.prototype={event:function(t){return t&&(this.sourceEvent=t),this},start:function(){return 1===++this.active&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(t,e){return this.mouse&&"mouse"!==t&&(this.mouse[1]=e.invert(this.mouse[0])),this.touch0&&"touch"!==t&&(this.touch0[1]=e.invert(this.touch0[0])),this.touch1&&"touch"!==t&&(this.touch1[1]=e.invert(this.touch1[0])),this.that.__zoom=e,this.emit("zoom"),this},end:function(){return 0===--this.active&&(delete this.that.__zooming,this.emit("end")),this},emit:function(t){var e=nc(this.that).datum();u.call(t,this.that,new(void 0)(t,{sourceEvent:this.sourceEvent,target:f,type:t,transform:this.that.__zoom,dispatch:u}),e)}},f.wheelDelta=function(t){return arguments.length?(a="function"==typeof t?t:sc(+t),f):a},f.filter=function(t){return arguments.length?(i="function"==typeof t?t:sc(!!t),f):i},f.touchable=function(t){return arguments.length?(s="function"==typeof t?t:sc(!!t),f):s},f.extent=function(t){return arguments.length?(o="function"==typeof t?t:sc([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),f):o},f.scaleExtent=function(t){return arguments.length?(l[0]=+t[0],l[1]=+t[1],f):[l[0],l[1]]},f.translateExtent=function(t){return arguments.length?(h[0][0]=+t[0][0],h[1][0]=+t[1][0],h[0][1]=+t[0][1],h[1][1]=+t[1][1],f):[[h[0][0],h[0][1]],[h[1][0],h[1][1]]]},f.constrain=function(t){return arguments.length?(n=t,f):n},f.duration=function(t){return arguments.length?(c=+t,f):c},f.interpolate=function(t){return arguments.length?(d=t,f):d},f.on=function(){var t=u.on.apply(u,arguments);return t===u?f:t},f.clickDistance=function(t){return arguments.length?(p=(t=+t)*t,f):Math.sqrt(p)},f.tapDistance=function(t){return arguments.length?(g=+t,f):g},f},"name",{value:"default",configurable:!0})},9418(t,e,r){"use strict";r.d(e,{A:()=>pt});const{entries:i,setPrototypeOf:o,isFrozen:n,getPrototypeOf:a,getOwnPropertyDescriptor:s}=Object;let{freeze:l,seal:h,create:c}=Object,{apply:d,construct:u}="undefined"!=typeof Reflect&&Reflect;l||(l=function(t){return t}),h||(h=function(t){return t}),d||(d=function(t,e){for(var r=arguments.length,i=new Array(r>2?r-2:0),o=2;o<r;o++)i[o-2]=arguments[o];return t.apply(e,i)}),u||(u=function(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),i=1;i<e;i++)r[i-1]=arguments[i];return new t(...r)});const p=O(Array.prototype.forEach),g=O(Array.prototype.lastIndexOf),f=O(Array.prototype.pop),y=O(Array.prototype.push),m=O(Array.prototype.splice),C=Array.isArray,x=O(String.prototype.toLowerCase),b=O(String.prototype.toString),k=O(String.prototype.match),w=O(String.prototype.replace),T=O(String.prototype.indexOf),S=O(String.prototype.trim),v=O(Number.prototype.toString),B=O(Boolean.prototype.toString),_="undefined"==typeof BigInt?null:O(BigInt.prototype.toString),A="undefined"==typeof Symbol?null:O(Symbol.prototype.toString),L=O(Object.prototype.hasOwnProperty),F=O(Object.prototype.toString),M=O(RegExp.prototype.test),E=($=TypeError,function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return u($,e)});var $;function O(t){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var r=arguments.length,i=new Array(r>1?r-1:0),o=1;o<r;o++)i[o-1]=arguments[o];return d(t,e,i)}}function D(t,e){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:x;if(o&&o(t,null),!C(e))return t;let i=e.length;for(;i--;){let o=e[i];if("string"==typeof o){const t=r(o);t!==o&&(n(e)||(e[i]=t),o=t)}t[o]=!0}return t}function I(t){for(let e=0;e<t.length;e++){L(t,e)||(t[e]=null)}return t}function P(t){const e=c(null);for(const[r,o]of i(t)){L(t,r)&&(C(o)?e[r]=I(o):o&&"object"==typeof o&&o.constructor===Object?e[r]=P(o):e[r]=o)}return e}function q(t,e){for(;null!==t;){const r=s(t,e);if(r){if(r.get)return O(r.get);if("function"==typeof r.value)return O(r.value)}t=a(t)}return function(){return null}}const R=l(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),z=l(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),K=l(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),N=l(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),j=l(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),W=l(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),H=l(["#text"]),U=l(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns"]),Y=l(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),G=l(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),X=l(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),V=h(/\{\{[\w\W]*|[\w\W]*\}\}/gm),Z=h(/<%[\w\W]*|[\w\W]*%>/gm),Q=h(/\$\{[\w\W]*/gm),J=h(/^data-[\-\w.\u00B7-\uFFFF]+$/),tt=h(/^aria-[\-\w]+$/),et=h(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),rt=h(/^(?:\w+script|data):/i),it=h(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),ot=h(/^html$/i),nt=h(/^[a-z][.\w]*(-[.\w]+)+$/i);var at=Object.freeze({__proto__:null,ARIA_ATTR:tt,ATTR_WHITESPACE:it,CUSTOM_ELEMENT:nt,DATA_ATTR:J,DOCTYPE_NAME:ot,ERB_EXPR:Z,IS_ALLOWED_URI:et,IS_SCRIPT_OR_DATA:rt,MUSTACHE_EXPR:V,TMPLIT_EXPR:Q});const st=1,lt=3,ht=7,ct=8,dt=9,ut=function(){return"undefined"==typeof window?null:window};var pt=function t(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ut();const r=e=>t(e);if(r.version="3.4.2",r.removed=[],!e||!e.document||e.document.nodeType!==dt||!e.Element)return r.isSupported=!1,r;let{document:o}=e;const n=o,a=n.currentScript,{DocumentFragment:s,HTMLTemplateElement:h,Node:d,Element:u,NodeFilter:$,NamedNodeMap:O=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:I,DOMParser:V,trustedTypes:Z}=e,Q=u.prototype,J=q(Q,"cloneNode"),tt=q(Q,"remove"),rt=q(Q,"nextSibling"),it=q(Q,"childNodes"),nt=q(Q,"parentNode");if("function"==typeof h){const t=o.createElement("template");t.content&&t.content.ownerDocument&&(o=t.content.ownerDocument)}let pt,gt="";const{implementation:ft,createNodeIterator:yt,createDocumentFragment:mt,getElementsByTagName:Ct}=o,{importNode:xt}=n;let bt={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]};r.isSupported="function"==typeof i&&"function"==typeof nt&&ft&&void 0!==ft.createHTMLDocument;const{MUSTACHE_EXPR:kt,ERB_EXPR:wt,TMPLIT_EXPR:Tt,DATA_ATTR:St,ARIA_ATTR:vt,IS_SCRIPT_OR_DATA:Bt,ATTR_WHITESPACE:_t,CUSTOM_ELEMENT:At}=at;let{IS_ALLOWED_URI:Lt}=at,Ft=null;const Mt=D({},[...R,...z,...K,...j,...H]);let Et=null;const $t=D({},[...U,...Y,...G,...X]);let Ot=Object.seal(c(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Dt=null,It=null;const Pt=Object.seal(c(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let qt=!0,Rt=!0,zt=!1,Kt=!0,Nt=!1,jt=!0,Wt=!1,Ht=!1,Ut=!1,Yt=!1,Gt=!1,Xt=!1,Vt=!0,Zt=!1;const Qt="user-content-";let Jt=!0,te=!1,ee={},re=null;const ie=D({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let oe=null;const ne=D({},["audio","video","img","source","image","track"]);let ae=null;const se=D({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),le="http://www.w3.org/1998/Math/MathML",he="http://www.w3.org/2000/svg",ce="http://www.w3.org/1999/xhtml";let de=ce,ue=!1,pe=null;const ge=D({},[le,he,ce],b);let fe=D({},["mi","mo","mn","ms","mtext"]),ye=D({},["annotation-xml"]);const me=D({},["title","style","font","a","script"]);let Ce=null;const xe=["application/xhtml+xml","text/html"];let be=null,ke=null;const we=o.createElement("form"),Te=function(t){return t instanceof RegExp||t instanceof Function},Se=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(ke&&ke===t)return;t&&"object"==typeof t||(t={}),t=P(t),Ce=-1===xe.indexOf(t.PARSER_MEDIA_TYPE)?"text/html":t.PARSER_MEDIA_TYPE,be="application/xhtml+xml"===Ce?b:x,Ft=L(t,"ALLOWED_TAGS")&&C(t.ALLOWED_TAGS)?D({},t.ALLOWED_TAGS,be):Mt,Et=L(t,"ALLOWED_ATTR")&&C(t.ALLOWED_ATTR)?D({},t.ALLOWED_ATTR,be):$t,pe=L(t,"ALLOWED_NAMESPACES")&&C(t.ALLOWED_NAMESPACES)?D({},t.ALLOWED_NAMESPACES,b):ge,ae=L(t,"ADD_URI_SAFE_ATTR")&&C(t.ADD_URI_SAFE_ATTR)?D(P(se),t.ADD_URI_SAFE_ATTR,be):se,oe=L(t,"ADD_DATA_URI_TAGS")&&C(t.ADD_DATA_URI_TAGS)?D(P(ne),t.ADD_DATA_URI_TAGS,be):ne,re=L(t,"FORBID_CONTENTS")&&C(t.FORBID_CONTENTS)?D({},t.FORBID_CONTENTS,be):ie,Dt=L(t,"FORBID_TAGS")&&C(t.FORBID_TAGS)?D({},t.FORBID_TAGS,be):P({}),It=L(t,"FORBID_ATTR")&&C(t.FORBID_ATTR)?D({},t.FORBID_ATTR,be):P({}),ee=!!L(t,"USE_PROFILES")&&(t.USE_PROFILES&&"object"==typeof t.USE_PROFILES?P(t.USE_PROFILES):t.USE_PROFILES),qt=!1!==t.ALLOW_ARIA_ATTR,Rt=!1!==t.ALLOW_DATA_ATTR,zt=t.ALLOW_UNKNOWN_PROTOCOLS||!1,Kt=!1!==t.ALLOW_SELF_CLOSE_IN_ATTR,Nt=t.SAFE_FOR_TEMPLATES||!1,jt=!1!==t.SAFE_FOR_XML,Wt=t.WHOLE_DOCUMENT||!1,Yt=t.RETURN_DOM||!1,Gt=t.RETURN_DOM_FRAGMENT||!1,Xt=t.RETURN_TRUSTED_TYPE||!1,Ut=t.FORCE_BODY||!1,Vt=!1!==t.SANITIZE_DOM,Zt=t.SANITIZE_NAMED_PROPS||!1,Jt=!1!==t.KEEP_CONTENT,te=t.IN_PLACE||!1,Lt=function(t){try{return M(t,""),!0}catch(e){return!1}}(t.ALLOWED_URI_REGEXP)?t.ALLOWED_URI_REGEXP:et,de="string"==typeof t.NAMESPACE?t.NAMESPACE:ce,fe=L(t,"MATHML_TEXT_INTEGRATION_POINTS")&&t.MATHML_TEXT_INTEGRATION_POINTS&&"object"==typeof t.MATHML_TEXT_INTEGRATION_POINTS?P(t.MATHML_TEXT_INTEGRATION_POINTS):D({},["mi","mo","mn","ms","mtext"]),ye=L(t,"HTML_INTEGRATION_POINTS")&&t.HTML_INTEGRATION_POINTS&&"object"==typeof t.HTML_INTEGRATION_POINTS?P(t.HTML_INTEGRATION_POINTS):D({},["annotation-xml"]);const e=L(t,"CUSTOM_ELEMENT_HANDLING")&&t.CUSTOM_ELEMENT_HANDLING&&"object"==typeof t.CUSTOM_ELEMENT_HANDLING?P(t.CUSTOM_ELEMENT_HANDLING):c(null);if(Ot=c(null),L(e,"tagNameCheck")&&Te(e.tagNameCheck)&&(Ot.tagNameCheck=e.tagNameCheck),L(e,"attributeNameCheck")&&Te(e.attributeNameCheck)&&(Ot.attributeNameCheck=e.attributeNameCheck),L(e,"allowCustomizedBuiltInElements")&&"boolean"==typeof e.allowCustomizedBuiltInElements&&(Ot.allowCustomizedBuiltInElements=e.allowCustomizedBuiltInElements),Nt&&(Rt=!1),Gt&&(Yt=!0),ee&&(Ft=D({},H),Et=c(null),!0===ee.html&&(D(Ft,R),D(Et,U)),!0===ee.svg&&(D(Ft,z),D(Et,Y),D(Et,X)),!0===ee.svgFilters&&(D(Ft,K),D(Et,Y),D(Et,X)),!0===ee.mathMl&&(D(Ft,j),D(Et,G),D(Et,X))),Pt.tagCheck=null,Pt.attributeCheck=null,L(t,"ADD_TAGS")&&("function"==typeof t.ADD_TAGS?Pt.tagCheck=t.ADD_TAGS:C(t.ADD_TAGS)&&(Ft===Mt&&(Ft=P(Ft)),D(Ft,t.ADD_TAGS,be))),L(t,"ADD_ATTR")&&("function"==typeof t.ADD_ATTR?Pt.attributeCheck=t.ADD_ATTR:C(t.ADD_ATTR)&&(Et===$t&&(Et=P(Et)),D(Et,t.ADD_ATTR,be))),L(t,"ADD_URI_SAFE_ATTR")&&C(t.ADD_URI_SAFE_ATTR)&&D(ae,t.ADD_URI_SAFE_ATTR,be),L(t,"FORBID_CONTENTS")&&C(t.FORBID_CONTENTS)&&(re===ie&&(re=P(re)),D(re,t.FORBID_CONTENTS,be)),L(t,"ADD_FORBID_CONTENTS")&&C(t.ADD_FORBID_CONTENTS)&&(re===ie&&(re=P(re)),D(re,t.ADD_FORBID_CONTENTS,be)),Jt&&(Ft["#text"]=!0),Wt&&D(Ft,["html","head","body"]),Ft.table&&(D(Ft,["tbody"]),delete Dt.tbody),t.TRUSTED_TYPES_POLICY){if("function"!=typeof t.TRUSTED_TYPES_POLICY.createHTML)throw E('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof t.TRUSTED_TYPES_POLICY.createScriptURL)throw E('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');pt=t.TRUSTED_TYPES_POLICY,gt=pt.createHTML("")}else void 0===pt&&(pt=function(t,e){if("object"!=typeof t||"function"!=typeof t.createPolicy)return null;let r=null;const i="data-tt-policy-suffix";e&&e.hasAttribute(i)&&(r=e.getAttribute(i));const o="dompurify"+(r?"#"+r:"");try{return t.createPolicy(o,{createHTML:t=>t,createScriptURL:t=>t})}catch(n){return console.warn("TrustedTypes policy "+o+" could not be created."),null}}(Z,a)),null!==pt&&"string"==typeof gt&&(gt=pt.createHTML(""));l&&l(t),ke=t},ve=D({},[...z,...K,...N]),Be=D({},[...j,...W]),_e=function(t){y(r.removed,{element:t});try{nt(t).removeChild(t)}catch(e){tt(t)}},Ae=function(t,e){try{y(r.removed,{attribute:e.getAttributeNode(t),from:e})}catch(i){y(r.removed,{attribute:null,from:e})}if(e.removeAttribute(t),"is"===t)if(Yt||Gt)try{_e(e)}catch(i){}else try{e.setAttribute(t,"")}catch(i){}},Le=function(t){let e=null,r=null;if(Ut)t="<remove></remove>"+t;else{const e=k(t,/^[\r\n\t ]+/);r=e&&e[0]}"application/xhtml+xml"===Ce&&de===ce&&(t='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+t+"</body></html>");const i=pt?pt.createHTML(t):t;if(de===ce)try{e=(new V).parseFromString(i,Ce)}catch(a){}if(!e||!e.documentElement){e=ft.createDocument(de,"template",null);try{e.documentElement.innerHTML=ue?gt:i}catch(a){}}const n=e.body||e.documentElement;return t&&r&&n.insertBefore(o.createTextNode(r),n.childNodes[0]||null),de===ce?Ct.call(e,Wt?"html":"body")[0]:Wt?e.documentElement:n},Fe=function(t){return yt.call(t.ownerDocument||t,t,$.SHOW_ELEMENT|$.SHOW_COMMENT|$.SHOW_TEXT|$.SHOW_PROCESSING_INSTRUCTION|$.SHOW_CDATA_SECTION,null)},Me=function(t){return t instanceof I&&("string"!=typeof t.nodeName||"string"!=typeof t.textContent||"function"!=typeof t.removeChild||!(t.attributes instanceof O)||"function"!=typeof t.removeAttribute||"function"!=typeof t.setAttribute||"string"!=typeof t.namespaceURI||"function"!=typeof t.insertBefore||"function"!=typeof t.hasChildNodes)},Ee=function(t){return"function"==typeof d&&t instanceof d};function $e(t,e,i){p(t,t=>{t.call(r,e,i,ke)})}const Oe=function(t){let e=null;if($e(bt.beforeSanitizeElements,t,null),Me(t))return _e(t),!0;const i=be(t.nodeName);if($e(bt.uponSanitizeElement,t,{tagName:i,allowedTags:Ft}),jt&&t.hasChildNodes()&&!Ee(t.firstElementChild)&&M(/<[/\w!]/g,t.innerHTML)&&M(/<[/\w!]/g,t.textContent))return _e(t),!0;if(jt&&t.namespaceURI===ce&&"style"===i&&Ee(t.firstElementChild))return _e(t),!0;if(t.nodeType===ht)return _e(t),!0;if(jt&&t.nodeType===ct&&M(/<[/\w]/g,t.data))return _e(t),!0;if(Dt[i]||!(Pt.tagCheck instanceof Function&&Pt.tagCheck(i))&&!Ft[i]){if(!Dt[i]&&Pe(i)){if(Ot.tagNameCheck instanceof RegExp&&M(Ot.tagNameCheck,i))return!1;if(Ot.tagNameCheck instanceof Function&&Ot.tagNameCheck(i))return!1}if(Jt&&!re[i]){const e=nt(t)||t.parentNode,r=it(t)||t.childNodes;if(r&&e){for(let i=r.length-1;i>=0;--i){const o=J(r[i],!0);e.insertBefore(o,rt(t))}}}return _e(t),!0}return t instanceof u&&!function(t){let e=nt(t);e&&e.tagName||(e={namespaceURI:de,tagName:"template"});const r=x(t.tagName),i=x(e.tagName);return!!pe[t.namespaceURI]&&(t.namespaceURI===he?e.namespaceURI===ce?"svg"===r:e.namespaceURI===le?"svg"===r&&("annotation-xml"===i||fe[i]):Boolean(ve[r]):t.namespaceURI===le?e.namespaceURI===ce?"math"===r:e.namespaceURI===he?"math"===r&&ye[i]:Boolean(Be[r]):t.namespaceURI===ce?!(e.namespaceURI===he&&!ye[i])&&!(e.namespaceURI===le&&!fe[i])&&!Be[r]&&(me[r]||!ve[r]):!("application/xhtml+xml"!==Ce||!pe[t.namespaceURI]))}(t)?(_e(t),!0):"noscript"!==i&&"noembed"!==i&&"noframes"!==i||!M(/<\/no(script|embed|frames)/i,t.innerHTML)?(Nt&&t.nodeType===lt&&(e=t.textContent,p([kt,wt,Tt],t=>{e=w(e,t," ")}),t.textContent!==e&&(y(r.removed,{element:t.cloneNode()}),t.textContent=e)),$e(bt.afterSanitizeElements,t,null),!1):(_e(t),!0)},De=function(t,e,r){if(It[e])return!1;if(Vt&&("id"===e||"name"===e)&&(r in o||r in we))return!1;const i=Et[e]||Pt.attributeCheck instanceof Function&&Pt.attributeCheck(e,t);if(Rt&&!It[e]&&M(St,e));else if(qt&&M(vt,e));else if(!i||It[e]){if(!(Pe(t)&&(Ot.tagNameCheck instanceof RegExp&&M(Ot.tagNameCheck,t)||Ot.tagNameCheck instanceof Function&&Ot.tagNameCheck(t))&&(Ot.attributeNameCheck instanceof RegExp&&M(Ot.attributeNameCheck,e)||Ot.attributeNameCheck instanceof Function&&Ot.attributeNameCheck(e,t))||"is"===e&&Ot.allowCustomizedBuiltInElements&&(Ot.tagNameCheck instanceof RegExp&&M(Ot.tagNameCheck,r)||Ot.tagNameCheck instanceof Function&&Ot.tagNameCheck(r))))return!1}else if(ae[e]);else if(M(Lt,w(r,_t,"")));else if("src"!==e&&"xlink:href"!==e&&"href"!==e||"script"===t||0!==T(r,"data:")||!oe[t]){if(zt&&!M(Bt,w(r,_t,"")));else if(r)return!1}else;return!0},Ie=D({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),Pe=function(t){return!Ie[x(t)]&&M(At,t)},qe=function(t){$e(bt.beforeSanitizeAttributes,t,null);const{attributes:e}=t;if(!e||Me(t))return;const i={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Et,forceKeepAttr:void 0};let o=e.length;for(;o--;){const a=e[o],{name:s,namespaceURI:l,value:h}=a,c=be(s),d=h;let u="value"===s?d:S(d);if(i.attrName=c,i.attrValue=u,i.keepAttr=!0,i.forceKeepAttr=void 0,$e(bt.uponSanitizeAttribute,t,i),u=i.attrValue,!Zt||"id"!==c&&"name"!==c||0===T(u,Qt)||(Ae(s,t),u=Qt+u),jt&&M(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,u)){Ae(s,t);continue}if("attributename"===c&&k(u,"href")){Ae(s,t);continue}if(i.forceKeepAttr)continue;if(!i.keepAttr){Ae(s,t);continue}if(!Kt&&M(/\/>/i,u)){Ae(s,t);continue}Nt&&p([kt,wt,Tt],t=>{u=w(u,t," ")});const g=be(t.nodeName);if(De(g,c,u)){if(pt&&"object"==typeof Z&&"function"==typeof Z.getAttributeType)if(l);else switch(Z.getAttributeType(g,c)){case"TrustedHTML":u=pt.createHTML(u);break;case"TrustedScriptURL":u=pt.createScriptURL(u)}if(u!==d)try{l?t.setAttributeNS(l,s,u):t.setAttribute(s,u),Me(t)?_e(t):f(r.removed)}catch(n){Ae(s,t)}}else Ae(s,t)}$e(bt.afterSanitizeAttributes,t,null)},Re=function(t){let e=null;const r=Fe(t);for($e(bt.beforeSanitizeShadowDOM,t,null);e=r.nextNode();)$e(bt.uponSanitizeShadowNode,e,null),Oe(e),qe(e),e.content instanceof s&&Re(e.content);$e(bt.afterSanitizeShadowDOM,t,null)};return r.sanitize=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=null,o=null,a=null,l=null;if(ue=!t,ue&&(t="\x3c!--\x3e"),"string"!=typeof t&&!Ee(t)&&"string"!=typeof(t=function(t){switch(typeof t){case"string":return t;case"number":return v(t);case"boolean":return B(t);case"bigint":return _?_(t):"0";case"symbol":return A?A(t):"Symbol()";case"undefined":default:return F(t);case"function":case"object":{if(null===t)return F(t);const e=t,r=q(e,"toString");if("function"==typeof r){const t=r(e);return"string"==typeof t?t:F(t)}return F(t)}}}(t)))throw E("dirty is not a string, aborting");if(!r.isSupported)return t;if(Ht||Se(e),r.removed=[],"string"==typeof t&&(te=!1),te){const e=t.nodeName;if("string"==typeof e){const t=be(e);if(!Ft[t]||Dt[t])throw E("root node is forbidden and cannot be sanitized in-place")}}else if(t instanceof d)i=Le("\x3c!----\x3e"),o=i.ownerDocument.importNode(t,!0),o.nodeType===st&&"BODY"===o.nodeName||"HTML"===o.nodeName?i=o:i.appendChild(o);else{if(!Yt&&!Nt&&!Wt&&-1===t.indexOf("<"))return pt&&Xt?pt.createHTML(t):t;if(i=Le(t),!i)return Yt?null:Xt?gt:""}i&&Ut&&_e(i.firstChild);const h=Fe(te?t:i);for(;a=h.nextNode();)Oe(a),qe(a),a.content instanceof s&&Re(a.content);if(te)return t;if(Yt){if(Nt){i.normalize();let t=i.innerHTML;p([kt,wt,Tt],e=>{t=w(t,e," ")}),i.innerHTML=t}if(Gt)for(l=mt.call(i.ownerDocument);i.firstChild;)l.appendChild(i.firstChild);else l=i;return(Et.shadowroot||Et.shadowrootmode)&&(l=xt.call(n,l,!0)),l}let c=Wt?i.outerHTML:i.innerHTML;return Wt&&Ft["!doctype"]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&M(ot,i.ownerDocument.doctype.name)&&(c="<!DOCTYPE "+i.ownerDocument.doctype.name+">\n"+c),Nt&&p([kt,wt,Tt],t=>{c=w(c,t," ")}),pt&&Xt?pt.createHTML(c):c},r.setConfig=function(){Se(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),Ht=!0},r.clearConfig=function(){ke=null,Ht=!1},r.isValidAttribute=function(t,e,r){ke||Se({});const i=be(t),o=be(e);return De(i,o,r)},r.addHook=function(t,e){"function"==typeof e&&y(bt[t],e)},r.removeHook=function(t,e){if(void 0!==e){const r=g(bt[t],e);return-1===r?void 0:m(bt[t],r,1)[0]}return f(bt[t])},r.removeHooks=function(t){bt[t]=[]},r.removeAllHooks=function(){bt={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},r}()},9125(t,e,r){"use strict";function i(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}r.d(e,{b:()=>i})},9826(t,e,r){"use strict";r.d(e,{$V:()=>a,Av:()=>i,GX:()=>g,ML:()=>S,NA:()=>d,OG:()=>o,Qb:()=>y,R_:()=>s,Uw:()=>u,VP:()=>l,XZ:()=>b,ZR:()=>x,_u:()=>w,cT:()=>p,i1:()=>k,iq:()=>f,kj:()=>n,pj:()=>c,q:()=>m,ri:()=>T,vC:()=>h,x6:()=>C});const i="[object RegExp]",o="[object String]",n="[object Number]",a="[object Boolean]",s="[object Arguments]",l="[object Symbol]",h="[object Date]",c="[object Map]",d="[object Set]",u="[object Array]",p="[object ArrayBuffer]",g="[object Object]",f="[object DataView]",y="[object Uint8Array]",m="[object Uint8ClampedArray]",C="[object Uint16Array]",x="[object Uint32Array]",b="[object Int8Array]",k="[object Int16Array]",w="[object Int32Array]",T="[object Float32Array]",S="[object Float64Array]"},4608(t,e,r){"use strict";r.d(e,{N:()=>o});var i=r(9125);function o(t){return null!==t&&"object"==typeof t&&"[object Arguments]"===(0,i.b)(t)}},3058(t,e,r){"use strict";function i(t){return null!=t&&"function"!=typeof t&&function(t){return Number.isSafeInteger(t)&&t>=0}(t.length)}r.d(e,{X:()=>i})},9663(t,e,r){"use strict";r.d(e,{i:()=>o});var i=r(2796);function o(t){return(0,i.i)(t)}},1461(t,e,r){"use strict";r.d(e,{P:()=>o});const i="object"==typeof globalThis&&globalThis||"object"==typeof window&&window||"object"==typeof self&&self||"object"==typeof globalThis&&globalThis||function(){return this}()||Function("return this")();function o(t){return void 0!==i.Buffer&&i.Buffer.isBuffer(t)}},7110(t,e,r){"use strict";function i(t){return null==t||"object"!=typeof t&&"function"!=typeof t}r.d(e,{s:()=>i})},2796(t,e,r){"use strict";function i(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}r.d(e,{i:()=>i})},3539(t,e,r){"use strict";r.d(e,{A:()=>a});var i=r(2453),o=r(3122);const n=class{constructor(){this.type=o.Z.ALL}get(){return this.type}set(t){if(this.type&&this.type!==t)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=t}reset(){this.type=o.Z.ALL}is(t){return this.type===t}};const a=new class{constructor(t,e){this.color=e,this.changed=!1,this.data=t,this.type=new n}set(t,e){return this.color=e,this.changed=!1,this.data=t,this.type.type=o.Z.ALL,this}_ensureHSL(){const t=this.data,{h:e,s:r,l:o}=t;void 0===e&&(t.h=i.A.channel.rgb2hsl(t,"h")),void 0===r&&(t.s=i.A.channel.rgb2hsl(t,"s")),void 0===o&&(t.l=i.A.channel.rgb2hsl(t,"l"))}_ensureRGB(){const t=this.data,{r:e,g:r,b:o}=t;void 0===e&&(t.r=i.A.channel.hsl2rgb(t,"r")),void 0===r&&(t.g=i.A.channel.hsl2rgb(t,"g")),void 0===o&&(t.b=i.A.channel.hsl2rgb(t,"b"))}get r(){const t=this.data,e=t.r;return this.type.is(o.Z.HSL)||void 0===e?(this._ensureHSL(),i.A.channel.hsl2rgb(t,"r")):e}get g(){const t=this.data,e=t.g;return this.type.is(o.Z.HSL)||void 0===e?(this._ensureHSL(),i.A.channel.hsl2rgb(t,"g")):e}get b(){const t=this.data,e=t.b;return this.type.is(o.Z.HSL)||void 0===e?(this._ensureHSL(),i.A.channel.hsl2rgb(t,"b")):e}get h(){const t=this.data,e=t.h;return this.type.is(o.Z.RGB)||void 0===e?(this._ensureRGB(),i.A.channel.rgb2hsl(t,"h")):e}get s(){const t=this.data,e=t.s;return this.type.is(o.Z.RGB)||void 0===e?(this._ensureRGB(),i.A.channel.rgb2hsl(t,"s")):e}get l(){const t=this.data,e=t.l;return this.type.is(o.Z.RGB)||void 0===e?(this._ensureRGB(),i.A.channel.rgb2hsl(t,"l")):e}get a(){return this.data.a}set r(t){this.type.set(o.Z.RGB),this.changed=!0,this.data.r=t}set g(t){this.type.set(o.Z.RGB),this.changed=!0,this.data.g=t}set b(t){this.type.set(o.Z.RGB),this.changed=!0,this.data.b=t}set h(t){this.type.set(o.Z.HSL),this.changed=!0,this.data.h=t}set s(t){this.type.set(o.Z.HSL),this.changed=!0,this.data.s=t}set l(t){this.type.set(o.Z.HSL),this.changed=!0,this.data.l=t}set a(t){this.changed=!0,this.data.a=t}}({r:0,g:0,b:0,a:0},"transparent")},4886(t,e,r){"use strict";r.d(e,{A:()=>f});var i=r(3539),o=r(3122);const n={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:t=>{if(35!==t.charCodeAt(0))return;const e=t.match(n.re);if(!e)return;const r=e[1],o=parseInt(r,16),a=r.length,s=a%4==0,l=a>4,h=l?1:17,c=l?8:4,d=s?0:-1,u=l?255:15;return i.A.set({r:(o>>c*(d+3)&u)*h,g:(o>>c*(d+2)&u)*h,b:(o>>c*(d+1)&u)*h,a:s?(o&u)*h/255:1},t)},stringify:t=>{const{r:e,g:r,b:i,a:n}=t;return n<1?`#${o.Y[Math.round(e)]}${o.Y[Math.round(r)]}${o.Y[Math.round(i)]}${o.Y[Math.round(255*n)]}`:`#${o.Y[Math.round(e)]}${o.Y[Math.round(r)]}${o.Y[Math.round(i)]}`}},a=n;var s=r(2453);const l={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:t=>{const e=t.match(l.hueRe);if(e){const[,t,r]=e;switch(r){case"grad":return s.A.channel.clamp.h(.9*parseFloat(t));case"rad":return s.A.channel.clamp.h(180*parseFloat(t)/Math.PI);case"turn":return s.A.channel.clamp.h(360*parseFloat(t))}}return s.A.channel.clamp.h(parseFloat(t))},parse:t=>{const e=t.charCodeAt(0);if(104!==e&&72!==e)return;const r=t.match(l.re);if(!r)return;const[,o,n,a,h,c]=r;return i.A.set({h:l._hue2deg(o),s:s.A.channel.clamp.s(parseFloat(n)),l:s.A.channel.clamp.l(parseFloat(a)),a:h?s.A.channel.clamp.a(c?parseFloat(h)/100:parseFloat(h)):1},t)},stringify:t=>{const{h:e,s:r,l:i,a:o}=t;return o<1?`hsla(${s.A.lang.round(e)}, ${s.A.lang.round(r)}%, ${s.A.lang.round(i)}%, ${o})`:`hsl(${s.A.lang.round(e)}, ${s.A.lang.round(r)}%, ${s.A.lang.round(i)}%)`}},h=l,c={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:t=>{t=t.toLowerCase();const e=c.colors[t];if(e)return a.parse(e)},stringify:t=>{const e=a.stringify(t);for(const r in c.colors)if(c.colors[r]===e)return r}},d=c,u={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:t=>{const e=t.charCodeAt(0);if(114!==e&&82!==e)return;const r=t.match(u.re);if(!r)return;const[,o,n,a,l,h,c,d,p]=r;return i.A.set({r:s.A.channel.clamp.r(n?2.55*parseFloat(o):parseFloat(o)),g:s.A.channel.clamp.g(l?2.55*parseFloat(a):parseFloat(a)),b:s.A.channel.clamp.b(c?2.55*parseFloat(h):parseFloat(h)),a:d?s.A.channel.clamp.a(p?parseFloat(d)/100:parseFloat(d)):1},t)},stringify:t=>{const{r:e,g:r,b:i,a:o}=t;return o<1?`rgba(${s.A.lang.round(e)}, ${s.A.lang.round(r)}, ${s.A.lang.round(i)}, ${s.A.lang.round(o)})`:`rgb(${s.A.lang.round(e)}, ${s.A.lang.round(r)}, ${s.A.lang.round(i)})`}},p=u,g={format:{keyword:c,hex:a,rgb:u,rgba:u,hsl:l,hsla:l},parse:t=>{if("string"!=typeof t)return t;const e=a.parse(t)||p.parse(t)||h.parse(t)||d.parse(t);if(e)return e;throw new Error(`Unsupported color format: "${t}"`)},stringify:t=>!t.changed&&t.color?t.color:t.type.is(o.Z.HSL)||void 0===t.data.r?h.stringify(t):t.a<1||!Number.isInteger(t.r)||!Number.isInteger(t.g)||!Number.isInteger(t.b)?p.stringify(t):a.stringify(t)},f=g},3122(t,e,r){"use strict";r.d(e,{Y:()=>o,Z:()=>n});var i=r(2453);const o={};for(let a=0;a<=255;a++)o[a]=i.A.unit.dec2hex(a);const n={ALL:0,RGB:1,HSL:2}},5635(t,e,r){"use strict";r.d(e,{A:()=>n});var i=r(2453),o=r(4886);const n=(t,e,r)=>{const n=o.A.parse(t),a=n[e],s=i.A.channel.clamp[e](a+r);return a!==s&&(n[e]=s),o.A.stringify(n)}},8232(t,e,r){"use strict";r.d(e,{A:()=>n});var i=r(2453),o=r(4886);const n=(t,e)=>{const r=o.A.parse(t);for(const o in e)r[o]=i.A.channel.clamp[o](e[o]);return o.A.stringify(r)}},5263(t,e,r){"use strict";r.d(e,{A:()=>o});var i=r(5635);const o=(t,e)=>(0,i.A)(t,"l",-e)},3219(t,e,r){"use strict";r.d(e,{A:()=>s});var i=r(2453),o=r(4886);const n=t=>{const{r:e,g:r,b:n}=o.A.parse(t),a=.2126*i.A.channel.toLinear(e)+.7152*i.A.channel.toLinear(r)+.0722*i.A.channel.toLinear(n);return i.A.lang.round(a)},a=t=>n(t)>=.5,s=t=>!a(t)},8041(t,e,r){"use strict";r.d(e,{A:()=>o});var i=r(5635);const o=(t,e)=>(0,i.A)(t,"l",e)},3201(t,e,r){"use strict";r.d(e,{A:()=>s});var i=r(2453),o=r(3539),n=r(4886),a=r(8232);const s=(t,e,r=0,s=1)=>{if("number"!=typeof t)return(0,a.A)(t,{a:e});const l=o.A.set({r:i.A.channel.clamp.r(t),g:i.A.channel.clamp.g(e),b:i.A.channel.clamp.b(r),a:i.A.channel.clamp.a(s)});return n.A.stringify(l)}},2453(t,e,r){"use strict";r.d(e,{A:()=>o});const i={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:t=>t>=255?255:t<0?0:t,g:t=>t>=255?255:t<0?0:t,b:t=>t>=255?255:t<0?0:t,h:t=>t%360,s:t=>t>=100?100:t<0?0:t,l:t=>t>=100?100:t<0?0:t,a:t=>t>=1?1:t<0?0:t},toLinear:t=>{const e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},hue2rgb:(t,e,r)=>(r<0&&(r+=1),r>1&&(r-=1),r<1/6?t+6*(e-t)*r:r<.5?e:r<2/3?t+(e-t)*(2/3-r)*6:t),hsl2rgb:({h:t,s:e,l:r},o)=>{if(!e)return 2.55*r;t/=360,e/=100;const n=(r/=100)<.5?r*(1+e):r+e-r*e,a=2*r-n;switch(o){case"r":return 255*i.hue2rgb(a,n,t+1/3);case"g":return 255*i.hue2rgb(a,n,t);case"b":return 255*i.hue2rgb(a,n,t-1/3)}},rgb2hsl:({r:t,g:e,b:r},i)=>{t/=255,e/=255,r/=255;const o=Math.max(t,e,r),n=Math.min(t,e,r),a=(o+n)/2;if("l"===i)return 100*a;if(o===n)return 0;const s=o-n;if("s"===i)return 100*(a>.5?s/(2-o-n):s/(o+n));switch(o){case t:return 60*((e-r)/s+(e<r?6:0));case e:return 60*((r-t)/s+2);case r:return 60*((t-e)/s+4);default:return-1}}},o={channel:i,lang:{clamp:(t,e,r)=>e>r?Math.min(e,Math.max(r,t)):Math.min(r,Math.max(e,t)),round:t=>Math.round(1e10*t)/1e10},unit:{dec2hex:t=>{const e=Math.round(t).toString(16);return e.length>1?e:`0${e}`}}}},273(t,e,r){"use strict";r.d(e,{DA:()=>b,IU:()=>L,U:()=>A,U7:()=>Me,U_:()=>$e,Zk:()=>d,aP:()=>Ae,gh:()=>Ee,lC:()=>p,on:()=>Fe});var i=r(5105),o=r(8013),n=r(5739),a=r(8515),s=r(3706),l=r(797),h=r(451),c=r(2274),d=(0,l.K2)(async(t,e,r)=>{let o;const l=e.useHtmlLabels||(0,s._3)((0,s.D7)()?.htmlLabels);o=r||"node default";const c=t.insert("g").attr("class",o).attr("id",e.domId||e.id),d=c.insert("g").attr("class","label").attr("style",(0,a.KL)(e.labelStyle));let u;u=void 0===e.label?"":"string"==typeof e.label?e.label:e.label[0];const p=!!e.icon||!!e.img,g="markdown"===e.labelType,f=await(0,n.GZ)(d,(0,s.jZ)((0,a.Sm)(u),(0,s.D7)()),{useHtmlLabels:l,width:e.width||(0,s.D7)().flowchart?.wrappingWidth,classes:g?"markdown-node-label":"",style:e.labelStyle,addSvgBackground:p,markdown:g},(0,s.D7)());let y=f.getBBox();const m=(e?.padding??0)/2;if(l){const t=f.children[0],e=(0,h.Ltv)(f);await(0,i.X)(t,u),y=t.getBoundingClientRect(),e.attr("width",y.width),e.attr("height",y.height)}return l?d.attr("transform","translate("+-y.width/2+", "+-y.height/2+")"):d.attr("transform","translate(0, "+-y.height/2+")"),e.centerLabel&&d.attr("transform","translate("+-y.width/2+", "+-y.height/2+")"),d.insert("rect",":first-child"),{shapeSvg:c,bbox:y,halfPadding:m,label:d}},"labelHelper"),u=(0,l.K2)(async(t,e,r)=>{const i=r.useHtmlLabels??(0,s.E)((0,s.D7)()),o=t.insert("g").attr("class","label").attr("style",r.labelStyle||""),l=await(0,n.GZ)(o,(0,s.jZ)((0,a.Sm)(e),(0,s.D7)()),{useHtmlLabels:i,width:r.width||(0,s.D7)()?.flowchart?.wrappingWidth,style:r.labelStyle,addSvgBackground:!!r.icon||!!r.img});let c=l.getBBox();const d=r.padding/2;if((0,s.E)((0,s.D7)())){const t=l.children[0],e=(0,h.Ltv)(l);c=t.getBoundingClientRect(),e.attr("width",c.width),e.attr("height",c.height)}return i?o.attr("transform","translate("+-c.width/2+", "+-c.height/2+")"):o.attr("transform","translate(0, "+-c.height/2+")"),r.centerLabel&&o.attr("transform","translate("+-c.width/2+", "+-c.height/2+")"),o.insert("rect",":first-child"),{shapeSvg:t,bbox:c,halfPadding:d,label:o}},"insertLabel"),p=(0,l.K2)((t,e)=>{const r=e.node().getBBox();t.width=r.width,t.height=r.height},"updateNodeBounds"),g=(0,l.K2)((t,e)=>("handDrawn"===t.look?"rough-node":"node")+" "+t.cssClasses+" "+(e||""),"getNodeClasses");function f(t){const e=t.map((t,e)=>`${0===e?"M":"L"}${t.x},${t.y}`);return e.push("Z"),e.join(" ")}function y(t,e,r,i,o,n){const a=[],s=r-t,l=i-e,h=s/n,c=2*Math.PI/h,d=e+l/2;for(let u=0;u<=50;u++){const e=t+u/50*s,r=d+o*Math.sin(c*(e-t));a.push({x:e,y:r})}return a}function m(t,e,r,i,o,n){const a=[],s=o*Math.PI/180,l=(n*Math.PI/180-s)/(i-1);for(let h=0;h<i;h++){const i=s+h*l,o=t+r*Math.cos(i),n=e+r*Math.sin(i);a.push({x:-o,y:-n})}return a}function C(t){const e=Array.from(t.childNodes).filter(t=>"path"===t.tagName),r=document.createElementNS("http://www.w3.org/2000/svg","path"),i=e.map(t=>t.getAttribute("d")).filter(t=>null!==t).join(" ");r.setAttribute("d",i);const o=e.find(t=>"none"!==t.getAttribute("fill")),n=e.find(t=>"none"!==t.getAttribute("stroke")),a=(0,l.K2)((t,e)=>t?.getAttribute(e)??void 0,"getAttr");if(o){const t={fill:a(o,"fill"),"fill-opacity":a(o,"fill-opacity")??"1"};Object.entries(t).forEach(([t,e])=>{e&&r.setAttribute(t,e)})}if(n){const t={stroke:a(n,"stroke"),"stroke-width":a(n,"stroke-width")??"1","stroke-opacity":a(n,"stroke-opacity")??"1"};Object.entries(t).forEach(([t,e])=>{e&&r.setAttribute(t,e)})}const s=document.createElementNS("http://www.w3.org/2000/svg","g");return s.appendChild(r),s}(0,l.K2)(f,"createPathFromPoints"),(0,l.K2)(y,"generateFullSineWavePoints"),(0,l.K2)(m,"generateCirclePoints"),(0,l.K2)(C,"mergePaths");var x=(0,l.K2)((t,e)=>{var r,i,o=t.x,n=t.y,a=e.x-o,s=e.y-n,l=t.width/2,h=t.height/2;return Math.abs(s)*l>Math.abs(a)*h?(s<0&&(h=-h),r=0===s?0:h*a/s,i=h):(a<0&&(l=-l),r=l,i=0===a?0:l*s/a),{x:o+r,y:n+i}},"intersectRect"),b=(0,l.K2)(async(t,e,r,i=!1,o=!1)=>{let a=e||"";"object"==typeof a&&(a=a[0]);const l=(0,s.D7)(),h=(0,s.E)(l);return await(0,n.GZ)(t,a,{style:r,isTitle:i,useHtmlLabels:h,markdown:!1,isNode:o,width:Number.POSITIVE_INFINITY},l)},"createLabel"),k=(0,l.K2)((t,e,r,i,o)=>["M",t+o,e,"H",t+r-o,"A",o,o,0,0,1,t+r,e+o,"V",e+i-o,"A",o,o,0,0,1,t+r-o,e+i,"H",t+o,"A",o,o,0,0,1,t,e+i-o,"V",e+o,"A",o,o,0,0,1,t+o,e,"Z"].join(" "),"createRoundedRectPathD"),w=(0,l.K2)(async(t,e)=>{l.Rm.info("Creating subgraph rect for ",e.id,e);const r=(0,s.D7)(),{themeVariables:a,handDrawnSeed:d}=r,{clusterBkg:u,clusterBorder:p}=a,{labelStyles:g,nodeStyles:f,borderStyles:y,backgroundStyles:m}=(0,o.GX)(e),C=t.insert("g").attr("class","cluster "+e.cssClasses).attr("id",e.domId).attr("data-look",e.look),w=(0,s.E)(r),T=C.insert("g").attr("class","cluster-label ");let S;S="markdown"===e.labelType?await(0,n.GZ)(T,e.label,{style:e.labelStyle,useHtmlLabels:w,isNode:!0,width:e.width}):await b(T,e.label,e.labelStyle||"",!1,!0);let v=S.getBBox();if((0,s.E)(r)){const t=S.children[0],e=(0,h.Ltv)(S);v=t.getBoundingClientRect(),e.attr("width",v.width),e.attr("height",v.height)}const B=e.width<=v.width+e.padding?v.width+e.padding:e.width;e.width<=v.width+e.padding?e.diff=(B-e.width)/2-e.padding:e.diff=-e.padding;const _=e.height,A=e.x-B/2,L=e.y-_/2;let F;if(l.Rm.trace("Data ",e,JSON.stringify(e)),"handDrawn"===e.look){const t=c.A.svg(C),r=(0,o.Fr)(e,{roughness:.7,fill:u,stroke:p,fillWeight:3,seed:d}),i=t.path(k(A,L,B,_,0),r);F=C.insert(()=>(l.Rm.debug("Rough node insert CXC",i),i),":first-child"),F.select("path:nth-child(2)").attr("style",y.join(";")),F.select("path").attr("style",m.join(";").replace("fill","stroke"))}else F=C.insert("rect",":first-child"),F.attr("style",f).attr("rx",e.rx).attr("ry",e.ry).attr("x",A).attr("y",L).attr("width",B).attr("height",_);const{subGraphTitleTopMargin:M}=(0,i.O)(r);if(T.attr("transform",`translate(${e.x-v.width/2}, ${e.y-e.height/2+M})`),g){const t=T.select("span");t&&t.attr("style",g)}const E=F.node().getBBox();return e.offsetX=0,e.width=E.width,e.height=E.height,e.offsetY=v.height-e.padding/2,e.intersect=function(t){return x(e,t)},{cluster:C,labelBBox:v}},"rect"),T=(0,l.K2)((t,e)=>{const r=t.insert("g").attr("class","note-cluster").attr("id",e.domId),i=r.insert("rect",":first-child"),o=0*e.padding,n=o/2;i.attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-n).attr("y",e.y-e.height/2-n).attr("width",e.width+o).attr("height",e.height+o).attr("fill","none");const a=i.node().getBBox();return e.width=a.width,e.height=a.height,e.intersect=function(t){return x(e,t)},{cluster:r,labelBBox:{width:0,height:0}}},"noteGroup"),S=(0,l.K2)(async(t,e)=>{const r=(0,s.D7)(),{themeVariables:i,handDrawnSeed:o}=r,{altBackground:n,compositeBackground:a,compositeTitleBackground:l,nodeBorder:d}=i,u=t.insert("g").attr("class",e.cssClasses).attr("id",e.domId).attr("data-id",e.id).attr("data-look",e.look),p=u.insert("g",":first-child"),g=u.insert("g").attr("class","cluster-label");let f=u.append("rect");const y=await b(g,e.label,e.labelStyle,void 0,!0);let m=y.getBBox();if((0,s.E)(r)){const t=y.children[0],e=(0,h.Ltv)(y);m=t.getBoundingClientRect(),e.attr("width",m.width),e.attr("height",m.height)}const C=0*e.padding,w=C/2,T=(e.width<=m.width+e.padding?m.width+e.padding:e.width)+C;e.width<=m.width+e.padding?e.diff=(T-e.width)/2-e.padding:e.diff=-e.padding;const S=e.height+C,v=e.height+C-m.height-6,B=e.x-T/2,_=e.y-S/2;e.width=T;const A=e.y-e.height/2-w+m.height+2;let L;if("handDrawn"===e.look){const t=e.cssClasses.includes("statediagram-cluster-alt"),r=c.A.svg(u),i=e.rx||e.ry?r.path(k(B,_,T,S,10),{roughness:.7,fill:l,fillStyle:"solid",stroke:d,seed:o}):r.rectangle(B,_,T,S,{seed:o});L=u.insert(()=>i,":first-child");const s=r.rectangle(B,A,T,v,{fill:t?n:a,fillStyle:t?"hachure":"solid",stroke:d,seed:o});L=u.insert(()=>i,":first-child"),f=u.insert(()=>s)}else{L=p.insert("rect",":first-child");const t="outer";L.attr("class",t).attr("x",B).attr("y",_).attr("width",T).attr("height",S).attr("data-look",e.look),f.attr("class","inner").attr("x",B).attr("y",A).attr("width",T).attr("height",v)}g.attr("transform",`translate(${e.x-m.width/2}, ${_+1-((0,s.E)(r)?0:3)})`);const F=L.node().getBBox();return e.height=F.height,e.offsetX=0,e.offsetY=m.height-e.padding/2,e.labelBBox=m,e.intersect=function(t){return x(e,t)},{cluster:u,labelBBox:m}},"roundedWithTitle"),v=(0,l.K2)(async(t,e)=>{l.Rm.info("Creating subgraph rect for ",e.id,e);const r=(0,s.D7)(),{themeVariables:a,handDrawnSeed:d}=r,{clusterBkg:u,clusterBorder:p}=a,{labelStyles:g,nodeStyles:f,borderStyles:y,backgroundStyles:m}=(0,o.GX)(e),C=t.insert("g").attr("class","cluster "+e.cssClasses).attr("id",e.domId).attr("data-look",e.look),b=(0,s.E)(r),w=C.insert("g").attr("class","cluster-label "),T=await(0,n.GZ)(w,e.label,{style:e.labelStyle,useHtmlLabels:b,isNode:!0,width:e.width});let S=T.getBBox();if((0,s.E)(r)){const t=T.children[0],e=(0,h.Ltv)(T);S=t.getBoundingClientRect(),e.attr("width",S.width),e.attr("height",S.height)}const v=e.width<=S.width+e.padding?S.width+e.padding:e.width;e.width<=S.width+e.padding?e.diff=(v-e.width)/2-e.padding:e.diff=-e.padding;const B=e.height,_=e.x-v/2,A=e.y-B/2;let L;if(l.Rm.trace("Data ",e,JSON.stringify(e)),"handDrawn"===e.look){const t=c.A.svg(C),r=(0,o.Fr)(e,{roughness:.7,fill:u,stroke:p,fillWeight:4,seed:d}),i=t.path(k(_,A,v,B,e.rx),r);L=C.insert(()=>(l.Rm.debug("Rough node insert CXC",i),i),":first-child"),L.select("path:nth-child(2)").attr("style",y.join(";")),L.select("path").attr("style",m.join(";").replace("fill","stroke"))}else L=C.insert("rect",":first-child"),L.attr("style",f).attr("rx",e.rx).attr("ry",e.ry).attr("x",_).attr("y",A).attr("width",v).attr("height",B);const{subGraphTitleTopMargin:F}=(0,i.O)(r);if(w.attr("transform",`translate(${e.x-S.width/2}, ${e.y-e.height/2+F})`),g){const t=w.select("span");t&&t.attr("style",g)}const M=L.node().getBBox();return e.offsetX=0,e.width=M.width,e.height=M.height,e.offsetY=S.height-e.padding/2,e.intersect=function(t){return x(e,t)},{cluster:C,labelBBox:S}},"kanbanSection"),B={rect:w,squareRect:w,roundedWithTitle:S,noteGroup:T,divider:(0,l.K2)((t,e)=>{const r=(0,s.D7)(),{themeVariables:i,handDrawnSeed:o}=r,{nodeBorder:n}=i,a=t.insert("g").attr("class",e.cssClasses).attr("id",e.domId).attr("data-look",e.look),l=a.insert("g",":first-child"),h=0*e.padding,d=e.width+h;e.diff=-e.padding;const u=e.height+h,p=e.x-d/2,g=e.y-u/2;let f;if(e.width=d,"handDrawn"===e.look){const t=c.A.svg(a).rectangle(p,g,d,u,{fill:"lightgrey",roughness:.5,strokeLineDash:[5],stroke:n,seed:o});f=a.insert(()=>t,":first-child")}else{f=l.insert("rect",":first-child");let t="outer";t=(e.look,"divider"),f.attr("class",t).attr("x",p).attr("y",g).attr("width",d).attr("height",u).attr("data-look",e.look)}const y=f.node().getBBox();return e.height=y.height,e.offsetX=0,e.offsetY=0,e.intersect=function(t){return x(e,t)},{cluster:a,labelBBox:{}}},"divider"),kanbanSection:v},_=new Map,A=(0,l.K2)(async(t,e)=>{const r=e.shape||"rect",i=await B[r](t,e);return _.set(e.id,i),i},"insertCluster"),L=(0,l.K2)(()=>{_=new Map},"clear");function F(t,e){return t.intersect(e)}(0,l.K2)(F,"intersectNode");var M=F;function E(t,e,r,i){var o=t.x,n=t.y,a=o-i.x,s=n-i.y,l=Math.sqrt(e*e*s*s+r*r*a*a),h=Math.abs(e*r*a/l);i.x<o&&(h=-h);var c=Math.abs(e*r*s/l);return i.y<n&&(c=-c),{x:o+h,y:n+c}}(0,l.K2)(E,"intersectEllipse");var $=E;function O(t,e,r){return $(t,e,e,r)}(0,l.K2)(O,"intersectCircle");var D=O;function I(t,e,r,i){{const o=e.y-t.y,n=t.x-e.x,a=e.x*t.y-t.x*e.y,s=o*r.x+n*r.y+a,l=o*i.x+n*i.y+a,h=1e-6;if(0!==s&&0!==l&&P(s,l))return;const c=i.y-r.y,d=r.x-i.x,u=i.x*r.y-r.x*i.y,p=c*t.x+d*t.y+u,g=c*e.x+d*e.y+u;if(Math.abs(p)<h&&Math.abs(g)<h&&P(p,g))return;const f=o*d-c*n;if(0===f)return;const y=Math.abs(f/2);let m=n*u-d*a;const C=m<0?(m-y)/f:(m+y)/f;m=c*a-o*u;return{x:C,y:m<0?(m-y)/f:(m+y)/f}}}function P(t,e){return t*e>0}(0,l.K2)(I,"intersectLine"),(0,l.K2)(P,"sameSign");var q=I;function R(t,e,r){let i=t.x,o=t.y,n=[],a=Number.POSITIVE_INFINITY,s=Number.POSITIVE_INFINITY;"function"==typeof e.forEach?e.forEach(function(t){a=Math.min(a,t.x),s=Math.min(s,t.y)}):(a=Math.min(a,e.x),s=Math.min(s,e.y));let l=i-t.width/2-a,h=o-t.height/2-s;for(let c=0;c<e.length;c++){let i=e[c],o=e[c<e.length-1?c+1:0],a=q(t,r,{x:l+i.x,y:h+i.y},{x:l+o.x,y:h+o.y});a&&n.push(a)}return n.length?(n.length>1&&n.sort(function(t,e){let i=t.x-r.x,o=t.y-r.y,n=Math.sqrt(i*i+o*o),a=e.x-r.x,s=e.y-r.y,l=Math.sqrt(a*a+s*s);return n<l?-1:n===l?0:1}),n[0]):t}(0,l.K2)(R,"intersectPolygon");var z={node:M,circle:D,ellipse:$,polygon:R,rect:x};function K(t,e){const{labelStyles:r}=(0,o.GX)(e);e.labelStyle=r;const i=g(e);let n=i;i||(n="anchor");const s=t.insert("g").attr("class",n).attr("id",e.domId||e.id),{cssStyles:h}=e,d=c.A.svg(s),u=(0,o.Fr)(e,{fill:"black",stroke:"none",fillStyle:"solid"});"handDrawn"!==e.look&&(u.roughness=0);const f=d.circle(0,0,2,u),y=s.insert(()=>f,":first-child");return y.attr("class","anchor").attr("style",(0,a.KL)(h)),p(e,y),e.intersect=function(t){return l.Rm.info("Circle intersect",e,1,t),z.circle(e,1,t)},s}function N(t,e,r,i,o,n,a){const s=(t+r)/2,l=(e+i)/2,h=Math.atan2(i-e,r-t),c=(r-t)/2/o,d=(i-e)/2/n,u=Math.sqrt(c**2+d**2);if(u>1)throw new Error("The given radii are too small to create an arc between the points.");const p=Math.sqrt(1-u**2),g=s+p*n*Math.sin(h)*(a?-1:1),f=l-p*o*Math.cos(h)*(a?-1:1),y=Math.atan2((e-f)/n,(t-g)/o);let m=Math.atan2((i-f)/n,(r-g)/o)-y;a&&m<0&&(m+=2*Math.PI),!a&&m>0&&(m-=2*Math.PI);const C=[];for(let x=0;x<20;x++){const t=y+x/19*m,e=g+o*Math.cos(t),r=f+n*Math.sin(t);C.push({x:e,y:r})}return C}function j(t,e,r){const[i,o]=[e,r].sort((t,e)=>e-t);return o*(1-Math.sqrt(1-(t/i/2)**2))}async function W(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n=e.padding??0,a="neo"===e.look?16:n,s="neo"===e.look?12:n,h=(0,l.K2)(t=>t+s,"calcTotalHeight"),u=(0,l.K2)(t=>{const e=t/2;return[e/(2.5+t/50),e]},"calcEllipseRadius"),{shapeSvg:y,bbox:m}=await d(t,e,g(e)),C=h(e?.height?e?.height:m.height),[x,b]=u(C),k=j(C,x,b),w=(e?.width?e?.width:m.width)+2*a+k-k,T=C,{cssStyles:S}=e,v=[{x:w/2,y:-T/2},{x:-w/2,y:-T/2},...N(-w/2,-T/2,-w/2,T/2,x,b,!1),{x:w/2,y:T/2},...N(w/2,T/2,w/2,-T/2,x,b,!0)],B=c.A.svg(y),_=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(_.roughness=0,_.fillStyle="solid");const A=f(v),L=B.path(A,_),F=y.insert(()=>L,":first-child");return F.attr("class","basic label-container outer-path"),S&&"handDrawn"!==e.look&&F.selectAll("path").attr("style",S),i&&"handDrawn"!==e.look&&F.selectAll("path").attr("style",i),F.attr("transform",`translate(${x/2}, 0)`),p(e,F),e.intersect=function(t){return z.polygon(e,v,t)},y}function H(t,e,r,i){return t.insert("polygon",":first-child").attr("points",i.map(function(t){return t.x+","+t.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+r/2+")")}(0,l.K2)(K,"anchor"),(0,l.K2)(N,"generateArcPoints"),(0,l.K2)(j,"calculateArcSagitta"),(0,l.K2)(W,"bowTieRect"),(0,l.K2)(H,"insertPolygonShape");async function U(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n=e.padding??0,a="neo"===e.look?28:n,s="neo"===e.look?24:n,{shapeSvg:l,bbox:h}=await d(t,e,g(e)),u=(e?.width??h.width)+("neo"===e.look?2*a:a+12),y=(e?.height??h.height)+("neo"===e.look?2*s:s),m=-y,C=[{x:12,y:m},{x:u,y:m},{x:u,y:0},{x:0,y:0},{x:0,y:m+12},{x:12,y:m}];let x;const{cssStyles:b}=e;if("handDrawn"===e.look){const t=c.A.svg(l),r=(0,o.Fr)(e,{}),i=f(C),n=t.path(i,r);x=l.insert(()=>n,":first-child").attr("transform",`translate(${-u/2}, ${y/2})`),b&&x.attr("style",b)}else x=H(l,u,y,C);return i&&x.attr("style",i),p(e,x),e.intersect=function(t){return z.polygon(e,C,t)},l}function Y(t,e){const{nodeStyles:r}=(0,o.GX)(e);e.label="";const i=t.insert("g").attr("class",g(e)).attr("id",e.domId??e.id),{cssStyles:n}=e,a=Math.max(28,e.width??0),s=[{x:0,y:a/2},{x:a/2,y:0},{x:0,y:-a/2},{x:-a/2,y:0}],l=c.A.svg(i),h=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(h.roughness=0,h.fillStyle="solid");const d=f(s),u=l.path(d,h),p=i.insert(()=>u,":first-child");return n&&"handDrawn"!==e.look&&p.selectAll("path").attr("style",n),r&&"handDrawn"!==e.look&&p.selectAll("path").attr("style",r),e.width=28,e.height=28,e.intersect=function(t){return z.polygon(e,s,t)},i}async function G(t,e,r){const{labelStyles:i,nodeStyles:n}=(0,o.GX)(e);e.labelStyle=i;const{shapeSvg:s,bbox:h,halfPadding:u}=await d(t,e,g(e)),f=r?.padding??u,y="neo"===e.look?h.width/2+32:h.width/2+f;let m;const{cssStyles:C}=e;if("handDrawn"===e.look){const t=c.A.svg(s),r=(0,o.Fr)(e,{}),i=t.circle(0,0,2*y,r);m=s.insert(()=>i,":first-child"),m.attr("class","basic label-container").attr("style",(0,a.KL)(C))}else m=s.insert("circle",":first-child").attr("class","basic label-container").attr("style",n).attr("r",y).attr("cx",0).attr("cy",0);return p(e,m),e.calcIntersect=function(t,e){const r=t.width/2;return z.circle(t,r,e)},e.intersect=function(t){return l.Rm.info("Circle intersect",e,y,t),z.circle(e,y,t)},s}function X(t){const e=Math.cos(Math.PI/4),r=Math.sin(Math.PI/4),i=2*t;return`M ${-i/2*e},${i/2*r} L ${i/2*e},${-i/2*r}\n M ${i/2*e},${i/2*r} L ${-i/2*e},${-i/2*r}`}function V(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r,e.label="";const n=t.insert("g").attr("class",g(e)).attr("id",e.domId??e.id),a=Math.max(30,e?.width??0),{cssStyles:s}=e,h=c.A.svg(n),d=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(d.roughness=0,d.fillStyle="solid");const u=h.circle(0,0,2*a,d),f=X(a),y=h.path(f,d),m=n.insert(()=>u,":first-child");return m.insert(()=>y),m.attr("class","outer-path"),s&&"handDrawn"!==e.look&&m.selectAll("path").attr("style",s),i&&"handDrawn"!==e.look&&m.selectAll("path").attr("style",i),p(e,m),e.intersect=function(t){l.Rm.info("crossedCircle intersect",e,{radius:a,point:t});return z.circle(e,a,t)},n}function Z(t,e,r,i=100,o=0,n=180){const a=[],s=o*Math.PI/180,l=(n*Math.PI/180-s)/(i-1);for(let h=0;h<i;h++){const i=s+h*l,o=t+r*Math.cos(i),n=e+r*Math.sin(i);a.push({x:-o,y:-n})}return a}async function Q(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const{shapeSvg:n,bbox:a,label:s}=await d(t,e,g(e)),l="neo"===e.look?18:e.padding??0,h="neo"===e.look?12:e.padding??0,u=a.width+l,y=a.height+h,m=Math.max(5,.1*y),{cssStyles:C}=e,x=[...Z(u/2,-y/2,m,30,-90,0),{x:-u/2-m,y:m},...Z(u/2+2*m,-m,m,20,-180,-270),...Z(u/2+2*m,m,m,20,-90,-180),{x:-u/2-m,y:-y/2},...Z(u/2,y/2,m,20,0,90)],b=[{x:u/2,y:-y/2-m},{x:-u/2,y:-y/2-m},...Z(u/2,-y/2,m,20,-90,0),{x:-u/2-m,y:-m},...Z(u/2+.1*u,-m,m,20,-180,-270),...Z(u/2+.1*u,m,m,20,-90,-180),{x:-u/2-m,y:y/2},...Z(u/2,y/2,m,20,0,90),{x:-u/2,y:y/2+m},{x:u/2,y:y/2+m}],k=c.A.svg(n),w=(0,o.Fr)(e,{fill:"none"});"handDrawn"!==e.look&&(w.roughness=0,w.fillStyle="solid");const T=f(x).replace("Z",""),S=k.path(T,w),v=f(b),B=k.path(v,{...w}),_=n.insert("g",":first-child");return _.insert(()=>B,":first-child").attr("stroke-opacity",0),_.insert(()=>S,":first-child"),_.attr("class","text"),C&&"handDrawn"!==e.look&&_.selectAll("path").attr("style",C),i&&"handDrawn"!==e.look&&_.selectAll("path").attr("style",i),_.attr("transform",`translate(${m}, 0)`),s.attr("transform",`translate(${-u/2+m-(a.x-(a.left??0))},${-y/2+(e.padding??0)/2-(a.y-(a.top??0))})`),p(e,_),e.intersect=function(t){return z.polygon(e,b,t)},n}function J(t,e,r,i=100,o=0,n=180){const a=[],s=o*Math.PI/180,l=(n*Math.PI/180-s)/(i-1);for(let h=0;h<i;h++){const i=s+h*l,o=t+r*Math.cos(i),n=e+r*Math.sin(i);a.push({x:o,y:n})}return a}async function tt(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const{shapeSvg:n,bbox:a,label:s}=await d(t,e,g(e)),l="neo"===e.look?18:e.padding??0,h="neo"===e.look?12:e.padding??0,u=a.width+("neo"===e.look?2*l:l),y=a.height+("neo"===e.look?2*h:h),m=Math.max(5,.1*y),{cssStyles:C}=e,x=[...J(u/2,-y/2,m,20,-90,0),{x:u/2+m,y:-m},...J(u/2+2*m,-m,m,20,-180,-270),...J(u/2+2*m,m,m,20,-90,-180),{x:u/2+m,y:y/2},...J(u/2,y/2,m,20,0,90)],b=[{x:-u/2,y:-y/2-m},{x:u/2,y:-y/2-m},...J(u/2,-y/2,m,20,-90,0),{x:u/2+m,y:-m},...J(u/2+2*m,-m,m,20,-180,-270),...J(u/2+2*m,m,m,20,-90,-180),{x:u/2+m,y:y/2},...J(u/2,y/2,m,20,0,90),{x:u/2,y:y/2+m},{x:-u/2,y:y/2+m}],k=c.A.svg(n),w=(0,o.Fr)(e,{fill:"none"});"handDrawn"!==e.look&&(w.roughness=0,w.fillStyle="solid");const T=f(x).replace("Z",""),S=k.path(T,w),v=f(b),B=k.path(v,{...w}),_=n.insert("g",":first-child");return _.insert(()=>B,":first-child").attr("stroke-opacity",0),_.insert(()=>S,":first-child"),_.attr("class","text"),C&&"handDrawn"!==e.look&&_.selectAll("path").attr("style",C),i&&"handDrawn"!==e.look&&_.selectAll("path").attr("style",i),_.attr("transform",`translate(${-m}, 0)`),s.attr("transform",`translate(${-u/2+(e.padding??0)/2-(a.x-(a.left??0))},${-y/2+(e.padding??0)/2-(a.y-(a.top??0))})`),p(e,_),e.intersect=function(t){return z.polygon(e,b,t)},n}function et(t,e,r,i=100,o=0,n=180){const a=[],s=o*Math.PI/180,l=(n*Math.PI/180-s)/(i-1);for(let h=0;h<i;h++){const i=s+h*l,o=t+r*Math.cos(i),n=e+r*Math.sin(i);a.push({x:-o,y:-n})}return a}async function rt(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const{shapeSvg:n,bbox:a,label:s}=await d(t,e,g(e)),l="neo"===e.look?18:e.padding??0,h="neo"===e.look?12:e.padding??0,u=a.width+("neo"===e.look?2*l:l),y=a.height+("neo"===e.look?2*h:h),m=Math.max(5,.1*y),{cssStyles:C}=e,x=[...et(u/2,-y/2,m,30,-90,0),{x:-u/2-m,y:m},...et(u/2+2*m,-m,m,20,-180,-270),...et(u/2+2*m,m,m,20,-90,-180),{x:-u/2-m,y:-y/2},...et(u/2,y/2,m,20,0,90)],b=[...et(-u/2+m+m/2,-y/2,m,20,-90,-180),{x:u/2-m/2,y:m},...et(-u/2-m/2,-m,m,20,0,90),...et(-u/2-m/2,m,m,20,-90,0),{x:u/2-m/2,y:-m},...et(-u/2+m+m/2,y/2,m,30,-180,-270)],k=[{x:u/2,y:-y/2-m},{x:-u/2,y:-y/2-m},...et(u/2,-y/2,m,20,-90,0),{x:-u/2-m,y:-m},...et(u/2+2*m,-m,m,20,-180,-270),...et(u/2+2*m,m,m,20,-90,-180),{x:-u/2-m,y:y/2},...et(u/2,y/2,m,20,0,90),{x:-u/2,y:y/2+m},{x:u/2-m-m/2,y:y/2+m},...et(-u/2+m+m/2,-y/2,m,20,-90,-180),{x:u/2-m/2,y:m},...et(-u/2-m/2,-m,m,20,0,90),...et(-u/2-m/2,m,m,20,-90,0),{x:u/2-m/2,y:-m},...et(-u/2+m+m/2,y/2,m,30,-180,-270)],w=c.A.svg(n),T=(0,o.Fr)(e,{fill:"none"});"handDrawn"!==e.look&&(T.roughness=0,T.fillStyle="solid");const S=f(x).replace("Z",""),v=w.path(S,T),B=f(b).replace("Z",""),_=w.path(B,T),A=f(k),L=w.path(A,{...T}),F=n.insert("g",":first-child");return F.insert(()=>L,":first-child").attr("stroke-opacity",0),F.insert(()=>v,":first-child"),F.insert(()=>_,":first-child"),F.attr("class","text"),C&&"handDrawn"!==e.look&&F.selectAll("path").attr("style",C),i&&"handDrawn"!==e.look&&F.selectAll("path").attr("style",i),F.attr("transform",`translate(${m-m/4}, 0)`),s.attr("transform",`translate(${-u/2+(e.padding??0)/2-(a.x-(a.left??0))},${-y/2+(e.padding??0)/2-(a.y-(a.top??0))})`),p(e,F),e.intersect=function(t){return z.polygon(e,k,t)},n}async function it(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n=e.padding??0,a="neo"===e.look?16:n,s="neo"===e.look?12:n,{shapeSvg:l,bbox:h}=await d(t,e,g(e)),u=Math.max(20,1.25*(h.width+2*a),e?.width??0),y=Math.max(5,h.height+2*s,e?.height??0),C=y/2,{cssStyles:x}=e,b=c.A.svg(l),k=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(k.roughness=0,k.fillStyle="solid");const w=u-C,T=y/4,S=[{x:w,y:0},{x:T,y:0},{x:0,y:y/2},{x:T,y:y},{x:w,y:y},...m(-w,-y/2,C,50,270,90)],v=f(S),B=b.path(v,k),_=l.insert(()=>B,":first-child");return _.attr("class","basic label-container outer-path"),x&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",x),i&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",i),_.attr("transform",`translate(${-u/2}, ${-y/2})`),p(e,_),e.intersect=function(t){return z.polygon(e,S,t)},l}(0,l.K2)(U,"card"),(0,l.K2)(Y,"choice"),(0,l.K2)(G,"circle"),(0,l.K2)(X,"createLine"),(0,l.K2)(V,"crossedCircle"),(0,l.K2)(Z,"generateCirclePoints"),(0,l.K2)(Q,"curlyBraceLeft"),(0,l.K2)(J,"generateCirclePoints"),(0,l.K2)(tt,"curlyBraceRight"),(0,l.K2)(et,"generateCirclePoints"),(0,l.K2)(rt,"curlyBraces"),(0,l.K2)(it,"curvedTrapezoid");var ot=(0,l.K2)((t,e,r,i,o,n)=>[`M${t},${e+n}`,`a${o},${n} 0,0,0 ${r},0`,`a${o},${n} 0,0,0 ${-r},0`,`l0,${i}`,`a${o},${n} 0,0,0 ${r},0`,"l0,"+-i].join(" "),"createCylinderPathD"),nt=(0,l.K2)((t,e,r,i,o,n)=>[`M${t},${e+n}`,`M${t+r},${e+n}`,`a${o},${n} 0,0,0 ${-r},0`,`l0,${i}`,`a${o},${n} 0,0,0 ${r},0`,"l0,"+-i].join(" "),"createOuterCylinderPathD"),at=(0,l.K2)((t,e,r,i,o,n)=>[`M${t-r/2},${-i/2}`,`a${o},${n} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD");async function st(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n=e.padding??0,s="neo"===e.look?24:n,l="neo"===e.look?24:n;if(e.width||e.height){const t=e.width??0;e.width=(e.width??0)-l,e.width<8&&(e.width=8);const r=t/2/(2.5+t/50);e.height=(e.height??0)-s-3*r,e.height<8&&(e.height=8)}const{shapeSvg:h,bbox:u,label:f}=await d(t,e,g(e)),y=(e.width?e.width:u.width)+l,m=y/2,C=m/(2.5+y/50),x=(e.height?e.height:u.height)+s+C;let b;const{cssStyles:k}=e;if("handDrawn"===e.look){const t=c.A.svg(h),r=nt(0,0,y,x,m,C),i=at(0,C,y,x,m,C),n=(0,o.Fr)(e,{}),a=t.path(r,n),s=t.path(i,(0,o.Fr)(e,{fill:"none"}));b=h.insert(()=>s,":first-child"),b=h.insert(()=>a,":first-child"),b.attr("class","basic label-container"),k&&b.attr("style",k)}else{const t=ot(0,0,y,x,m,C);b=h.insert("path",":first-child").attr("d",t).attr("class","basic label-container outer-path").attr("style",(0,a.KL)(k)).attr("style",i)}return b.attr("label-offset-y",C),b.attr("transform",`translate(${-y/2}, ${-(x/2+C)})`),p(e,b),f.attr("transform",`translate(${-u.width/2-(u.x-(u.left??0))}, ${-u.height/2+(e.padding??0)/1.5-(u.y-(u.top??0))})`),e.intersect=function(t){const r=z.rect(e,t),i=r.x-(e.x??0);if(0!=m&&(Math.abs(i)<(e.width??0)/2||Math.abs(i)==(e.width??0)/2&&Math.abs(r.y-(e.y??0))>(e.height??0)/2-C)){let o=C*C*(1-i*i/(m*m));o>0&&(o=Math.sqrt(o)),o=C-o,t.y-(e.y??0)>0&&(o=-o),r.y+=o}return r},h}async function lt(t,e,r){const{labelStyles:i,nodeStyles:n}=(0,o.GX)(e);e.labelStyle=i;const{shapeSvg:s,bbox:l}=await d(t,e,g(e)),h=Math.max(l.width+2*r.labelPaddingX,e?.width||0),u=Math.max(l.height+2*r.labelPaddingY,e?.height||0),f=-h/2,y=-u/2;let m,{rx:C,ry:x}=e;const{cssStyles:b}=e;if(r?.rx&&r.ry&&(C=r.rx,x=r.ry),"handDrawn"===e.look){const t=c.A.svg(s),r=(0,o.Fr)(e,{}),i=C||x?t.path(k(f,y,h,u,C||0),r):t.rectangle(f,y,h,u,r);m=s.insert(()=>i,":first-child"),m.attr("class","basic label-container").attr("style",(0,a.KL)(b))}else m=s.insert("rect",":first-child"),m.attr("class","basic label-container").attr("style",n).attr("rx",(0,a.KL)(C)).attr("ry",(0,a.KL)(x)).attr("x",f).attr("y",y).attr("width",h).attr("height",u);return p(e,m),e.calcIntersect=function(t,e){return z.rect(t,e)},e.intersect=function(t){return z.rect(e,t)},s}async function ht(t,e){const{cssClasses:r,labelPaddingX:i,labelPaddingY:n,padding:a,width:s,height:l}=e,h={rx:0,ry:0,classes:r??"",labelPaddingX:i??2*(a??0),labelPaddingY:n??a??0},d=await lt(t,e,h);if("handDrawn"===e.look){const t=c.A.svg(d),r=(0,o.Fr)(e,{}),i=d.select(".basic.label-container > path:nth-child(2)"),n=i.node();if(!n)return d;let a=null;return n instanceof SVGGraphicsElement?(a=n.getBBox(),d.insert(()=>t.line(a.x,a.y,a.x+a.width,a.y,r),".basic.label-container g.label"),d.insert(()=>t.line(a.x,a.y+a.height,a.x+a.width,a.y+a.height,r),".basic.label-container g.label"),i.remove(),d):d}const u=d.select(".basic.label-container"),p=(Number(u.attr("width"))||s)??0,g=(Number(u.attr("height"))||l)??0;return p>0&&g>0&&u.attr("stroke-dasharray",`${p} ${g}`),d}async function ct(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n="neo"===e.look?16:e.padding??0,a="neo"===e.look?16:e.padding??0,{shapeSvg:s,bbox:l,label:h}=await d(t,e,g(e)),u=l.width+n,f=l.height+a,y=.2*f,m=-u/2,C=-f/2-y/2,{cssStyles:x}=e,b=c.A.svg(s),k=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(k.roughness=0,k.fillStyle="solid");const w=[{x:m,y:C+y},{x:-m,y:C+y},{x:-m,y:-C},{x:m,y:-C},{x:m,y:C},{x:-m,y:C},{x:-m,y:C+y}],T=b.polygon(w.map(t=>[t.x,t.y]),k),S=s.insert(()=>T,":first-child");return S.attr("class","basic label-container outer-path"),x&&"handDrawn"!==e.look&&S.selectAll("path").attr("style",x),i&&"handDrawn"!==e.look&&S.selectAll("path").attr("style",i),h.attr("transform",`translate(${m+(e.padding??0)/2-(l.x-(l.left??0))}, ${C+y+(e.padding??0)/2-(l.y-(l.top??0))})`),p(e,S),e.intersect=function(t){return z.rect(e,t)},s}async function dt(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e),n="neo"===e.look?12:5;e.labelStyle=r;const s=e.padding??0,h="neo"===e.look?16:s,{shapeSvg:u,bbox:f}=await d(t,e,g(e)),y=(e?.width?e?.width/2:f.width/2)+(h??0),m=y-n;let C;const{cssStyles:x}=e;if("handDrawn"===e.look){const t=c.A.svg(u),r=(0,o.Fr)(e,{roughness:.2,strokeWidth:2.5}),i=(0,o.Fr)(e,{roughness:.2,strokeWidth:1.5}),n=t.circle(0,0,2*y,r),s=t.circle(0,0,2*m,i);C=u.insert("g",":first-child"),C.attr("class",(0,a.KL)(e.cssClasses)).attr("style",(0,a.KL)(x)),C.node()?.appendChild(n),C.node()?.appendChild(s)}else{C=u.insert("g",":first-child");const t=C.insert("circle",":first-child"),e=C.insert("circle");C.attr("class","basic label-container").attr("style",i),t.attr("class","outer-circle").attr("style",i).attr("r",y).attr("cx",0).attr("cy",0),e.attr("class","inner-circle").attr("style",i).attr("r",m).attr("cx",0).attr("cy",0)}return p(e,C),e.intersect=function(t){return l.Rm.info("DoubleCircle intersect",e,y,t),z.circle(e,y,t)},u}function ut(t,e,{config:{themeVariables:r}}){const{labelStyles:i,nodeStyles:n}=(0,o.GX)(e);e.label="",e.labelStyle=i;const a=t.insert("g").attr("class",g(e)).attr("id",e.domId??e.id),{cssStyles:s}=e,h=c.A.svg(a),{nodeBorder:d}=r,u=(0,o.Fr)(e,{fillStyle:"solid"});"handDrawn"!==e.look&&(u.roughness=0);const f=h.circle(0,0,14,u),y=a.insert(()=>f,":first-child");return y.selectAll("path").attr("style",`fill: ${d} !important;`),s&&s.length>0&&"handDrawn"!==e.look&&y.selectAll("path").attr("style",s),n&&"handDrawn"!==e.look&&y.selectAll("path").attr("style",n),p(e,y),e.intersect=function(t){l.Rm.info("filledCircle intersect",e,{radius:7,point:t});return z.circle(e,7,t)},a}(0,l.K2)(st,"cylinder"),(0,l.K2)(lt,"drawRect"),(0,l.K2)(ht,"datastore"),(0,l.K2)(ct,"dividedRectangle"),(0,l.K2)(dt,"doublecircle"),(0,l.K2)(ut,"filledCircle");async function pt(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n=e.padding??0,a="neo"===e.look?2*n:n;(e.width||e.height)&&(e.height=e?.height??0,e.height<10&&(e.height=10),e.width=(e?.width??0)-a-a/2,e.width<10&&(e.width=10));const{shapeSvg:s,bbox:h,label:u}=await d(t,e,g(e)),y=(e?.width?e?.width:h.width)+(a??0),m=e?.height?e?.height:y+h.height,C=[{x:0,y:-m},{x:m,y:-m},{x:m/2,y:0}],{cssStyles:x}=e,b=c.A.svg(s),k=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(k.roughness=0,k.fillStyle="solid");const w=f(C),T=b.path(w,k),S=s.insert(()=>T,":first-child").attr("transform",`translate(${-m/2}, ${m/2})`).attr("class","outer-path");return x&&"handDrawn"!==e.look&&S.selectChildren("path").attr("style",x),i&&"handDrawn"!==e.look&&S.selectChildren("path").attr("style",i),e.width=y,e.height=m,p(e,S),u.attr("transform",`translate(${-h.width/2-(h.x-(h.left??0))}, ${-m/2+(e.padding??0)/2+(h.y-(h.top??0))})`),e.intersect=function(t){return l.Rm.info("Triangle intersect",e,C,t),z.polygon(e,C,t)},s}function gt(t,e,{dir:r,config:{state:i,themeVariables:n}}){const{nodeStyles:a}=(0,o.GX)(e);e.label="";const s=t.insert("g").attr("class",g(e)).attr("id",e.domId??e.id),{cssStyles:l}=e;let h=Math.max(70,e?.width??0),d=Math.max(10,e?.height??0);"LR"===r&&(h=Math.max(10,e?.width??0),d=Math.max(70,e?.height??0));const u=-1*h/2,f=-1*d/2,y=c.A.svg(s),m=(0,o.Fr)(e,{stroke:n.lineColor,fill:n.lineColor});"handDrawn"!==e.look&&(m.roughness=0,m.fillStyle="solid");const C=y.rectangle(u,f,h,d,m),x=s.insert(()=>C,":first-child");l&&"handDrawn"!==e.look&&x.selectAll("path").attr("style",l),a&&"handDrawn"!==e.look&&x.selectAll("path").attr("style",a),p(e,x);const b=i?.padding??0;return e.width&&e.height&&(e.width+=b/2||0,e.height+=b/2||0),e.intersect=function(t){return z.rect(e,t)},s}async function ft(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n="neo"===e.look?16:e.padding??0,a="neo"===e.look?12:e.padding??0;(e.width||e.height)&&(e.height=(e?.height??0)-2*a,e.height<10&&(e.height=10),e.width=(e?.width??0)-2*n,e.width<15&&(e.width=15));const{shapeSvg:s,bbox:h}=await d(t,e,g(e)),u=(e?.width?e?.width:Math.max(15,h.width))+2*n,y=(e?.height?e?.height:Math.max(10,h.height))+2*a,C=y/2,{cssStyles:x}=e,b=c.A.svg(s),k=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(k.roughness=0,k.fillStyle="solid");const w=[{x:-u/2,y:-y/2},{x:u/2-C,y:-y/2},...m(-u/2+C,0,C,50,90,270),{x:u/2-C,y:y/2},{x:-u/2,y:y/2}],T=f(w),S=b.path(T,k),v=s.insert(()=>S,":first-child");return v.attr("class","basic label-container outer-path"),x&&"handDrawn"!==e.look&&v.selectChildren("path").attr("style",x),i&&"handDrawn"!==e.look&&v.selectChildren("path").attr("style",i),p(e,v),e.intersect=function(t){l.Rm.info("Pill intersect",e,{radius:C,point:t});return z.polygon(e,w,t)},s}(0,l.K2)(pt,"flippedTriangle"),(0,l.K2)(gt,"forkJoin"),(0,l.K2)(ft,"halfRoundedRectangle");var yt=(0,l.K2)((t,e,r,i,o)=>[`M${t+o},${e}`,`L${t+r-o},${e}`,`L${t+r},${e-i/2}`,`L${t+r-o},${e-i}`,`L${t+o},${e-i}`,`L${t},${e-i/2}`,"Z"].join(" "),"createHexagonPathD");async function mt(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e),n="neo"===e.look?3.5:4;e.labelStyle=r;const a=e.padding??0,s="neo"===e.look?70:a,l="neo"===e.look?32:a;if(e.width||e.height){const t=(e.height??0)/n;e.width=(e?.width??0)-2*t-l,e.height=(e.height??0)-s}const{shapeSvg:h,bbox:u}=await d(t,e,g(e)),f=(e?.height?e?.height:u.height)+s,y=f/n,m=(e?.width?e?.width:u.width)+2*y+l,C=[{x:y,y:0},{x:m-y,y:0},{x:m,y:-f/2},{x:m-y,y:-f},{x:y,y:-f},{x:0,y:-f/2}];let x;const{cssStyles:b}=e;if("handDrawn"===e.look){const t=c.A.svg(h),r=(0,o.Fr)(e,{}),i=yt(0,0,m,f,y),n=t.path(i,r);x=h.insert(()=>n,":first-child").attr("transform",`translate(${-m/2}, ${f/2})`),b&&x.attr("style",b)}else x=H(h,m,f,C);return i&&x.attr("style",i),e.width=m,e.height=f,p(e,x),e.intersect=function(t){return z.polygon(e,C,t)},h}async function Ct(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.label="",e.labelStyle=r;const{shapeSvg:n}=await d(t,e,g(e)),a=Math.max(30,e?.width??0),s=Math.max(30,e?.height??0),{cssStyles:h}=e,u=c.A.svg(n),y=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(y.roughness=0,y.fillStyle="solid");const m=[{x:0,y:0},{x:a,y:0},{x:0,y:s},{x:a,y:s}],C=f(m),x=u.path(C,y),b=n.insert(()=>x,":first-child");return b.attr("class","basic label-container outer-path"),h&&"handDrawn"!==e.look&&b.selectChildren("path").attr("style",h),i&&"handDrawn"!==e.look&&b.selectChildren("path").attr("style",i),b.attr("transform",`translate(${-a/2}, ${-s/2})`),p(e,b),e.intersect=function(t){l.Rm.info("Pill intersect",e,{points:m});return z.polygon(e,m,t)},n}async function xt(t,e,{config:{themeVariables:r,flowchart:i}}){const{labelStyles:a}=(0,o.GX)(e);e.labelStyle=a;const s=e.assetHeight??48,h=e.assetWidth??48,u=Math.max(s,h),g=i?.wrappingWidth;e.width=Math.max(u,g??0);const{shapeSvg:f,bbox:y,label:m}=await d(t,e,"icon-shape default"),C="t"===e.pos,x=u,b=u,{nodeBorder:k}=r,{stylesMap:w}=(0,o.WW)(e),T=-b/2,S=-x/2,v=e.label?8:0,B=c.A.svg(f),_=(0,o.Fr)(e,{stroke:"none",fill:"none"});"handDrawn"!==e.look&&(_.roughness=0,_.fillStyle="solid");const A=B.rectangle(T,S,b,x,_),L=Math.max(b,y.width),F=x+y.height+v,M=B.rectangle(-L/2,-F/2,L,F,{..._,fill:"transparent",stroke:"none"}),E=f.insert(()=>A,":first-child"),$=f.insert(()=>M);if(e.icon){const t=f.append("g");t.html(`<g>${await(0,n.WY)(e.icon,{height:u,width:u,fallbackPrefix:""})}</g>`);const r=t.node().getBBox(),i=r.width,o=r.height,a=r.x,s=r.y;t.attr("transform",`translate(${-i/2-a},${C?y.height/2+v/2-o/2-s:-y.height/2-v/2-o/2-s})`),t.attr("style",`color: ${w.get("stroke")??k};`)}return m.attr("transform",`translate(${-y.width/2-(y.x-(y.left??0))},${C?-F/2:F/2-y.height})`),E.attr("transform",`translate(0,${C?y.height/2+v/2:-y.height/2-v/2})`),p(e,$),e.intersect=function(t){if(l.Rm.info("iconSquare intersect",e,t),!e.label)return z.rect(e,t);const r=e.x??0,i=e.y??0,o=e.height??0;let n=[];n=C?[{x:r-y.width/2,y:i-o/2},{x:r+y.width/2,y:i-o/2},{x:r+y.width/2,y:i-o/2+y.height+v},{x:r+b/2,y:i-o/2+y.height+v},{x:r+b/2,y:i+o/2},{x:r-b/2,y:i+o/2},{x:r-b/2,y:i-o/2+y.height+v},{x:r-y.width/2,y:i-o/2+y.height+v}]:[{x:r-b/2,y:i-o/2},{x:r+b/2,y:i-o/2},{x:r+b/2,y:i-o/2+x},{x:r+y.width/2,y:i-o/2+x},{x:r+y.width/2/2,y:i+o/2},{x:r-y.width/2,y:i+o/2},{x:r-y.width/2,y:i-o/2+x},{x:r-b/2,y:i-o/2+x}];return z.polygon(e,n,t)},f}async function bt(t,e,{config:{themeVariables:r,flowchart:i}}){const{labelStyles:a}=(0,o.GX)(e);e.labelStyle=a;const s=e.assetHeight??48,h=e.assetWidth??48,u=Math.max(s,h),g=i?.wrappingWidth;e.width=Math.max(u,g??0);const{shapeSvg:f,bbox:y,label:m}=await d(t,e,"icon-shape default"),C=e.label?8:0,x="t"===e.pos,{nodeBorder:b,mainBkg:k}=r,{stylesMap:w}=(0,o.WW)(e),T=c.A.svg(f),S=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(S.roughness=0,S.fillStyle="solid");const v=w.get("fill");S.stroke=v??k;const B=f.append("g");e.icon&&B.html(`<g>${await(0,n.WY)(e.icon,{height:u,width:u,fallbackPrefix:""})}</g>`);const _=B.node().getBBox(),A=_.width,L=_.height,F=_.x,M=_.y,E=Math.max(A,L)*Math.SQRT2+40,$=T.circle(0,0,E,S),O=Math.max(E,y.width),D=E+y.height+C,I=T.rectangle(-O/2,-D/2,O,D,{...S,fill:"transparent",stroke:"none"}),P=f.insert(()=>$,":first-child"),q=f.insert(()=>I);return B.attr("transform",`translate(${-A/2-F},${x?y.height/2+C/2-L/2-M:-y.height/2-C/2-L/2-M})`),B.attr("style",`color: ${w.get("stroke")??b};`),m.attr("transform",`translate(${-y.width/2-(y.x-(y.left??0))},${x?-D/2:D/2-y.height})`),P.attr("transform",`translate(0,${x?y.height/2+C/2:-y.height/2-C/2})`),p(e,q),e.intersect=function(t){l.Rm.info("iconSquare intersect",e,t);return z.rect(e,t)},f}async function kt(t,e,{config:{themeVariables:r,flowchart:i}}){const{labelStyles:a}=(0,o.GX)(e);e.labelStyle=a;const s=e.assetHeight??48,h=e.assetWidth??48,u=Math.max(s,h),g=i?.wrappingWidth;e.width=Math.max(u,g??0);const{shapeSvg:f,bbox:y,halfPadding:m,label:C}=await d(t,e,"icon-shape default"),x="t"===e.pos,b=u+2*m,w=u+2*m,{nodeBorder:T,mainBkg:S}=r,{stylesMap:v}=(0,o.WW)(e),B=-w/2,_=-b/2,A=e.label?8:0,L=c.A.svg(f),F=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(F.roughness=0,F.fillStyle="solid");const M=v.get("fill");F.stroke=M??S;const E=L.path(k(B,_,w,b,5),F),$=Math.max(w,y.width),O=b+y.height+A,D=L.rectangle(-$/2,-O/2,$,O,{...F,fill:"transparent",stroke:"none"}),I=f.insert(()=>E,":first-child").attr("class","icon-shape2"),P=f.insert(()=>D);if(e.icon){const t=f.append("g");t.html(`<g>${await(0,n.WY)(e.icon,{height:u,width:u,fallbackPrefix:""})}</g>`);const r=t.node().getBBox(),i=r.width,o=r.height,a=r.x,s=r.y;t.attr("transform",`translate(${-i/2-a},${x?y.height/2+A/2-o/2-s:-y.height/2-A/2-o/2-s})`),t.attr("style",`color: ${v.get("stroke")??T};`)}return C.attr("transform",`translate(${-y.width/2-(y.x-(y.left??0))},${x?-O/2:O/2-y.height})`),I.attr("transform",`translate(0,${x?y.height/2+A/2:-y.height/2-A/2})`),p(e,P),e.intersect=function(t){if(l.Rm.info("iconSquare intersect",e,t),!e.label)return z.rect(e,t);const r=e.x??0,i=e.y??0,o=e.height??0;let n=[];n=x?[{x:r-y.width/2,y:i-o/2},{x:r+y.width/2,y:i-o/2},{x:r+y.width/2,y:i-o/2+y.height+A},{x:r+w/2,y:i-o/2+y.height+A},{x:r+w/2,y:i+o/2},{x:r-w/2,y:i+o/2},{x:r-w/2,y:i-o/2+y.height+A},{x:r-y.width/2,y:i-o/2+y.height+A}]:[{x:r-w/2,y:i-o/2},{x:r+w/2,y:i-o/2},{x:r+w/2,y:i-o/2+b},{x:r+y.width/2,y:i-o/2+b},{x:r+y.width/2/2,y:i+o/2},{x:r-y.width/2,y:i+o/2},{x:r-y.width/2,y:i-o/2+b},{x:r-w/2,y:i-o/2+b}];return z.polygon(e,n,t)},f}async function wt(t,e,{config:{themeVariables:r,flowchart:i}}){const{labelStyles:a}=(0,o.GX)(e);e.labelStyle=a;const s=e.assetHeight??48,h=e.assetWidth??48,u=Math.max(s,h),g=i?.wrappingWidth;e.width=Math.max(u,g??0);const{shapeSvg:f,bbox:y,halfPadding:m,label:C}=await d(t,e,"icon-shape default"),x="t"===e.pos,b=u+2*m,w=u+2*m,{nodeBorder:T,mainBkg:S}=r,{stylesMap:v}=(0,o.WW)(e),B=-w/2,_=-b/2,A=e.label?8:0,L=c.A.svg(f),F=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(F.roughness=0,F.fillStyle="solid");const M=v.get("fill");F.stroke=M??S;const E=L.path(k(B,_,w,b,.1),F),$=Math.max(w,y.width),O=b+y.height+A,D=L.rectangle(-$/2,-O/2,$,O,{...F,fill:"transparent",stroke:"none"}),I=f.insert(()=>E,":first-child"),P=f.insert(()=>D);if(e.icon){const t=f.append("g");t.html(`<g>${await(0,n.WY)(e.icon,{height:u,width:u,fallbackPrefix:""})}</g>`);const r=t.node().getBBox(),i=r.width,o=r.height,a=r.x,s=r.y;t.attr("transform",`translate(${-i/2-a},${x?y.height/2+A/2-o/2-s:-y.height/2-A/2-o/2-s})`),t.attr("style",`color: ${v.get("stroke")??T};`)}return C.attr("transform",`translate(${-y.width/2-(y.x-(y.left??0))},${x?-O/2:O/2-y.height})`),I.attr("transform",`translate(0,${x?y.height/2+A/2:-y.height/2-A/2})`),p(e,P),e.intersect=function(t){if(l.Rm.info("iconSquare intersect",e,t),!e.label)return z.rect(e,t);const r=e.x??0,i=e.y??0,o=e.height??0;let n=[];n=x?[{x:r-y.width/2,y:i-o/2},{x:r+y.width/2,y:i-o/2},{x:r+y.width/2,y:i-o/2+y.height+A},{x:r+w/2,y:i-o/2+y.height+A},{x:r+w/2,y:i+o/2},{x:r-w/2,y:i+o/2},{x:r-w/2,y:i-o/2+y.height+A},{x:r-y.width/2,y:i-o/2+y.height+A}]:[{x:r-w/2,y:i-o/2},{x:r+w/2,y:i-o/2},{x:r+w/2,y:i-o/2+b},{x:r+y.width/2,y:i-o/2+b},{x:r+y.width/2/2,y:i+o/2},{x:r-y.width/2,y:i+o/2},{x:r-y.width/2,y:i-o/2+b},{x:r-w/2,y:i-o/2+b}];return z.polygon(e,n,t)},f}async function Tt(t,e,{config:{flowchart:r}}){const i=new Image;i.src=e?.img??"",await i.decode();const n=Number(i.naturalWidth.toString().replace("px","")),a=Number(i.naturalHeight.toString().replace("px",""));e.imageAspectRatio=n/a;const{labelStyles:s}=(0,o.GX)(e);e.labelStyle=s;const h=r?.wrappingWidth;e.defaultWidth=r?.wrappingWidth;const u=Math.max(e.label?h??0:0,e?.assetWidth??n),g="on"===e.constraint&&e?.assetHeight?e.assetHeight*e.imageAspectRatio:u,f="on"===e.constraint?g/e.imageAspectRatio:e?.assetHeight??a;e.width=Math.max(g,h??0);const{shapeSvg:y,bbox:m,label:C}=await d(t,e,"image-shape default"),x="t"===e.pos,b=-g/2,k=-f/2,w=e.label?8:0,T=c.A.svg(y),S=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(S.roughness=0,S.fillStyle="solid");const v=T.rectangle(b,k,g,f,S),B=Math.max(g,m.width),_=f+m.height+w,A=T.rectangle(-B/2,-_/2,B,_,{...S,fill:"none",stroke:"none"}),L=y.insert(()=>v,":first-child"),F=y.insert(()=>A);if(e.img){const t=y.append("image");t.attr("href",e.img),t.attr("width",g),t.attr("height",f),t.attr("preserveAspectRatio","none"),t.attr("transform",`translate(${-g/2},${x?_/2-f:-_/2})`)}return C.attr("transform",`translate(${-m.width/2-(m.x-(m.left??0))},${x?-f/2-m.height/2-w/2:f/2-m.height/2+w/2})`),L.attr("transform",`translate(0,${x?m.height/2+w/2:-m.height/2-w/2})`),p(e,F),e.intersect=function(t){if(l.Rm.info("iconSquare intersect",e,t),!e.label)return z.rect(e,t);const r=e.x??0,i=e.y??0,o=e.height??0;let n=[];n=x?[{x:r-m.width/2,y:i-o/2},{x:r+m.width/2,y:i-o/2},{x:r+m.width/2,y:i-o/2+m.height+w},{x:r+g/2,y:i-o/2+m.height+w},{x:r+g/2,y:i+o/2},{x:r-g/2,y:i+o/2},{x:r-g/2,y:i-o/2+m.height+w},{x:r-m.width/2,y:i-o/2+m.height+w}]:[{x:r-g/2,y:i-o/2},{x:r+g/2,y:i-o/2},{x:r+g/2,y:i-o/2+f},{x:r+m.width/2,y:i-o/2+f},{x:r+m.width/2/2,y:i+o/2},{x:r-m.width/2,y:i+o/2},{x:r-m.width/2,y:i-o/2+f},{x:r-g/2,y:i-o/2+f}];return z.polygon(e,n,t)},y}async function St(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n=e.padding??0,a=n,s="neo"===e.look?2*n:n,{shapeSvg:l,bbox:h}=await d(t,e,g(e)),u=Math.max(h.width+2*(s??0),e?.width??0),y=Math.max(h.height+2*(a??0),e?.height??0),m=[{x:0,y:0},{x:u,y:0},{x:u+3*y/6,y:-y},{x:-3*y/6,y:-y}];let C;const{cssStyles:x}=e;if("handDrawn"===e.look){const t=c.A.svg(l),r=(0,o.Fr)(e,{}),i=f(m),n=t.path(i,r);C=l.insert(()=>n,":first-child").attr("transform",`translate(${-u/2}, ${y/2})`),x&&C.attr("style",x)}else C=H(l,u,y,m);return i&&C.attr("style",i),e.width=u,e.height=y,p(e,C),e.intersect=function(t){return z.polygon(e,m,t)},l}async function vt(t,e){const{shapeSvg:r,bbox:i,label:o}=await d(t,e,"label"),n=r.insert("rect",":first-child");return n.attr("width",.1).attr("height",.1),r.attr("class","label edgeLabel"),o.attr("transform",`translate(${-i.width/2-(i.x-(i.left??0))}, ${-i.height/2-(i.y-(i.top??0))})`),p(e,n),e.intersect=function(t){return z.rect(e,t)},r}async function Bt(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n=e.padding??0,a=n,s="neo"===e.look?2*n:n,{shapeSvg:l,bbox:h}=await d(t,e,g(e)),u=(e?.height??h.height)+a,y=(e?.width??h.width)+s,m=[{x:0,y:0},{x:y+3*u/6,y:0},{x:y,y:-u},{x:-3*u/6,y:-u}];let C;const{cssStyles:x}=e;if("handDrawn"===e.look){const t=c.A.svg(l),r=(0,o.Fr)(e,{}),i=f(m),n=t.path(i,r);C=l.insert(()=>n,":first-child").attr("transform",`translate(${-y/2}, ${u/2})`),x&&C.attr("style",x)}else C=H(l,y,u,m);return i&&C.attr("style",i),e.width=y,e.height=u,p(e,C),e.intersect=function(t){return z.polygon(e,m,t)},l}async function _t(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n=e.padding??0,a=n,s="neo"===e.look?2*n:n,{shapeSvg:l,bbox:h}=await d(t,e,g(e)),u=(e?.height??h.height)+a,y=(e?.width??h.width)+s,m=[{x:-3*u/6,y:0},{x:y,y:0},{x:y+3*u/6,y:-u},{x:0,y:-u}];let C;const{cssStyles:x}=e;if("handDrawn"===e.look){const t=c.A.svg(l),r=(0,o.Fr)(e,{}),i=f(m),n=t.path(i,r);C=l.insert(()=>n,":first-child").attr("transform",`translate(${-y/2}, ${u/2})`),x&&C.attr("style",x)}else C=H(l,y,u,m);return i&&C.attr("style",i),e.width=y,e.height=u,p(e,C),e.intersect=function(t){return z.polygon(e,m,t)},l}function At(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.label="",e.labelStyle=r;const n=t.insert("g").attr("class",g(e)).attr("id",e.domId??e.id),{cssStyles:a}=e,s=Math.max(35,e?.width??0),h=Math.max(35,e?.height??0),d=[{x:s,y:0},{x:0,y:h+3.5},{x:s-14,y:h+3.5},{x:0,y:2*h},{x:s,y:h-3.5},{x:14,y:h-3.5}],u=c.A.svg(n),y=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(y.roughness=0,y.fillStyle="solid");const m=f(d),C=u.path(m,y),x=n.insert(()=>C,":first-child");return x.attr("class","outer-path"),a&&"handDrawn"!==e.look&&x.selectAll("path").attr("style",a),i&&"handDrawn"!==e.look&&x.selectAll("path").attr("style",i),x.attr("transform",`translate(-${s/2},${-h})`),p(e,x),e.intersect=function(t){l.Rm.info("lightningBolt intersect",e,t);return z.polygon(e,d,t)},n}(0,l.K2)(mt,"hexagon"),(0,l.K2)(Ct,"hourglass"),(0,l.K2)(xt,"icon"),(0,l.K2)(bt,"iconCircle"),(0,l.K2)(kt,"iconRounded"),(0,l.K2)(wt,"iconSquare"),(0,l.K2)(Tt,"imageSquare"),(0,l.K2)(St,"inv_trapezoid"),(0,l.K2)(vt,"labelRect"),(0,l.K2)(Bt,"lean_left"),(0,l.K2)(_t,"lean_right"),(0,l.K2)(At,"lightningBolt");var Lt=(0,l.K2)((t,e,r,i,o,n,a)=>[`M${t},${e+n}`,`a${o},${n} 0,0,0 ${r},0`,`a${o},${n} 0,0,0 ${-r},0`,`l0,${i}`,`a${o},${n} 0,0,0 ${r},0`,"l0,"+-i,`M${t},${e+n+a}`,`a${o},${n} 0,0,0 ${r},0`].join(" "),"createCylinderPathD"),Ft=(0,l.K2)((t,e,r,i,o,n,a)=>[`M${t},${e+n}`,`M${t+r},${e+n}`,`a${o},${n} 0,0,0 ${-r},0`,`l0,${i}`,`a${o},${n} 0,0,0 ${r},0`,"l0,"+-i,`M${t},${e+n+a}`,`a${o},${n} 0,0,0 ${r},0`].join(" "),"createOuterCylinderPathD"),Mt=(0,l.K2)((t,e,r,i,o,n)=>[`M${t-r/2},${-i/2}`,`a${o},${n} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD");async function Et(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n=e.padding??0,s="neo"===e.look?16:n,l="neo"===e.look?24:n;if(e.width||e.height){const t=e.width??0;e.width=(e.width??0)-s,e.width<10&&(e.width=10);const r=t/2/(2.5+t/50);e.height=(e.height??0)-l-3*r,e.height<10&&(e.height=10)}const{shapeSvg:h,bbox:u,label:f}=await d(t,e,g(e)),y=(e?.width?e?.width:u.width)+2*s,m=y/2,C=m/(2.5+y/50),x=(e?.height?e?.height:u.height)+C+2*l,b=.1*x;let k;const{cssStyles:w}=e;if("handDrawn"===e.look){const t=c.A.svg(h),r=Ft(0,0,y,x,m,C,b),i=Mt(0,C,y,x,m,C),n=(0,o.Fr)(e,{}),a=t.path(r,n),s=t.path(i,n);h.insert(()=>s,":first-child").attr("class","line"),k=h.insert(()=>a,":first-child"),k.attr("class","basic label-container"),w&&k.attr("style",w)}else{const t=Lt(0,0,y,x,m,C,b);k=h.insert("path",":first-child").attr("d",t).attr("class","basic label-container outer-path").attr("style",(0,a.KL)(w)).attr("style",i)}return k.attr("label-offset-y",C),k.attr("transform",`translate(${-y/2}, ${-(x/2+C)})`),p(e,k),f.attr("transform",`translate(${-u.width/2-(u.x-(u.left??0))}, ${-u.height/2+C-(u.y-(u.top??0))})`),e.intersect=function(t){const r=z.rect(e,t),i=r.x-(e.x??0);if(0!=m&&(Math.abs(i)<(e.width??0)/2||Math.abs(i)==(e.width??0)/2&&Math.abs(r.y-(e.y??0))>(e.height??0)/2-C)){let o=C*C*(1-i*i/(m*m));o>0&&(o=Math.sqrt(o)),o=C-o,t.y-(e.y??0)>0&&(o=-o),r.y+=o}return r},h}async function $t(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n=e.padding??0,a="neo"===e.look?16:n,s="neo"===e.look?12:n;if(e.width||e.height){const t=e.width;e.width=10*(t??0)/11-2*a,e.width<10&&(e.width=10),e.height=(e?.height??0)-2*s,e.height<10&&(e.height=10)}const{shapeSvg:l,bbox:h,label:u}=await d(t,e,g(e)),f=(e?.width?e?.width:h.width)+2*(a??0),m=(e?.height?e?.height:h.height)+2*(s??0),C="neo"===e.look?m/4:m/8,x=m+C,{cssStyles:b}=e,k=c.A.svg(l),w=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(w.roughness=0,w.fillStyle="solid");const T=[{x:-f/2-f/2*.1,y:-x/2},{x:-f/2-f/2*.1,y:x/2},...y(-f/2-f/2*.1,x/2,f/2+f/2*.1,x/2,C,.8),{x:f/2+f/2*.1,y:-x/2},{x:-f/2-f/2*.1,y:-x/2},{x:-f/2,y:-x/2},{x:-f/2,y:x/2*1.1},{x:-f/2,y:-x/2}],S=k.polygon(T.map(t=>[t.x,t.y]),w),v=l.insert(()=>S,":first-child");return v.attr("class","basic label-container outer-path"),b&&"handDrawn"!==e.look&&v.selectAll("path").attr("style",b),i&&"handDrawn"!==e.look&&v.selectAll("path").attr("style",i),v.attr("transform",`translate(0,${-C/2})`),u.attr("transform",`translate(${-f/2+(e.padding??0)+f/2*.1/2-(h.x-(h.left??0))},${-m/2+(e.padding??0)-C/2-(h.y-(h.top??0))})`),p(e,v),e.intersect=function(t){return z.polygon(e,T,t)},l}async function Ot(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n=e.padding??0,a="neo"===e.look?16:n,s="neo"===e.look?12:n,l="neo"===e.look?10:5;(e.width||e.height)&&(e.width=Math.max((e?.width??0)-2*a-2*l,10),e.height=Math.max((e?.height??0)-2*s-2*l,10));const{shapeSvg:h,bbox:u,label:y}=await d(t,e,g(e)),m=(e?.width?e?.width:u.width)+2*a+2*l-2*l,x=(e?.height?e?.height:u.height)+2*s+2*l-2*l,b=-m/2,k=-x/2,{cssStyles:w}=e,T=c.A.svg(h),S=(0,o.Fr)(e,{}),v=[{x:b-l,y:k+l},{x:b-l,y:k+x+l},{x:b+m-l,y:k+x+l},{x:b+m-l,y:k+x},{x:b+m,y:k+x},{x:b+m,y:k+x-l},{x:b+m+l,y:k+x-l},{x:b+m+l,y:k-l},{x:b+l,y:k-l},{x:b+l,y:k},{x:b,y:k},{x:b,y:k+l}],B=[{x:b,y:k+l},{x:b+m-l,y:k+l},{x:b+m-l,y:k+x},{x:b+m,y:k+x},{x:b+m,y:k},{x:b,y:k}];"handDrawn"!==e.look&&(S.roughness=0,S.fillStyle="solid");const _=f(v);let A=T.path(_,S);const L=f(B);let F=T.path(L,S);"handDrawn"!==e.look&&(A=C(A),F=C(F));const M=h.insert("g",":first-child");return M.insert(()=>A),M.insert(()=>F),M.attr("class","basic label-container outer-path"),w&&"handDrawn"!==e.look&&M.selectAll("path").attr("style",w),i&&"handDrawn"!==e.look&&M.selectAll("path").attr("style",i),y.attr("transform",`translate(${-u.width/2-l-(u.x-(u.left??0))}, ${-u.height/2+l-(u.y-(u.top??0))})`),p(e,M),e.intersect=function(t){return z.polygon(e,v,t)},h}async function Dt(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const{shapeSvg:n,bbox:a,label:s}=await d(t,e,g(e)),l=e.padding??0,h="neo"===e.look?16:l,u="neo"===e.look?12:l;let m=!0;(e.width||e.height)&&(m=!1,e.width=(e?.width??0)-2*h,e.height=(e?.height??0)-3*u);const C=Math.max(a.width,e?.width??0)+2*h,x=Math.max(a.height,e?.height??0)+3*u,b="neo"===e.look?x/4:x/8,k=x+(m?b/2:-b/2),w=-C/2,T=-k/2,S=10,{cssStyles:v}=e,B=y(w-S,T+k+S,w+C-S,T+k+S,b,.8),_=B?.[B.length-1],A=[{x:w-S,y:T+S},{x:w-S,y:T+k+S},...B,{x:w+C-S,y:_.y-S},{x:w+C,y:_.y-S},{x:w+C,y:_.y-20},{x:w+C+S,y:_.y-20},{x:w+C+S,y:T-S},{x:w+S,y:T-S},{x:w+S,y:T},{x:w,y:T},{x:w,y:T+S}],L=[{x:w,y:T+S},{x:w+C-S,y:T+S},{x:w+C-S,y:_.y-S},{x:w+C,y:_.y-S},{x:w+C,y:T},{x:w,y:T}],F=c.A.svg(n),M=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(M.roughness=0,M.fillStyle="solid");const E=f(A),$=F.path(E,M),O=f(L),D=F.path(O,M),I=n.insert(()=>$,":first-child");return I.insert(()=>D),I.attr("class","basic label-container outer-path"),v&&"handDrawn"!==e.look&&I.selectAll("path").attr("style",v),i&&"handDrawn"!==e.look&&I.selectAll("path").attr("style",i),I.attr("transform",`translate(0,${-b/2})`),s.attr("transform",`translate(${-a.width/2-S-(a.x-(a.left??0))}, ${-a.height/2+S-b/2-(a.y-(a.top??0))})`),p(e,I),e.intersect=function(t){return z.polygon(e,A,t)},n}async function It(t,e,{config:{themeVariables:r}}){const{labelStyles:i,nodeStyles:n}=(0,o.GX)(e);e.labelStyle=i;e.useHtmlLabels||(0,s.E)((0,s.zj)())||(e.centerLabel=!0);const{shapeSvg:a,bbox:l,label:h}=await d(t,e,g(e)),u=Math.max(l.width+2*(e.padding??0),e?.width??0),f=Math.max(l.height+2*(e.padding??0),e?.height??0),y=-u/2,m=-f/2,{cssStyles:C}=e,x=c.A.svg(a),b=(0,o.Fr)(e,{fill:r.noteBkgColor,stroke:r.noteBorderColor});"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const k=x.rectangle(y,m,u,f,b),w=a.insert(()=>k,":first-child");return w.attr("class","basic label-container outer-path"),h.attr("class","label noteLabel"),C&&"handDrawn"!==e.look&&w.selectAll("path").attr("style",C),n&&"handDrawn"!==e.look&&w.selectAll("path").attr("style",n),h.attr("transform",`translate(${-l.width/2-(l.x-(l.left??0))}, ${-l.height/2-(l.y-(l.top??0))})`),p(e,w),e.intersect=function(t){return z.rect(e,t)},a}(0,l.K2)(Et,"linedCylinder"),(0,l.K2)($t,"linedWaveEdgedRect"),(0,l.K2)(Ot,"multiRect"),(0,l.K2)(Dt,"multiWaveEdgedRectangle"),(0,l.K2)(It,"note");var Pt=(0,l.K2)((t,e,r)=>[`M${t+r/2},${e}`,`L${t+r},${e-r/2}`,`L${t+r/2},${e-r}`,`L${t},${e-r/2}`,"Z"].join(" "),"createDecisionBoxPathD");async function qt(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const{shapeSvg:n,bbox:a}=await d(t,e,g(e)),s=a.width+(e.padding??0)+(a.height+(e.padding??0)),l=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];let h;const{cssStyles:u}=e;if("handDrawn"===e.look){const t=c.A.svg(n),r=(0,o.Fr)(e,{}),i=Pt(0,0,s),a=t.path(i,r);h=n.insert(()=>a,":first-child").attr("transform",`translate(${-s/2+.5}, ${s/2})`),u&&h.attr("style",u)}else h=H(n,s,s,l),h.attr("transform",`translate(${-s/2+.5}, ${s/2})`);return i&&h.attr("style",i),p(e,h),e.calcIntersect=function(t,e){const r=t.width,i=[{x:r/2,y:0},{x:r,y:-r/2},{x:r/2,y:-r},{x:0,y:-r/2}],o=z.polygon(t,i,e);return{x:o.x-.5,y:o.y-.5}},e.intersect=function(t){return this.calcIntersect(e,t)},n}async function Rt(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n=e.padding??0,a="neo"===e.look?21:n??0,s="neo"===e.look?12:n??0,{shapeSvg:l,bbox:h,label:u}=await d(t,e,g(e)),y=-((e?.width??h.width)+("neo"===e.look?2*a:a))/2,m=-((e?.height??h.height)+("neo"===e.look?2*s:s))/2,C=m/2,x=[{x:y+C,y:m},{x:y,y:0},{x:y+C,y:-m},{x:-y,y:-m},{x:-y,y:m}],{cssStyles:b}=e,k=c.A.svg(l),w=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(w.roughness=0,w.fillStyle="solid");const T=f(x),S=k.path(T,w),v=l.insert(()=>S,":first-child");return v.attr("class","basic label-container outer-path"),b&&"handDrawn"!==e.look&&v.selectAll("path").attr("style",b),i&&"handDrawn"!==e.look&&v.selectAll("path").attr("style",i),v.attr("transform",`translate(${-C/2},0)`),u.attr("transform",`translate(${-C/2-h.width/2-(h.x-(h.left??0))}, ${-h.height/2-(h.y-(h.top??0))})`),p(e,v),e.intersect=function(t){return z.polygon(e,x,t)},l}async function zt(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);let n;e.labelStyle=r,n=e.cssClasses?"node "+e.cssClasses:"node default";const a=t.insert("g").attr("class",n).attr("id",e.domId||e.id),d=a.insert("g"),u=a.insert("g").attr("class","label").attr("style",i),g=e.description,f=e.label,y=await b(u,f,e.labelStyle,!0,!0);let m={width:0,height:0};if((0,s.E)((0,s.D7)())){const t=y.children[0],e=(0,h.Ltv)(y);m=t.getBoundingClientRect(),e.attr("width",m.width),e.attr("height",m.height)}l.Rm.info("Text 2",g);const C=g||[],x=y.getBBox(),w=await b(u,Array.isArray(C)?C.join("<br/>"):C,e.labelStyle,!0,!0),T=w.children[0],S=(0,h.Ltv)(w);m=T.getBoundingClientRect(),S.attr("width",m.width),S.attr("height",m.height);const v=(e.padding||0)/2;(0,h.Ltv)(w).attr("transform","translate( "+(m.width>x.width?0:(x.width-m.width)/2)+", "+(x.height+v+5)+")"),(0,h.Ltv)(y).attr("transform","translate( "+(m.width<x.width?0:-(x.width-m.width)/2)+", 0)"),m=u.node().getBBox(),u.attr("transform","translate("+-m.width/2+", "+(-m.height/2-v+3)+")");const B=m.width+(e.padding||0),_=m.height+(e.padding||0),A=-m.width/2-v,L=-m.height/2-v;let F,M;if("handDrawn"===e.look){const t=c.A.svg(a),r=(0,o.Fr)(e,{}),i=t.path(k(A,L,B,_,e.rx||0),r),n=t.line(-m.width/2-v,-m.height/2-v+x.height+v,m.width/2+v,-m.height/2-v+x.height+v,r);M=a.insert(()=>(l.Rm.debug("Rough node insert CXC",i),n),":first-child"),F=a.insert(()=>(l.Rm.debug("Rough node insert CXC",i),i),":first-child")}else F=d.insert("rect",":first-child"),M=d.insert("line"),F.attr("class","outer title-state").attr("style",i).attr("x",-m.width/2-v).attr("y",-m.height/2-v).attr("width",m.width+(e.padding||0)).attr("height",m.height+(e.padding||0)),M.attr("class","divider").attr("x1",-m.width/2-v).attr("x2",m.width/2+v).attr("y1",-m.height/2-v+x.height+v).attr("y2",-m.height/2-v+x.height+v);return p(e,F),e.intersect=function(t){return z.rect(e,t)},a}async function Kt(t,e,{config:{themeVariables:r}}){const i=r?.radius??5;return lt(t,e,{rx:i,ry:i,classes:"",labelPaddingX:1*(e?.padding??0),labelPaddingY:1*(e?.padding??0)})}(0,l.K2)(qt,"question"),(0,l.K2)(Rt,"rect_left_inv_arrow"),(0,l.K2)(zt,"rectWithTitle"),(0,l.K2)(Kt,"roundedRect");async function Nt(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n="neo"===e.look?16:e.padding??0,s="neo"===e.look?12:e.padding??0,{shapeSvg:l,bbox:h,label:u}=await d(t,e,g(e)),f=(e?.width??h.width)+2*n+("neo"===e.look?8:16),y=(e?.height??h.height)+2*s,m=f-8,C=y,x=8-f/2,b=-y/2,{cssStyles:k}=e,w=c.A.svg(l),T=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(T.roughness=0,T.fillStyle="solid");const S=[{x:x,y:b},{x:x+m,y:b},{x:x+m,y:b+C},{x:x-8,y:b+C},{x:x-8,y:b},{x:x,y:b},{x:x,y:b+C}],v=w.polygon(S.map(t=>[t.x,t.y]),T),B=l.insert(()=>v,":first-child");return B.attr("class","basic label-container outer-path").attr("style",(0,a.KL)(k)),i&&"handDrawn"!==e.look&&B.selectAll("path").attr("style",i),k&&"handDrawn"!==e.look&&B.selectAll("path").attr("style",i),u.attr("transform",`translate(${4-h.width/2-(h.x-(h.left??0))}, ${-h.height/2-(h.y-(h.top??0))})`),p(e,B),e.intersect=function(t){return z.rect(e,t)},l}async function jt(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n=e.padding??0,a="neo"===e.look?16:n,s="neo"===e.look?12:n;(e.width||e.height)&&(e.width=Math.max((e?.width??0)-2*a,10),e.height=Math.max((e?.height??0)/1.5-2*s,10));const{shapeSvg:l,bbox:h,label:u}=await d(t,e,g(e)),y=(e?.width?e?.width:h.width)+2*a,m=1.5*((e?.height?e?.height:h.height)+2*s)/1.5,C=-y/2,x=-m/2,{cssStyles:b}=e,k=c.A.svg(l),w=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(w.roughness=0,w.fillStyle="solid");const T=[{x:C,y:x},{x:C,y:x+m},{x:C+y,y:x+m},{x:C+y,y:x-m/2}],S=f(T),v=k.path(S,w),B=l.insert(()=>v,":first-child");return B.attr("class","basic label-container outer-path"),b&&"handDrawn"!==e.look&&B.selectChildren("path").attr("style",b),i&&"handDrawn"!==e.look&&B.selectChildren("path").attr("style",i),B.attr("transform",`translate(0, ${m/4})`),u.attr("transform",`translate(${-y/2+(e.padding??0)-(h.x-(h.left??0))}, ${-m/4+(e.padding??0)-(h.y-(h.top??0))})`),p(e,B),e.intersect=function(t){return z.polygon(e,T,t)},l}async function Wt(t,e){const r=e.padding??0,i="neo"===e.look?16:2*r,o="neo"===e.look?12:r;return lt(t,e,{rx:0,ry:0,classes:"",labelPaddingX:e.labelPaddingX??i,labelPaddingY:o})}async function Ht(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n=e.padding??0,a="neo"===e.look?20:n,s="neo"===e.look?12:n,{shapeSvg:l,bbox:h}=await d(t,e,g(e)),u=h.height+("neo"===e.look?2*s:s),y=h.width+u/4+("neo"===e.look?2*a:a),C=u/2,{cssStyles:x}=e,b=c.A.svg(l),k=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(k.roughness=0,k.fillStyle="solid");const w=[{x:-y/2+C,y:-u/2},{x:y/2-C,y:-u/2},...m(-y/2+C,0,C,50,90,270),{x:y/2-C,y:u/2},...m(y/2-C,0,C,50,270,450)],T=f(w),S=b.path(T,k),v=l.insert(()=>S,":first-child");return v.attr("class","basic label-container outer-path"),x&&"handDrawn"!==e.look&&v.selectChildren("path").attr("style",x),i&&"handDrawn"!==e.look&&v.selectChildren("path").attr("style",i),p(e,v),e.intersect=function(t){return z.polygon(e,w,t)},l}async function Ut(t,e){return lt(t,e,{rx:"neo"===e.look?3:5,ry:"neo"===e.look?3:5,classes:"flowchart-node"})}function Yt(t,e,{config:{themeVariables:r}}){const{labelStyles:i,nodeStyles:n}=(0,o.GX)(e);e.labelStyle=i;const{cssStyles:a}=e,{lineColor:s,stateBorder:l,nodeBorder:h,nodeShadow:d}=r;(e.width||e.height)&&((e.width??0)<14&&(e.width=14),(e.height??0)<14&&(e.height=14)),e.width||(e.width=14),e.height||(e.height=14);const u=t.insert("g").attr("class","node default").attr("id",e.domId??e.id),g=c.A.svg(u),f=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(f.roughness=0,f.fillStyle="solid");const y=g.circle(0,0,e.width,{...f,stroke:s,strokeWidth:2}),m=l??h,C=5*(e.width??0)/14,x=g.circle(0,0,C,{...f,fill:m,stroke:m,strokeWidth:2,fillStyle:"solid"}),b=u.insert(()=>y,":first-child");if(b.insert(()=>x),"handDrawn"!==e.look&&b.attr("class","outer-path"),a&&b.selectAll("path").attr("style",a),n&&b.selectAll("path").attr("style",n),e.width<25&&d&&"handDrawn"!==e.look){const e=t.node()?.ownerSVGElement?.id??"",r=e?`${e}-drop-shadow-small`:"drop-shadow-small";b.attr("style",`filter:url(#${r})`)}return p(e,b),e.intersect=function(t){return z.circle(e,(e.width??0)/2,t)},u}function Gt(t,e,{config:{themeVariables:r}}){const{lineColor:i,nodeShadow:n}=r;(e.width||e.height)&&((e.width??0)<14&&(e.width=14),(e.height??0)<14&&(e.height=14)),e.width||(e.width=14),e.height||(e.height=14);const a=t.insert("g").attr("class","node default").attr("id",e.domId||e.id);let s;if("handDrawn"===e.look){const t=c.A.svg(a).circle(0,0,e.width,(0,o.ue)(i));s=a.insert(()=>t),s.attr("class","state-start").attr("r",(e.width??7)/2).attr("width",e.width??14).attr("height",e.height??14)}else s=a.insert("circle",":first-child"),s.attr("class","state-start").attr("r",(e.width??7)/2).attr("width",e.width??14).attr("height",e.height??14);if(e.width<25&&n&&"handDrawn"!==e.look){const e=t.node()?.ownerSVGElement?.id??"",r=e?`${e}-drop-shadow-small`:"drop-shadow-small";s.attr("style",`filter:url(#${r})`)}return p(e,s),e.intersect=function(t){return z.circle(e,(e.width??7)/2,t)},a}(0,l.K2)(Nt,"shadedProcess"),(0,l.K2)(jt,"slopedRect"),(0,l.K2)(Wt,"squareRect"),(0,l.K2)(Ht,"stadium"),(0,l.K2)(Ut,"state"),(0,l.K2)(Yt,"stateEnd"),(0,l.K2)(Gt,"stateStart");async function Xt(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n=e?.padding??8,s="neo"===e.look?28:n,l="neo"===e.look?12:n,{shapeSvg:h,bbox:u}=await d(t,e,g(e)),f=(e?.width??u.width)+16+s,y=(e?.height??u.height)+l,m=f-16,C=y,x=-f/2,b=-y/2,k=[{x:0,y:0},{x:m,y:0},{x:m,y:-C},{x:0,y:-C},{x:0,y:0},{x:-8,y:0},{x:m+8,y:0},{x:m+8,y:-C},{x:-8,y:-C},{x:-8,y:0}];if("handDrawn"===e.look){const t=c.A.svg(h),r=(0,o.Fr)(e,{}),i=t.rectangle(x,b,m+16,C,r),n=t.line(x+8,b,x+8,b+C,r),s=t.line(x+8+m,b,x+8+m,b+C,r);h.insert(()=>n,":first-child"),h.insert(()=>s,":first-child");const l=h.insert(()=>i,":first-child"),{cssStyles:d}=e;l.attr("class","basic label-container").attr("style",(0,a.KL)(d)),p(e,l)}else{const t=H(h,m,C,k);i&&t.attr("style",i),p(e,t)}return e.intersect=function(t){return z.polygon(e,k,t)},h}(0,l.K2)(Xt,"subroutine");async function Vt(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n=e.padding??0,a="neo"===e.look?16:n,s="neo"===e.look?12:n;(e.width||e.height)&&(e.height=Math.max((e?.height??0)-2*s,10),e.width=Math.max((e?.width??0)-2*a-.2*(e.height+2*s),10));const{shapeSvg:l,bbox:h}=await d(t,e,g(e)),u=(e?.height?e?.height:h.height)+2*s,y=.2*u,m=.2*u,C=(e?.width?e?.width:h.width)+2*a+y-y,x=u,b=-C/2,k=-x/2,{cssStyles:w}=e,T=c.A.svg(l),S=(0,o.Fr)(e,{}),v=[{x:b-y/2,y:k},{x:b+C+y/2,y:k},{x:b+C+y/2,y:k+x},{x:b-y/2,y:k+x}],B=[{x:b+C-y/2,y:k+x},{x:b+C+y/2,y:k+x},{x:b+C+y/2,y:k+x-m}];"handDrawn"!==e.look&&(S.roughness=0,S.fillStyle="solid");const _=f(v),A=T.path(_,S),L=f(B),F=T.path(L,{...S,fillStyle:"solid"}),M=l.insert(()=>F,":first-child");return M.insert(()=>A,":first-child"),M.attr("class","basic label-container outer-path"),w&&"handDrawn"!==e.look&&M.selectAll("path").attr("style",w),i&&"handDrawn"!==e.look&&M.selectAll("path").attr("style",i),p(e,M),e.intersect=function(t){return z.polygon(e,v,t)},l}async function Zt(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const{shapeSvg:n,bbox:a,label:s}=await d(t,e,g(e)),l=Math.max(a.width+2*(e.padding??0),e?.width??0),h=Math.max(a.height+2*(e.padding??0),e?.height??0),u=h/8,m=.2*l,C=.2*h,x=h+u,{cssStyles:b}=e,k=c.A.svg(n),w=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(w.roughness=0,w.fillStyle="solid");const T=[{x:-l/2-l/2*.1,y:x/2},...y(-l/2-l/2*.1,x/2,l/2+l/2*.1,x/2,u,.8),{x:l/2+l/2*.1,y:-x/2},{x:-l/2-l/2*.1,y:-x/2}],S=-l/2+l/2*.1,v=-x/2-.4*C,B=[{x:S+l-m,y:1.3*(v+h)},{x:S+l,y:v+h-C},{x:S+l,y:.9*(v+h)},...y(S+l,1.25*(v+h),S+l-m,1.3*(v+h),.02*-h,.5)],_=f(T),A=k.path(_,w),L=f(B),F=k.path(L,{...w,fillStyle:"solid"}),M=n.insert(()=>F,":first-child");return M.insert(()=>A,":first-child"),M.attr("class","basic label-container outer-path"),b&&"handDrawn"!==e.look&&M.selectAll("path").attr("style",b),i&&"handDrawn"!==e.look&&M.selectAll("path").attr("style",i),M.attr("transform",`translate(0,${-u/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(a.x-(a.left??0))},${-h/2+(e.padding??0)-u/2-(a.y-(a.top??0))})`),p(e,M),e.intersect=function(t){return z.polygon(e,T,t)},n}async function Qt(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const{shapeSvg:n,bbox:a}=await d(t,e,g(e)),s=Math.max(a.width+(e.padding??0),e?.width||0),l=Math.max(a.height+(e.padding??0),e?.height||0),h=-s/2,c=-l/2,u=n.insert("rect",":first-child");return u.attr("class","text").attr("style",i).attr("rx",0).attr("ry",0).attr("x",h).attr("y",c).attr("width",s).attr("height",l),p(e,u),e.intersect=function(t){return z.rect(e,t)},n}(0,l.K2)(Vt,"taggedRect"),(0,l.K2)(Zt,"taggedWaveEdgedRectangle"),(0,l.K2)(Qt,"text");var Jt=(0,l.K2)((t,e,r,i,o,n)=>`M${t},${e}\n a${o},${n} 0,0,1 0,${-i}\n l${r},0\n a${o},${n} 0,0,1 0,${i}\n M${r},${-i}\n a${o},${n} 0,0,0 0,${i}\n l${-r},0`,"createCylinderPathD"),te=(0,l.K2)((t,e,r,i,o,n)=>[`M${t},${e}`,`M${t+r},${e}`,`a${o},${n} 0,0,0 0,${-i}`,`l${-r},0`,`a${o},${n} 0,0,0 0,${i}`,`l${r},0`].join(" "),"createOuterCylinderPathD"),ee=(0,l.K2)((t,e,r,i,o,n)=>[`M${t+r/2},${-i/2}`,`a${o},${n} 0,0,0 0,${i}`].join(" "),"createInnerCylinderPathD");async function re(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n=e.padding??0,s="neo"===e.look?12:n/2;if(e.width||e.height){const t=e.height??0;e.height=(e.height??0)-s,e.height<5&&(e.height=5);const r=t/2/(2.5+t/50);e.width=(e.width??0)-s-3*r,e.width<10&&(e.width=10)}const{shapeSvg:l,bbox:h,label:u}=await d(t,e,g(e)),f=(e.height?e.height:h.height)+s,y=f/2,m=y/(2.5+f/50),C=(e.width?e.width:h.width)+m+s,{cssStyles:x}=e;let b;if("handDrawn"===e.look){const t=c.A.svg(l),r=te(0,0,C,f,m,y),i=ee(0,0,C,f,m,y),n=t.path(r,(0,o.Fr)(e,{})),a=t.path(i,(0,o.Fr)(e,{fill:"none"}));b=l.insert(()=>a,":first-child"),b=l.insert(()=>n,":first-child"),b.attr("class","basic label-container"),x&&b.attr("style",x)}else{const t=Jt(0,0,C,f,m,y);b=l.insert("path",":first-child").attr("d",t).attr("class","basic label-container").attr("style",(0,a.KL)(x)).attr("style",i),b.attr("class","basic label-container outer-path"),x&&b.selectAll("path").attr("style",x),i&&b.selectAll("path").attr("style",i)}return b.attr("label-offset-x",m),b.attr("transform",`translate(${-C/2}, ${f/2} )`),u.attr("transform",`translate(${-h.width/2-m-(h.x-(h.left??0))}, ${-h.height/2-(h.y-(h.top??0))})`),p(e,b),e.intersect=function(t){const r=z.rect(e,t),i=r.y-(e.y??0);if(0!=y&&(Math.abs(i)<(e.height??0)/2||Math.abs(i)==(e.height??0)/2&&Math.abs(r.x-(e.x??0))>(e.width??0)/2-m)){let o=m*m*(1-i*i/(y*y));0!=o&&(o=Math.sqrt(Math.abs(o))),o=m-o,t.x-(e.x??0)>0&&(o=-o),r.x+=o}return r},l}async function ie(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n=e.padding??0,a=(e.look,n),s="neo"===e.look?2*n:n,{shapeSvg:l,bbox:h}=await d(t,e,g(e)),u=(e?.height??h.height)+a,y=(e?.width??h.width)+s,m=[{x:-3*u/6,y:0},{x:y+3*u/6,y:0},{x:y,y:-u},{x:0,y:-u}];let C;const{cssStyles:x}=e;if("handDrawn"===e.look){const t=c.A.svg(l),r=(0,o.Fr)(e,{}),i=f(m),n=t.path(i,r);C=l.insert(()=>n,":first-child").attr("transform",`translate(${-y/2}, ${u/2})`),x&&C.attr("style",x)}else C=H(l,y,u,m);return i&&C.attr("style",i),e.width=y,e.height=u,p(e,C),e.intersect=function(t){return z.polygon(e,m,t)},l}async function oe(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n=e.padding??0,a="neo"===e.look?16:n,s="neo"===e.look?12:n;(e.width||e.height)&&(e.height=(e.height??0)-2*s,e.height<5&&(e.height=5),e.width=(e.width??0)-2*a,e.width<15&&(e.width=15));const{shapeSvg:l,bbox:h}=await d(t,e,g(e)),u=(e?.width?e?.width:h.width)+2*a,y=(e?.height?e?.height:h.height)+2*s,{cssStyles:m}=e,C=c.A.svg(l),x=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(x.roughness=0,x.fillStyle="solid");const b=[{x:-u/2*.8,y:-y/2},{x:u/2*.8,y:-y/2},{x:u/2,y:-y/2*.6},{x:u/2,y:y/2},{x:-u/2,y:y/2},{x:-u/2,y:-y/2*.6}],k=f(b),w=C.path(k,x),T=l.insert(()=>w,":first-child");return T.attr("class","basic label-container outer-path"),m&&"handDrawn"!==e.look&&T.selectChildren("path").attr("style",m),i&&"handDrawn"!==e.look&&T.selectChildren("path").attr("style",i),p(e,T),e.intersect=function(t){return z.polygon(e,b,t)},l}(0,l.K2)(re,"tiltedCylinder"),(0,l.K2)(ie,"trapezoid"),(0,l.K2)(oe,"trapezoidalPentagon");async function ne(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n=e.padding??0,a="neo"===e.look?2*n:n;(e.width||e.height)&&(e.width=((e?.width??0)-a)/2,e.width<10&&(e.width=10),e.height=e?.height??0,e.height<10&&(e.height=10));const{shapeSvg:h,bbox:u,label:y}=await d(t,e,g(e)),m=(0,s._3)((0,s.D7)().flowchart?.htmlLabels),C=(e?.width?e?.width:u.width)+a,x=e?.height?e?.height:C+u.height,b=[{x:0,y:0},{x:x,y:0},{x:x/2,y:-x}],{cssStyles:k}=e,w=c.A.svg(h),T=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(T.roughness=0,T.fillStyle="solid");const S=f(b),v=w.path(S,T),B=h.insert(()=>v,":first-child").attr("transform",`translate(${-x/2}, ${x/2})`).attr("class","outer-path");return k&&"handDrawn"!==e.look&&B.selectChildren("path").attr("style",k),i&&"handDrawn"!==e.look&&B.selectChildren("path").attr("style",i),e.width=C,e.height=x,p(e,B),y.attr("transform",`translate(${-u.width/2-(u.x-(u.left??0))}, ${x/2-(u.height+(e.padding??0)/(m?2:1)-(u.y-(u.top??0)))})`),e.intersect=function(t){return l.Rm.info("Triangle intersect",e,b,t),z.polygon(e,b,t)},h}async function ae(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n=e.padding??0,a="neo"===e.look?16:n,s="neo"===e.look?12:n;let l=!0;(e.width||e.height)&&(l=!1,e.width=(e?.width??0)-2*a,e.width<10&&(e.width=10),e.height=(e?.height??0)-2*s,e.height<10&&(e.height=10));const{shapeSvg:h,bbox:u,label:m}=await d(t,e,g(e)),C=(e?.width?e?.width:u.width)+2*(a??0),x=(e?.height?e?.height:u.height)+2*(s??0),b="neo"===e.look?x/4:x/8,k=x+(l?b:-b),{cssStyles:w}=e,T=14-C,S=T>0?T/2:0,v=c.A.svg(h),B=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(B.roughness=0,B.fillStyle="solid");const _=[{x:-C/2-S,y:k/2},...y(-C/2-S,k/2,C/2+S,k/2,b,.8),{x:C/2+S,y:-k/2},{x:-C/2-S,y:-k/2}],A=f(_),L=v.path(A,B),F=h.insert(()=>L,":first-child");return F.attr("class","basic label-container outer-path"),w&&"handDrawn"!==e.look&&F.selectAll("path").attr("style",w),i&&"handDrawn"!==e.look&&F.selectAll("path").attr("style",i),F.attr("transform",`translate(0,${-b/2})`),m.attr("transform",`translate(${-C/2+(e.padding??0)-(u.x-(u.left??0))},${-x/2+(e.padding??0)-b-(u.y-(u.top??0))})`),p(e,F),e.intersect=function(t){return z.polygon(e,_,t)},h}async function se(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n=e.padding??0,a="neo"===e.look?16:n,s="neo"===e.look?20:n;if(e.width||e.height){e.width=e?.width??0,e.width<20&&(e.width=20),e.height=e?.height??0,e.height<10&&(e.height=10);const t=Math.min(.2*e.height,e.height/4);e.height=Math.ceil(e.height-s-t*(20/9)),e.width=e.width-2*a}const{shapeSvg:l,bbox:h}=await d(t,e,g(e)),u=(e?.width?e?.width:h.width)+2*a,m=(e?.height?e?.height:h.height)+s,C=m/8,x=m+2*C,{cssStyles:b}=e,k=c.A.svg(l),w=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(w.roughness=0,w.fillStyle="solid");const T=[{x:-u/2,y:x/2},...y(-u/2,x/2,u/2,x/2,C,1),{x:u/2,y:-x/2},...y(u/2,-x/2,-u/2,-x/2,C,-1)],S=f(T),v=k.path(S,w),B=l.insert(()=>v,":first-child");return B.attr("class","basic label-container"),b&&"handDrawn"!==e.look&&B.selectAll("path").attr("style",b),i&&"handDrawn"!==e.look&&B.selectAll("path").attr("style",i),p(e,B),e.intersect=function(t){return z.polygon(e,T,t)},l}(0,l.K2)(ne,"triangle"),(0,l.K2)(ae,"waveEdgedRectangle"),(0,l.K2)(se,"waveRectangle");var le=10;async function he(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n="neo"===e.look?16:e.padding??0,a="neo"===e.look?12:e.padding??0;(e.width||e.height)&&(e.width=Math.max((e?.width??0)-2*n-le,10),e.height=Math.max((e?.height??0)-2*a-le,10));const{shapeSvg:s,bbox:l,label:h}=await d(t,e,g(e)),u=(e?.width?e?.width:l.width)+2*n+le,f=(e?.height?e?.height:l.height)+2*a+le,y=u-le,m=f-le,C=-y/2,x=-m/2,{cssStyles:b}=e,k=c.A.svg(s),w=(0,o.Fr)(e,{}),T=[{x:C-le,y:x-le},{x:C-le,y:x+m},{x:C+y,y:x+m},{x:C+y,y:x-le}],S=`M${C-le},${x-le} L${C+y},${x-le} L${C+y},${x+m} L${C-le},${x+m} L${C-le},${x-le}\n M${C-le},${x} L${C+y},${x}\n M${C},${x-le} L${C},${x+m}`;"handDrawn"!==e.look&&(w.roughness=0,w.fillStyle="solid");const v=k.path(S,w),B=s.insert(()=>v,":first-child");return B.attr("transform","translate(5, 5)"),B.attr("class","basic label-container outer-path"),b&&"handDrawn"!==e.look&&B.selectAll("path").attr("style",b),i&&"handDrawn"!==e.look&&B.selectAll("path").attr("style",i),h.attr("transform",`translate(${-l.width/2+5-(l.x-(l.left??0))}, ${-l.height/2+5-(l.y-(l.top??0))})`),p(e,B),e.intersect=function(t){return z.polygon(e,T,t)},s}(0,l.K2)(he,"windowPane");var ce=new Set(["redux-color","redux-dark-color"]),de=new Set(["redux","redux-dark","redux-color","redux-dark-color"]);async function ue(t,e){const r=e;r.alias&&(e.label=r.alias);const{theme:i,themeVariables:n}=(0,s.zj)(),{rowEven:l,rowOdd:d,nodeBorder:u,borderColorArray:f}=n;if("handDrawn"===e.look){const{themeVariables:r}=(0,s.zj)(),{background:i}=r,o={...e,id:e.id+"-background",domId:(e.domId||e.id)+"-background",look:"default",cssStyles:["stroke: none",`fill: ${i}`]};await ue(t,o)}const y=(0,s.zj)();e.useHtmlLabels=y.htmlLabels;let m=y.er?.diagramPadding??10,C=y.er?.entityPadding??6;const{cssStyles:x}=e,{labelStyles:b,nodeStyles:k}=(0,o.GX)(e);if(0===r.attributes.length&&e.label){const o={rx:0,ry:0,labelPaddingX:m,labelPaddingY:1.5*m,classes:""};(0,a.Un)(e.label,y)+2*o.labelPaddingX<y.er.minEntityWidth&&(e.width=y.er.minEntityWidth);const n=await lt(t,e,o);if(null!=i&&ce.has(i)){const t=r.colorIndex??0;n.attr("data-color-id","color-"+t%f.length)}if(!(0,s._3)(y.htmlLabels)){const t=n.select("text"),e=t.node()?.getBBox();t.attr("transform",`translate(${-e.width/2}, 0)`)}return n}y.htmlLabels||(m*=1.25,C*=1.25);let w=g(e);w||(w="node default");const T=t.insert("g").attr("class",w).attr("id",e.domId||e.id),S=await pe(T,e.label??"",y,0,0,["name"],b);S.height+=C;let v=0;const B=[],_=[];let A=0,L=0,F=0,M=0,E=!0,$=!0;for(const o of r.attributes){const t=await pe(T,o.type,y,0,v,["attribute-type"],b);A=Math.max(A,t.width+m);const e=await pe(T,o.name,y,0,v,["attribute-name"],b);L=Math.max(L,e.width+m);const r=await pe(T,o.keys.join(),y,0,v,["attribute-keys"],b);F=Math.max(F,r.width+m);const i=await pe(T,o.comment,y,0,v,["attribute-comment"],b);M=Math.max(M,i.width+m);const n=Math.max(t.height,e.height,r.height,i.height)+C;_.push({yOffset:v,rowHeight:n}),v+=n}let O=4;F<=m&&(E=!1,F=0,O--),M<=m&&($=!1,M=0,O--);const D=T.node().getBBox();if(S.width+2*m-(A+L+F+M)>0){const t=S.width+2*m-(A+L+F+M);A+=t/O,L+=t/O,F>0&&(F+=t/O),M>0&&(M+=t/O)}const I=A+L+F+M,P=c.A.svg(T),q=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(q.roughness=0,q.fillStyle="solid");let R=0;_.length>0&&(R=_.reduce((t,e)=>t+(e?.rowHeight??0),0));const K=Math.max(D.width+2*m,e?.width||0,I),N=Math.max((R??0)+S.height,e?.height||0),j=-K/2,W=-N/2;if(T.selectAll("g:not(:first-child)").each((t,e,r)=>{const i=(0,h.Ltv)(r[e]),o=i.attr("transform");let n=0,a=0;if(o){const t=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(o);t&&(n=parseFloat(t[1]),a=parseFloat(t[2]),i.attr("class").includes("attribute-name")?n+=A:i.attr("class").includes("attribute-keys")?n+=A+L:i.attr("class").includes("attribute-comment")&&(n+=A+L+F))}i.attr("transform",`translate(${j+m/2+n}, ${a+W+S.height+C/2})`)}),T.select(".name").attr("transform","translate("+-S.width/2+", "+(W+C/2)+")"),null!=i&&ce.has(i)){const t=r.colorIndex??0;T.attr("data-color-id","color-"+t%f.length)}const H=P.rectangle(j,W,K,N,q),U=T.insert(()=>H,":first-child").attr("class","outer-path").attr("style",x.join(""));B.push(0);for(const[o,a]of _.entries()){const t=(o+1)%2==0&&0!==a.yOffset,e=P.rectangle(j,S.height+W+a?.yOffset,K,a?.rowHeight,{...q,fill:t?l:d,stroke:u});T.insert(()=>e,"g.label").attr("style",x.join("")).attr("class","row-rect-"+(t?"even":"odd"))}const Y=1e-4;let G=ge(j,S.height+W,K+j,S.height+W,Y),X=P.polygon(G.map(t=>[t.x,t.y]),q);if(T.insert(()=>X).attr("class","divider"),G=ge(A+j,S.height+W,A+j,N+W,Y),X=P.polygon(G.map(t=>[t.x,t.y]),q),T.insert(()=>X).attr("class","divider"),E){const t=A+L+j;G=ge(t,S.height+W,t,N+W,Y),X=P.polygon(G.map(t=>[t.x,t.y]),q),T.insert(()=>X).attr("class","divider")}if($){const t=A+L+F+j;G=ge(t,S.height+W,t,N+W,Y),X=P.polygon(G.map(t=>[t.x,t.y]),q),T.insert(()=>X).attr("class","divider")}for(const o of B){const t=S.height+W+o;G=ge(j,t,K+j,t,Y),X=P.polygon(G.map(t=>[t.x,t.y]),q),T.insert(()=>X).attr("class","divider")}if(p(e,U),k&&"handDrawn"!==e.look)if(null!=i&&de.has(i))T.selectAll("path").attr("style",k);else{const t=k.split(";"),e=t?.filter(t=>t.includes("stroke"))?.map(t=>`${t}`).join("; ");T.selectAll("path").attr("style",e??""),T.selectAll(".row-rect-even path").attr("style",k)}return e.intersect=function(t){return z.rect(e,t)},T}async function pe(t,e,r,i=0,o=0,l=[],c=""){const d=t.insert("g").attr("class",`label ${l.join(" ")}`).attr("transform",`translate(${i}, ${o})`).attr("style",c);e!==(0,s.QO)(e)&&(e=(e=(0,s.QO)(e)).replaceAll("<","<").replaceAll(">",">"));const u=d.node().appendChild(await(0,n.GZ)(d,e,{width:(0,a.Un)(e,r)+100,style:c,useHtmlLabels:r.htmlLabels},r));if(e.includes("<")||e.includes(">")){let t=u.children[0];for(t.textContent=t.textContent.replaceAll("<","<").replaceAll(">",">");t.childNodes[0];)t=t.childNodes[0],t.textContent=t.textContent.replaceAll("<","<").replaceAll(">",">")}let p=u.getBBox();if((0,s._3)(r.htmlLabels)){const t=u.children[0];t.style.textAlign="start";const e=(0,h.Ltv)(u);p=t.getBoundingClientRect(),e.attr("width",p.width),e.attr("height",p.height)}return p}function ge(t,e,r,i,o){return t===r?[{x:t-o/2,y:e},{x:t+o/2,y:e},{x:r+o/2,y:i},{x:r-o/2,y:i}]:[{x:t,y:e-o/2},{x:t,y:e+o/2},{x:r,y:i+o/2},{x:r,y:i-o/2}]}async function fe(t,e,r,i,o=r.class.padding??12){const n=i?0:3,a=t.insert("g").attr("class",g(e)).attr("id",e.domId||e.id);let s=null,l=null,h=null,c=null,d=0,u=0,p=0;if(s=a.insert("g").attr("class","annotation-group text"),e.annotations.length>0){const t=e.annotations[0];await ye(s,{text:`\xab${t}\xbb`},0);d=s.node().getBBox().height}l=a.insert("g").attr("class","label-group text"),await ye(l,e,0,["font-weight: bolder"]);const f=l.node().getBBox();u=f.height,h=a.insert("g").attr("class","members-group text");let y=0;for(const g of e.members){y+=await ye(h,g,y,[g.parseClassifier()])+n}p=h.node().getBBox().height,p<=0&&(p=o/2),c=a.insert("g").attr("class","methods-group text");let m=0;for(const g of e.methods){m+=await ye(c,g,m,[g.parseClassifier()])+n}let C=a.node().getBBox();if(null!==s){const t=s.node().getBBox();s.attr("transform",`translate(${-t.width/2})`)}return l.attr("transform",`translate(${-f.width/2}, ${d})`),C=a.node().getBBox(),h.attr("transform",`translate(0, ${d+u+2*o})`),C=a.node().getBBox(),c.attr("transform",`translate(0, ${d+u+(p?p+4*o:2*o)})`),C=a.node().getBBox(),{shapeSvg:a,bbox:C}}async function ye(t,e,r,i=[]){const o=t.insert("g").attr("class","label").attr("style",i.join("; ")),c=(0,s.zj)();let d="useHtmlLabels"in e?e.useHtmlLabels:(0,s._3)(c.htmlLabels)??!0,u="";u="text"in e?e.text:e.label,!d&&u.startsWith("\\")&&(u=u.substring(1)),(0,s.Wi)(u)&&(d=!0);const p=await(0,n.GZ)(o,(0,s.oB)((0,a.Sm)(u)),{width:(0,a.Un)(u,c)+50,classes:"markdown-node-label",useHtmlLabels:d},c);let g,f=1;if(d){const t=p.children[0],e=(0,h.Ltv)(p);f=t.innerHTML.split("<br>").length,t.innerHTML.includes("</math>")&&(f+=t.innerHTML.split("<mrow>").length-1);const r=t.getElementsByTagName("img");if(r){const t=""===u.replace(/<img[^>]*>/g,"").trim();await Promise.all([...r].map(e=>new Promise(r=>{function i(){if(e.style.display="flex",e.style.flexDirection="column",t){const t=c.fontSize?.toString()??window.getComputedStyle(document.body).fontSize,r=5,i=parseInt(t,10)*r+"px";e.style.minWidth=i,e.style.maxWidth=i}else e.style.width="100%";r(e)}(0,l.K2)(i,"setupImage"),setTimeout(()=>{e.complete&&i()}),e.addEventListener("error",i),e.addEventListener("load",i)})))}g=t.getBoundingClientRect(),e.attr("width",g.width),e.attr("height",g.height)}else{i.includes("font-weight: bolder")&&(0,h.Ltv)(p).selectAll("tspan").attr("font-weight",""),f=p.children.length;const t=p.children[0];if(""===p.textContent||p.textContent.includes(">")){t.textContent=u[0]+u.substring(1).replaceAll(">",">").replaceAll("<","<").trim();" "===u[1]&&(t.textContent=t.textContent[0]+" "+t.textContent.substring(1))}"undefined"===t.textContent&&(t.textContent=""),g=p.getBBox()}return o.attr("transform","translate(0,"+(-g.height/(2*f)+r)+")"),g.height}async function me(t,e){const r=(0,s.D7)(),{themeVariables:i}=r,{useGradient:n}=i,a=r.class.padding??12,l=a,d=e.useHtmlLabels??(0,s._3)(r.htmlLabels)??!0,u=e;u.annotations=u.annotations??[],u.members=u.members??[],u.methods=u.methods??[];const{shapeSvg:g,bbox:f}=await fe(t,e,r,d,l),{labelStyles:y,nodeStyles:m}=(0,o.GX)(e);e.labelStyle=y,e.cssStyles=u.styles||"";const C=u.styles?.join(";")||m||"";e.cssStyles||(e.cssStyles=C.replaceAll("!important","").split(";"));const x=0===u.members.length&&0===u.methods.length&&!r.class?.hideEmptyMembersBox,b=c.A.svg(g),k=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(k.roughness=0,k.fillStyle="solid");const w=Math.max(e.width??0,f.width);let T=Math.max(e.height??0,f.height);const S=(e.height??0)>f.height;0===u.members.length&&0===u.methods.length?T+=l:u.members.length>0&&0===u.methods.length&&(T+=2*l);const v=-w/2,B=-T/2;let _=x?2*a:0===u.members.length&&0===u.methods.length?-a:0;S&&(_=2*a);const A=b.rectangle(v-a,B-a-(x?a:0===u.members.length&&0===u.methods.length?-a/2:0),w+2*a,T+2*a+_,k),L=g.insert(()=>A,":first-child");L.attr("class","basic label-container outer-path");const F=L.node().getBBox(),M=g.select(".annotation-group").node().getBBox().height-(x?a/2:0)||0,E=g.select(".label-group").node().getBBox().height-(x?a/2:0)||0,$=g.select(".members-group").node().getBBox().height-(x?a/2:0)||0,O=(M+E+B+a-(B-a-(x?a:0===u.members.length&&0===u.methods.length?-a/2:0)))/2;if(g.selectAll(".text").each((t,e,i)=>{const o=(0,h.Ltv)(i[e]),n=o.attr("transform");let s=0;if(n){const t=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(n);t&&(s=parseFloat(t[2]))}let c=s+B+a-(x?a:0===u.members.length&&0===u.methods.length?-a/2:0);if(o.attr("class").includes("methods-group")){const t=Math.max($,l/2);c=S?Math.max(O,M+E+t+B+2*l+a)+2*l:M+E+t+B+4*l+a}0===u.members.length&&0===u.methods.length&&r.class?.hideEmptyMembersBox&&(c=u.annotations.length>0?s-l:s),d||(c-=4);let p=v;(o.attr("class").includes("label-group")||o.attr("class").includes("annotation-group"))&&(p=-o.node()?.getBBox().width/2||0,g.selectAll("text").each(function(t,e,r){"middle"===window.getComputedStyle(r[e]).textAnchor&&(p=0)})),o.attr("transform",`translate(${p}, ${c})`)}),u.members.length>0||u.methods.length>0||x){const t=M+E+B+a,r=b.line(F.x,t,F.x+F.width,t+.001,k);g.insert(()=>r).attr("class","divider"+("neo"!==e.look||n?"":" neo-line")).attr("style",C)}if(x||u.members.length>0||u.methods.length>0){const t=M+E+$+B+2*l+a,r=b.line(F.x,S?Math.max(O,t):t,F.x+F.width,(S?Math.max(O,t):t)+.001,k);g.insert(()=>r).attr("class","divider"+("neo"!==e.look||n?"":" neo-line")).attr("style",C)}if("handDrawn"!==u.look&&g.selectAll("path").attr("style",C),L.select(":nth-child(2)").attr("style",C),g.selectAll(".divider").select("path").attr("style",C),e.labelStyle?g.selectAll("span").attr("style",e.labelStyle):g.selectAll("span").attr("style",C),!d){const t=RegExp(/color\s*:\s*([^;]*)/),e=t.exec(C);if(e){const t=e[0].replace("color","fill");g.selectAll("tspan").attr("style",t)}else if(y){const e=t.exec(y);if(e){const t=e[0].replace("color","fill");g.selectAll("tspan").attr("style",t)}}}return p(e,L),e.intersect=function(t){return z.rect(e,t)},g}async function Ce(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const n=e,a=e,l="verifyMethod"in e,d=g(e),{themeVariables:u}=(0,s.D7)(),{borderColorArray:f,requirementEdgeLabelBackground:y}=u,m=t.insert("g").attr("class",d).attr("id",e.domId??e.id);let C;C=l?await xe(m,`<<${n.type}>>`,0,e.labelStyle):await xe(m,"<<Element>>",0,e.labelStyle);let x=C;const b=await xe(m,n.name,x,e.labelStyle+"; font-weight: bold;");if(x+=b+20,l){x+=await xe(m,""+(n.requirementId?`ID: ${n.requirementId}`:""),x,e.labelStyle);x+=await xe(m,""+(n.text?`Text: ${n.text}`:""),x,e.labelStyle);x+=await xe(m,""+(n.risk?`Risk: ${n.risk}`:""),x,e.labelStyle),await xe(m,""+(n.verifyMethod?`Verification: ${n.verifyMethod}`:""),x,e.labelStyle)}else{x+=await xe(m,""+(a.type?`Type: ${a.type}`:""),x,e.labelStyle),await xe(m,""+(a.docRef?`Doc Ref: ${a.docRef}`:""),x,e.labelStyle)}const k=(m.node()?.getBBox().width??200)+20,w=(m.node()?.getBBox().height??200)+20,T=-k/2,S=-w/2,v=c.A.svg(m),B=(0,o.Fr)(e,{});"handDrawn"!==e.look&&(B.roughness=0,B.fillStyle="solid");const _=v.rectangle(T,S,k,w,B),A=m.insert(()=>_,":first-child");if(A.attr("class","basic label-container outer-path").attr("style",i),f?.length){const t=e.colorIndex??0;m.attr("data-color-id","color-"+t%f.length)}if(m.selectAll(".label").each((t,e,r)=>{const i=(0,h.Ltv)(r[e]),o=i.attr("transform");let n=0,a=0;if(o){const t=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(o);t&&(n=parseFloat(t[1]),a=parseFloat(t[2]))}const s=a-w/2;let l=T+10;0!==e&&1!==e||(l=n),i.attr("transform",`translate(${l}, ${s+20})`)}),x>C+b+20){const t=S+C+b+20;let r;if("neo"===e.look){const e=.001,i=[[T,t],[T+k,t],[T+k,t+e],[T,t+e]];r=v.polygon(i,B)}else r=v.line(T,t,T+k,t,B);m.insert(()=>r).attr("class","divider")}return p(e,A),e.intersect=function(t){return z.rect(e,t)},i&&"handDrawn"!==e.look&&(y||f?.length)&&m.selectAll("path").attr("style",i),m}async function xe(t,e,r,i=""){if(""===e)return 0;const o=t.insert("g").attr("class","label").attr("style",i),l=(0,s.D7)(),c=l.htmlLabels??!0,d=await(0,n.GZ)(o,(0,s.oB)((0,a.Sm)(e)),{width:(0,a.Un)(e,l)+50,classes:"markdown-node-label",useHtmlLabels:c,style:i},l);let u;if(c){const t=d.children[0],e=(0,h.Ltv)(d);u=t.getBoundingClientRect(),e.attr("width",u.width),e.attr("height",u.height)}else{const t=d.children[0];for(const e of t.children)i&&e.setAttribute("style",i);u=d.getBBox(),u.height+=6}return o.attr("transform",`translate(${-u.width/2},${-u.height/2+r})`),u.height}(0,l.K2)(ue,"erBox"),(0,l.K2)(pe,"addText"),(0,l.K2)(ge,"lineToPolygon"),(0,l.K2)(fe,"textHelper"),(0,l.K2)(ye,"addText"),(0,l.K2)(me,"classBox"),(0,l.K2)(Ce,"requirementBox"),(0,l.K2)(xe,"addText");var be=(0,l.K2)(t=>{switch(t){case"Very High":return"red";case"High":return"orange";case"Medium":return null;case"Low":return"blue";case"Very Low":return"lightblue"}},"colorFromPriority");async function ke(t,e,{config:r}){const{labelStyles:i,nodeStyles:n}=(0,o.GX)(e);e.labelStyle=i||"";const a=e.width;e.width=(e.width??200)-10;const{shapeSvg:s,bbox:l,label:h}=await d(t,e,g(e)),f=e.padding||10;let y,m="";"ticket"in e&&e.ticket&&r?.kanban?.ticketBaseUrl&&(m=r?.kanban?.ticketBaseUrl.replace("#TICKET#",e.ticket),y=s.insert("svg:a",":first-child").attr("class","kanban-ticket-link").attr("xlink:href",m).attr("target","_blank"));const C={useHtmlLabels:e.useHtmlLabels,labelStyle:e.labelStyle||"",width:e.width,img:e.img,padding:e.padding||8,centerLabel:!1};let x,b;({label:x,bbox:b}=y?await u(y,"ticket"in e&&e.ticket||"",C):await u(s,"ticket"in e&&e.ticket||"",C));const{label:w,bbox:T}=await u(s,"assigned"in e&&e.assigned||"",C);e.width=a;const S=e?.width||0,v=Math.max(b.height,T.height)/2,B=Math.max(l.height+20,e?.height||0)+v,_=-S/2,A=-B/2;let L;h.attr("transform","translate("+(f-S/2)+", "+(-v-l.height/2)+")"),x.attr("transform","translate("+(f-S/2)+", "+(-v+l.height/2)+")"),w.attr("transform","translate("+(f+S/2-T.width-20)+", "+(-v+l.height/2)+")");const{rx:F,ry:M}=e,{cssStyles:E}=e;if("handDrawn"===e.look){const t=c.A.svg(s),r=(0,o.Fr)(e,{}),i=F||M?t.path(k(_,A,S,B,F||0),r):t.rectangle(_,A,S,B,r);L=s.insert(()=>i,":first-child"),L.attr("class","basic label-container").attr("style",E||null)}else{L=s.insert("rect",":first-child"),L.attr("class","basic label-container __APA__").attr("style",n).attr("rx",F??5).attr("ry",M??5).attr("x",_).attr("y",A).attr("width",S).attr("height",B);const t="priority"in e&&e.priority;if(t){const e=s.append("line"),r=_+2,i=A+Math.floor((F??0)/2),o=A+B-Math.floor((F??0)/2);e.attr("x1",r).attr("y1",i).attr("x2",r).attr("y2",o).attr("stroke-width","4").attr("stroke",be(t))}}return p(e,L),e.height=B,e.intersect=function(t){return z.rect(e,t)},s}async function we(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const{shapeSvg:n,bbox:s,halfPadding:h,label:u}=await d(t,e,g(e)),f=s.width+10*h,y=s.height+8*h,m=.15*f,{cssStyles:C}=e,x=s.width+20,b=s.height+20,k=Math.max(f,x),w=Math.max(y,b);let T;u.attr("transform",`translate(${-s.width/2}, ${-s.height/2})`);const S=`M0 0 \n a${m},${m} 1 0,0 ${.25*k},${-1*w*.1}\n a${m},${m} 1 0,0 ${.25*k},0\n a${m},${m} 1 0,0 ${.25*k},0\n a${m},${m} 1 0,0 ${.25*k},${.1*w}\n\n a${m},${m} 1 0,0 ${.15*k},${.33*w}\n a${.8*m},${.8*m} 1 0,0 0,${.34*w}\n a${m},${m} 1 0,0 ${-1*k*.15},${.33*w}\n\n a${m},${m} 1 0,0 ${-1*k*.25},${.15*w}\n a${m},${m} 1 0,0 ${-1*k*.25},0\n a${m},${m} 1 0,0 ${-1*k*.25},0\n a${m},${m} 1 0,0 ${-1*k*.25},${-1*w*.15}\n\n a${m},${m} 1 0,0 ${-1*k*.1},${-1*w*.33}\n a${.8*m},${.8*m} 1 0,0 0,${-1*w*.34}\n a${m},${m} 1 0,0 ${.1*k},${-1*w*.33}\n H0 V0 Z`;if("handDrawn"===e.look){const t=c.A.svg(n),r=(0,o.Fr)(e,{}),i=t.path(S,r);T=n.insert(()=>i,":first-child"),T.attr("class","basic label-container").attr("style",(0,a.KL)(C))}else T=n.insert("path",":first-child").attr("class","basic label-container").attr("style",i).attr("d",S);return T.attr("transform",`translate(${-k/2}, ${-w/2})`),p(e,T),e.calcIntersect=function(t,e){return z.rect(t,e)},e.intersect=function(t){return l.Rm.info("Bang intersect",e,t),z.rect(e,t)},n}async function Te(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const{shapeSvg:n,bbox:s,halfPadding:h,label:u}=await d(t,e,g(e)),f=s.width+2*h,y=s.height+2*h,m=.15*f,C=.25*f,x=.35*f,b=.2*f,{cssStyles:k}=e;let w;const T=`M0 0 \n a${m},${m} 0 0,1 ${.25*f},${-1*f*.1}\n a${x},${x} 1 0,1 ${.4*f},${-1*f*.1}\n a${C},${C} 1 0,1 ${.35*f},${.2*f}\n\n a${m},${m} 1 0,1 ${.15*f},${.35*y}\n a${b},${b} 1 0,1 ${-1*f*.15},${.65*y}\n\n a${C},${m} 1 0,1 ${-1*f*.25},${.15*f}\n a${x},${x} 1 0,1 ${-1*f*.5},0\n a${m},${m} 1 0,1 ${-1*f*.25},${-1*f*.15}\n\n a${m},${m} 1 0,1 ${-1*f*.1},${-1*y*.35}\n a${b},${b} 1 0,1 ${.1*f},${-1*y*.65}\n H0 V0 Z`;if("handDrawn"===e.look){const t=c.A.svg(n),r=(0,o.Fr)(e,{}),i=t.path(T,r);w=n.insert(()=>i,":first-child"),w.attr("class","basic label-container").attr("style",(0,a.KL)(k))}else w=n.insert("path",":first-child").attr("class","basic label-container").attr("style",i).attr("d",T);return u.attr("transform",`translate(${-s.width/2}, ${-s.height/2})`),w.attr("transform",`translate(${-f/2}, ${-y/2})`),p(e,w),e.calcIntersect=function(t,e){return z.rect(t,e)},e.intersect=function(t){return l.Rm.info("Cloud intersect",e,t),z.rect(e,t)},n}async function Se(t,e){const{labelStyles:r,nodeStyles:i}=(0,o.GX)(e);e.labelStyle=r;const{shapeSvg:n,bbox:a,halfPadding:s,label:l}=await d(t,e,g(e)),h=a.width+8*s,c=a.height+2*s,u="neo"===e.look?`\n M${-h/2} ${c/2-5}\n v${10-c}\n q0,-5 5,-5\n h${h-10}\n q5,0 5,5\n v${c-5}\n H${-h/2}\n Z\n `:`\n M${-h/2} ${c/2-5}\n v${10-c}\n q0,-5 5,-5\n h${h-10}\n q5,0 5,5\n v${c-10}\n q0,5 -5,5\n h${-(h-10)}\n q-5,0 -5,-5\n Z\n `;if(!e.domId)throw new Error(`defaultMindmapNode: node "${e.id}" is missing a domId \u2014 was render.ts domId prefixing skipped?`);const f=n.append("path").attr("id",e.domId).attr("class","node-bkg node-"+e.type).attr("style",i).attr("d",u);return n.append("line").attr("class","node-line-").attr("x1",-h/2).attr("y1",c/2).attr("x2",h/2).attr("y2",c/2),l.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`),n.append(()=>l.node()),p(e,f),e.calcIntersect=function(t,e){return z.rect(t,e)},e.intersect=function(t){return z.rect(e,t)},n}async function ve(t,e){return G(t,e,{padding:e.padding??0})}(0,l.K2)(ke,"kanbanItem"),(0,l.K2)(we,"bang"),(0,l.K2)(Te,"cloud"),(0,l.K2)(Se,"defaultMindmapNode"),(0,l.K2)(ve,"mindmapCircle");var Be=[{semanticName:"Process",name:"Rectangle",shortName:"rect",description:"Standard process shape",aliases:["proc","process","rectangle"],internalAliases:["squareRect"],handler:Wt},{semanticName:"Event",name:"Rounded Rectangle",shortName:"rounded",description:"Represents an event",aliases:["event"],internalAliases:["roundedRect"],handler:Kt},{semanticName:"Terminal Point",name:"Stadium",shortName:"stadium",description:"Terminal point",aliases:["terminal","pill"],handler:Ht},{semanticName:"Subprocess",name:"Framed Rectangle",shortName:"fr-rect",description:"Subprocess",aliases:["subprocess","subproc","framed-rectangle","subroutine"],handler:Xt},{semanticName:"Database",name:"Cylinder",shortName:"cyl",description:"Database storage",aliases:["db","database","cylinder"],handler:st},{semanticName:"Data Store",name:"Data Store",shortName:"datastore",description:"Data flow diagram data store",aliases:["data-store"],handler:ht},{semanticName:"Start",name:"Circle",shortName:"circle",description:"Starting point",aliases:["circ"],handler:G},{semanticName:"Bang",name:"Bang",shortName:"bang",description:"Bang",aliases:["bang"],handler:we},{semanticName:"Cloud",name:"Cloud",shortName:"cloud",description:"cloud",aliases:["cloud"],handler:Te},{semanticName:"Decision",name:"Diamond",shortName:"diam",description:"Decision-making step",aliases:["decision","diamond","question"],handler:qt},{semanticName:"Prepare Conditional",name:"Hexagon",shortName:"hex",description:"Preparation or condition step",aliases:["hexagon","prepare"],handler:mt},{semanticName:"Data Input/Output",name:"Lean Right",shortName:"lean-r",description:"Represents input or output",aliases:["lean-right","in-out"],internalAliases:["lean_right"],handler:_t},{semanticName:"Data Input/Output",name:"Lean Left",shortName:"lean-l",description:"Represents output or input",aliases:["lean-left","out-in"],internalAliases:["lean_left"],handler:Bt},{semanticName:"Priority Action",name:"Trapezoid Base Bottom",shortName:"trap-b",description:"Priority action",aliases:["priority","trapezoid-bottom","trapezoid"],handler:ie},{semanticName:"Manual Operation",name:"Trapezoid Base Top",shortName:"trap-t",description:"Represents a manual task",aliases:["manual","trapezoid-top","inv-trapezoid"],internalAliases:["inv_trapezoid"],handler:St},{semanticName:"Stop",name:"Double Circle",shortName:"dbl-circ",description:"Represents a stop point",aliases:["double-circle"],internalAliases:["doublecircle"],handler:dt},{semanticName:"Text Block",name:"Text Block",shortName:"text",description:"Text block",handler:Qt},{semanticName:"Card",name:"Notched Rectangle",shortName:"notch-rect",description:"Represents a card",aliases:["card","notched-rectangle"],handler:U},{semanticName:"Lined/Shaded Process",name:"Lined Rectangle",shortName:"lin-rect",description:"Lined process shape",aliases:["lined-rectangle","lined-process","lin-proc","shaded-process"],handler:Nt},{semanticName:"Start",name:"Small Circle",shortName:"sm-circ",description:"Small starting point",aliases:["start","small-circle"],internalAliases:["stateStart"],handler:Gt},{semanticName:"Stop",name:"Framed Circle",shortName:"fr-circ",description:"Stop point",aliases:["stop","framed-circle"],internalAliases:["stateEnd"],handler:Yt},{semanticName:"Fork/Join",name:"Filled Rectangle",shortName:"fork",description:"Fork or join in process flow",aliases:["join"],internalAliases:["forkJoin"],handler:gt},{semanticName:"Collate",name:"Hourglass",shortName:"hourglass",description:"Represents a collate operation",aliases:["hourglass","collate"],handler:Ct},{semanticName:"Comment",name:"Curly Brace",shortName:"brace",description:"Adds a comment",aliases:["comment","brace-l"],handler:Q},{semanticName:"Comment Right",name:"Curly Brace",shortName:"brace-r",description:"Adds a comment",handler:tt},{semanticName:"Comment with braces on both sides",name:"Curly Braces",shortName:"braces",description:"Adds a comment",handler:rt},{semanticName:"Com Link",name:"Lightning Bolt",shortName:"bolt",description:"Communication link",aliases:["com-link","lightning-bolt"],handler:At},{semanticName:"Document",name:"Document",shortName:"doc",description:"Represents a document",aliases:["doc","document"],handler:ae},{semanticName:"Delay",name:"Half-Rounded Rectangle",shortName:"delay",description:"Represents a delay",aliases:["half-rounded-rectangle"],handler:ft},{semanticName:"Direct Access Storage",name:"Horizontal Cylinder",shortName:"h-cyl",description:"Direct access storage",aliases:["das","horizontal-cylinder"],handler:re},{semanticName:"Disk Storage",name:"Lined Cylinder",shortName:"lin-cyl",description:"Disk storage",aliases:["disk","lined-cylinder"],handler:Et},{semanticName:"Display",name:"Curved Trapezoid",shortName:"curv-trap",description:"Represents a display",aliases:["curved-trapezoid","display"],handler:it},{semanticName:"Divided Process",name:"Divided Rectangle",shortName:"div-rect",description:"Divided process shape",aliases:["div-proc","divided-rectangle","divided-process"],handler:ct},{semanticName:"Extract",name:"Triangle",shortName:"tri",description:"Extraction process",aliases:["extract","triangle"],handler:ne},{semanticName:"Internal Storage",name:"Window Pane",shortName:"win-pane",description:"Internal storage",aliases:["internal-storage","window-pane"],handler:he},{semanticName:"Junction",name:"Filled Circle",shortName:"f-circ",description:"Junction point",aliases:["junction","filled-circle"],handler:ut},{semanticName:"Loop Limit",name:"Trapezoidal Pentagon",shortName:"notch-pent",description:"Loop limit step",aliases:["loop-limit","notched-pentagon"],handler:oe},{semanticName:"Manual File",name:"Flipped Triangle",shortName:"flip-tri",description:"Manual file operation",aliases:["manual-file","flipped-triangle"],handler:pt},{semanticName:"Manual Input",name:"Sloped Rectangle",shortName:"sl-rect",description:"Manual input step",aliases:["manual-input","sloped-rectangle"],handler:jt},{semanticName:"Multi-Document",name:"Stacked Document",shortName:"docs",description:"Multiple documents",aliases:["documents","st-doc","stacked-document"],handler:Dt},{semanticName:"Multi-Process",name:"Stacked Rectangle",shortName:"st-rect",description:"Multiple processes",aliases:["procs","processes","stacked-rectangle"],handler:Ot},{semanticName:"Stored Data",name:"Bow Tie Rectangle",shortName:"bow-rect",description:"Stored data",aliases:["stored-data","bow-tie-rectangle"],handler:W},{semanticName:"Summary",name:"Crossed Circle",shortName:"cross-circ",description:"Summary",aliases:["summary","crossed-circle"],handler:V},{semanticName:"Tagged Document",name:"Tagged Document",shortName:"tag-doc",description:"Tagged document",aliases:["tag-doc","tagged-document"],handler:Zt},{semanticName:"Tagged Process",name:"Tagged Rectangle",shortName:"tag-rect",description:"Tagged process",aliases:["tagged-rectangle","tag-proc","tagged-process"],handler:Vt},{semanticName:"Paper Tape",name:"Flag",shortName:"flag",description:"Paper tape",aliases:["paper-tape"],handler:se},{semanticName:"Odd",name:"Odd",shortName:"odd",description:"Odd shape",internalAliases:["rect_left_inv_arrow"],handler:Rt},{semanticName:"Lined Document",name:"Lined Document",shortName:"lin-doc",description:"Lined document",aliases:["lined-document"],handler:$t}],_e=(0,l.K2)(()=>{const t={state:Ut,choice:Y,note:It,rectWithTitle:zt,labelRect:vt,iconSquare:wt,iconCircle:bt,icon:xt,iconRounded:kt,imageSquare:Tt,anchor:K,kanbanItem:ke,mindmapCircle:ve,defaultMindmapNode:Se,classBox:me,erBox:ue,requirementBox:Ce},e=[...Object.entries(t),...Be.flatMap(t=>[t.shortName,..."aliases"in t?t.aliases:[],..."internalAliases"in t?t.internalAliases:[]].map(e=>[e,t.handler]))];return Object.fromEntries(e)},"generateShapeMap")();function Ae(t){return t in _e}(0,l.K2)(Ae,"isValidShape");var Le=new Map;async function Fe(t,e,r){let i,o;"rect"===e.shape&&(e.rx&&e.ry?e.shape="roundedRect":e.shape="squareRect");const n=e.shape?_e[e.shape]:void 0;if(!n)throw new Error(`No such shape: ${e.shape}. Please check your syntax.`);if(e.link){let a;"sandbox"===r.config.securityLevel?a="_top":e.linkTarget&&(a=e.linkTarget||"_blank"),i=t.insert("svg:a").attr("xlink:href",e.link).attr("target",a??null),o=await n(i,e,r)}else o=await n(t,e,r),i=o;return i.attr("data-look",(0,a.KL)(e.look)),e.tooltip&&o.attr("title",e.tooltip),Le.set(e.id,i),e.haveCallback&&i.attr("class",i.attr("class")+" clickable"),i}(0,l.K2)(Fe,"insertNode");var Me=(0,l.K2)((t,e)=>{Le.set(e.id,t)},"setNodeElem"),Ee=(0,l.K2)(()=>{Le.clear()},"clear"),$e=(0,l.K2)(t=>{const e=Le.get(t.id);l.Rm.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");const r=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+r-t.width/2)+", "+(t.y-t.height/2-8)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),r},"positionNode")},8515(t,e,r){"use strict";r.d(e,{pe:()=>A,PX:()=>it,ru:()=>tt,Un:()=>et,$t:()=>ht,Sm:()=>ut,C4:()=>dt,$C:()=>Y,rY:()=>pt,sM:()=>H,KL:()=>gt,Ib:()=>D,dq:()=>at,I5:()=>lt,yT:()=>X,vU:()=>$,_K:()=>ct,bH:()=>Q});var i=r(3706),o=r(797),n=r(6750),a=r(451);function s(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");const r=function(...i){const o=e?e.apply(this,i):i[0],n=r.cache;if(n.has(o))return n.get(o);const a=t.apply(this,i);return r.cache=n.set(o,a)||n,a},i=s.Cache||Map;return r.cache=new i,r}function l(t){return Object.getOwnPropertySymbols(t).filter(e=>Object.prototype.propertyIsEnumerable.call(t,e))}s.Cache=Map;var h=r(9125),c=r(9826),d=r(1461),u=r(7110),p=r(2796);function g(t,e,r,i=new Map,o=void 0){const n=o?.(t,e,r,i);if(void 0!==n)return n;if((0,u.s)(t))return t;if(i.has(t))return i.get(t);if(Array.isArray(t)){const e=new Array(t.length);i.set(t,e);for(let n=0;n<t.length;n++)e[n]=g(t[n],n,r,i,o);return Object.hasOwn(t,"index")&&(e.index=t.index),Object.hasOwn(t,"input")&&(e.input=t.input),e}if(t instanceof Date)return new Date(t.getTime());if(t instanceof RegExp){const e=new RegExp(t.source,t.flags);return e.lastIndex=t.lastIndex,e}if(t instanceof Map){const e=new Map;i.set(t,e);for(const[n,a]of t)e.set(n,g(a,n,r,i,o));return e}if(t instanceof Set){const e=new Set;i.set(t,e);for(const n of t)e.add(g(n,void 0,r,i,o));return e}if((0,d.P)(t))return t.subarray();if((0,p.i)(t)){const e=new(Object.getPrototypeOf(t).constructor)(t.length);i.set(t,e);for(let n=0;n<t.length;n++)e[n]=g(t[n],n,r,i,o);return e}if(t instanceof ArrayBuffer||"undefined"!=typeof SharedArrayBuffer&&t instanceof SharedArrayBuffer)return t.slice(0);if(t instanceof DataView){const e=new DataView(t.buffer.slice(0),t.byteOffset,t.byteLength);return i.set(t,e),f(e,t,r,i,o),e}if("undefined"!=typeof File&&t instanceof File){const e=new File([t],t.name,{type:t.type});return i.set(t,e),f(e,t,r,i,o),e}if("undefined"!=typeof Blob&&t instanceof Blob){const e=new Blob([t],{type:t.type});return i.set(t,e),f(e,t,r,i,o),e}if(t instanceof Error){const e=structuredClone(t);return i.set(t,e),e.message=t.message,e.name=t.name,e.stack=t.stack,e.cause=t.cause,e.constructor=t.constructor,f(e,t,r,i,o),e}if(t instanceof Boolean){const e=new Boolean(t.valueOf());return i.set(t,e),f(e,t,r,i,o),e}if(t instanceof Number){const e=new Number(t.valueOf());return i.set(t,e),f(e,t,r,i,o),e}if(t instanceof String){const e=new String(t.valueOf());return i.set(t,e),f(e,t,r,i,o),e}if("object"==typeof t&&function(t){switch((0,h.b)(t)){case c.R_:case c.Uw:case c.cT:case c.iq:case c.$V:case c.vC:case c.ri:case c.ML:case c.XZ:case c.i1:case c._u:case c.pj:case c.kj:case c.GX:case c.Av:case c.NA:case c.OG:case c.VP:case c.Qb:case c.q:case c.x6:case c.ZR:return!0;default:return!1}}(t)){const e=Object.create(Object.getPrototypeOf(t));return i.set(t,e),f(e,t,r,i,o),e}return t}function f(t,e,r=t,i,o){const n=[...Object.keys(e),...l(e)];for(let a=0;a<n.length;a++){const s=n[a],l=Object.getOwnPropertyDescriptor(t,s);(null==l||l.writable)&&(t[s]=g(e[s],s,r,i,o))}}function y(t,e){return function(t,e){return g(t,void 0,t,new Map,e)}(t,(r,i,o,n)=>{const a=e?.(r,i,o,n);if(void 0!==a)return a;if("object"==typeof t){if((0,h.b)(t)===c.GX&&"function"!=typeof t.constructor){const e={};return n.set(t,e),f(e,t,o,n),e}switch(Object.prototype.toString.call(t)){case c.kj:case c.OG:case c.$V:{const e=new t.constructor(t?.valueOf());return f(e,t),e}case c.R_:{const e={};return f(e,t),e.length=t.length,e[Symbol.iterator]=t[Symbol.iterator],e}default:return}}})}function m(t){return y(t)}function C(t){return"__proto__"===t}var x=r(4608),b=r(3058);function k(t){return"object"==typeof t&&null!==t}function w(t){return k(t)&&(0,b.X)(t)}function T(t){if("object"!=typeof t)return!1;if(null==t)return!1;if(null===Object.getPrototypeOf(t))return!0;if("[object Object]"!==Object.prototype.toString.call(t)){const e=t[Symbol.toStringTag];if(null==e)return!1;return!!Object.getOwnPropertyDescriptor(t,Symbol.toStringTag)?.writable&&t.toString()===`[object ${e}]`}let e=t;for(;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}var S=r(9663);function v(t,e,r,i){if((0,u.s)(t)&&(t=Object(t)),null==e||"object"!=typeof e)return t;if(i.has(e))return function(t){if((0,u.s)(t))return t;if(Array.isArray(t)||(0,p.i)(t)||t instanceof ArrayBuffer||"undefined"!=typeof SharedArrayBuffer&&t instanceof SharedArrayBuffer)return t.slice(0);const e=Object.getPrototypeOf(t);if(null==e)return Object.assign(Object.create(e),t);const r=e.constructor;if(t instanceof Date||t instanceof Map||t instanceof Set)return new r(t);if(t instanceof RegExp){const e=new r(t);return e.lastIndex=t.lastIndex,e}if(t instanceof DataView)return new r(t.buffer.slice(0));if(t instanceof Error){let e;return e=t instanceof AggregateError?new r(t.errors,t.message,{cause:t.cause}):new r(t.message,{cause:t.cause}),e.stack=t.stack,Object.assign(e,t),e}if("undefined"!=typeof File&&t instanceof File)return new r([t],t.name,{type:t.type,lastModified:t.lastModified});if("object"==typeof t){const r=Object.create(e);return Object.assign(r,t)}return t}(i.get(e));if(i.set(e,t),Array.isArray(e)){e=e.slice();for(let t=0;t<e.length;t++)e[t]=e[t]??void 0}const o=[...Object.keys(e),...l(e)];for(let n=0;n<o.length;n++){const a=o[n];if(C(a))continue;let s=e[a],l=t[a];if((0,x.N)(s)&&(s={...s}),(0,x.N)(l)&&(l={...l}),(0,d.P)(s)&&(s=m(s)),Array.isArray(s))if(Array.isArray(l)){const t=[],e=Reflect.ownKeys(l);for(let r=0;r<e.length;r++){const i=e[r];t[i]=l[i]}l=t}else if(w(l)){const t=[];for(let e=0;e<l.length;e++)t[e]=l[e];l=t}else l=[];const h=r(l,s,a,t,e,i);void 0!==h?t[a]=h:Array.isArray(s)||k(l)&&k(s)&&(T(l)||T(s)||(0,S.i)(l)||(0,S.i)(s))?t[a]=v(l,s,r,i):null==l&&T(s)?t[a]=v({},s,r,i):null==l&&(0,S.i)(s)?t[a]=m(s):void 0!==l&&void 0===s||(t[a]=s)}return t}function B(){}function _(t,...e){return function(t,...e){const r=e.slice(0,-1),i=e[e.length-1];let o=t;for(let n=0;n<r.length;n++)o=v(o,r[n],i,new Map);return o}(t,...e,B)}var A="\u200b",L={curveBasis:a.qrM,curveBasisClosed:a.Yu4,curveBasisOpen:a.IA3,curveBumpX:a.Wi0,curveBumpY:a.PGM,curveBundle:a.OEq,curveCardinalClosed:a.olC,curveCardinalOpen:a.IrU,curveCardinal:a.y8u,curveCatmullRomClosed:a.Q7f,curveCatmullRomOpen:a.cVp,curveCatmullRom:a.oDi,curveLinear:a.lUB,curveLinearClosed:a.Lx9,curveMonotoneX:a.nVG,curveMonotoneY:a.uxU,curveNatural:a.Xf2,curveStep:a.GZz,curveStepAfter:a.UPb,curveStepBefore:a.dyv},F=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,M=(0,o.K2)(function(t,e){const r=E(t,/(?:init\b)|(?:initialize\b)/);let o={};if(Array.isArray(r)){const t=r.map(t=>t.args);(0,i.$i)(t),o=(0,i.hH)(o,[...t])}else o=r.args;if(!o)return;let n=(0,i.Ch)(t,e);const a="config";return void 0!==o[a]&&("flowchart-v2"===n&&(n="flowchart"),o[n]=o[a],delete o[a]),o},"detectInit"),E=(0,o.K2)(function(t,e=null){try{const r=new RegExp(`[%]{2}(?![{]${F.source})(?=[}][%]{2}).*\n`,"ig");let n;t=t.trim().replace(r,"").replace(/'/gm,'"'),o.Rm.debug(`Detecting diagram directive${null!==e?" type:"+e:""} based on the text:${t}`);const a=[];for(;null!==(n=i.DB.exec(t));)if(n.index===i.DB.lastIndex&&i.DB.lastIndex++,n&&!e||e&&n[1]?.match(e)||e&&n[2]?.match(e)){const t=n[1]?n[1]:n[2],e=n[3]?n[3].trim():n[4]?JSON.parse(n[4].trim()):null;a.push({type:t,args:e})}return 0===a.length?{type:t,args:null}:1===a.length?a[0]:a}catch(r){return o.Rm.error(`ERROR: ${r.message} - Unable to parse directive type: '${e}' based on the text: '${t}'`),{type:void 0,args:null}}},"detectDirective"),$=(0,o.K2)(function(t){return t.replace(i.DB,"")},"removeDirectives"),O=(0,o.K2)(function(t,e){for(const[r,i]of e.entries())if(i.match(t))return r;return-1},"isSubstringInArray");function D(t,e){if(!t)return e;const r=`curve${t.charAt(0).toUpperCase()+t.slice(1)}`;return L[r]??e}function I(t,e){const r=t.trim();if(r)return"loose"!==e.securityLevel?(0,n.J)(r):r}(0,o.K2)(D,"interpolateToCurve"),(0,o.K2)(I,"formatUrl");var P=(0,o.K2)((t,...e)=>{const r=t.split("."),i=r.length-1,n=r[i];let a=window;for(let s=0;s<i;s++)if(a=a[r[s]],!a)return void o.Rm.error(`Function name: ${t} not found in window`);a[n](...e)},"runFunc");function q(t,e){return t&&e?Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)):0}function R(t){let e,r=0;t.forEach(t=>{r+=q(t,e),e=t});return N(t,r/2)}function z(t){return 1===t.length?t[0]:R(t)}(0,o.K2)(q,"distance"),(0,o.K2)(R,"traverseEdge"),(0,o.K2)(z,"calcLabelPosition");var K=(0,o.K2)((t,e=2)=>{const r=Math.pow(10,e);return Math.round(t*r)/r},"roundNumber"),N=(0,o.K2)((t,e)=>{let r,i=e;for(const o of t){if(r){const t=q(o,r);if(0===t)return r;if(t<i)i-=t;else{const e=i/t;if(e<=0)return r;if(e>=1)return{x:o.x,y:o.y};if(e>0&&e<1)return{x:K((1-e)*r.x+e*o.x,5),y:K((1-e)*r.y+e*o.y,5)}}}r=o}throw new Error("Could not find a suitable point for the given distance")},"calculatePoint"),j=(0,o.K2)((t,e,r)=>{o.Rm.info(`our points ${JSON.stringify(e)}`),e[0]!==r&&(e=e.reverse());const i=N(e,25),n=t?10:5,a=Math.atan2(e[0].y-i.y,e[0].x-i.x),s={x:0,y:0};return s.x=Math.sin(a)*n+(e[0].x+i.x)/2,s.y=-Math.cos(a)*n+(e[0].y+i.y)/2,s},"calcCardinalityPosition");function W(t,e,r){const i=structuredClone(r);o.Rm.info("our points",i),"start_left"!==e&&"start_right"!==e&&i.reverse();const n=N(i,25+t),a=10+.5*t,s=Math.atan2(i[0].y-n.y,i[0].x-n.x),l={x:0,y:0};return"start_left"===e?(l.x=Math.sin(s+Math.PI)*a+(i[0].x+n.x)/2,l.y=-Math.cos(s+Math.PI)*a+(i[0].y+n.y)/2):"end_right"===e?(l.x=Math.sin(s-Math.PI)*a+(i[0].x+n.x)/2-5,l.y=-Math.cos(s-Math.PI)*a+(i[0].y+n.y)/2-5):"end_left"===e?(l.x=Math.sin(s)*a+(i[0].x+n.x)/2-5,l.y=-Math.cos(s)*a+(i[0].y+n.y)/2-5):(l.x=Math.sin(s)*a+(i[0].x+n.x)/2,l.y=-Math.cos(s)*a+(i[0].y+n.y)/2),l}function H(t){let e="",r="";for(const i of t)void 0!==i&&(i.startsWith("color:")||i.startsWith("text-align:")?r=r+i+";":e=e+i+";");return{style:e,labelStyle:r}}(0,o.K2)(W,"calcTerminalLabelPosition"),(0,o.K2)(H,"getStylesFromArray");var U=0,Y=(0,o.K2)(()=>(U++,"id-"+Math.random().toString(36).substr(2,12)+"-"+U),"generateId");function G(t){let e="";const r="0123456789abcdef";for(let i=0;i<t;i++)e+=r.charAt(Math.floor(16*Math.random()));return e}(0,o.K2)(G,"makeRandomHex");var X=(0,o.K2)(t=>G(t.length),"random"),V=(0,o.K2)(function(){return{x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0,text:""}},"getTextObj"),Z=(0,o.K2)(function(t,e){const r=e.text.replace(i.Y2.lineBreakRegex," "),[,o]=lt(e.fontSize),n=t.append("text");n.attr("x",e.x),n.attr("y",e.y),n.style("text-anchor",e.anchor),n.style("font-family",e.fontFamily),n.style("font-size",o),n.style("font-weight",e.fontWeight),n.attr("fill",e.fill),void 0!==e.class&&n.attr("class",e.class);const a=n.append("tspan");return a.attr("x",e.x+2*e.textMargin),a.attr("fill",e.fill),a.text(r),n},"drawSimpleText"),Q=s((t,e,r)=>{if(!t)return t;if(r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"<br/>"},r),i.Y2.lineBreakRegex.test(t))return t;const o=t.split(" ").filter(Boolean),n=[];let a="";return o.forEach((t,i)=>{const s=et(`${t} `,r),l=et(a,r);if(s>e){const{hyphenatedStrings:i,remainingWord:o}=J(t,e,"-",r);n.push(a,...i),a=o}else l+s>=e?(n.push(a),a=t):a=[a,t].filter(Boolean).join(" ");i+1===o.length&&n.push(a)}),n.filter(t=>""!==t).join(r.joinWith)},(t,e,r)=>`${t}${e}${r.fontSize}${r.fontWeight}${r.fontFamily}${r.joinWith}`),J=s((t,e,r="-",i)=>{i=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},i);const o=[...t],n=[];let a="";return o.forEach((t,s)=>{const l=`${a}${t}`;if(et(l,i)>=e){const t=s+1,e=o.length===t,i=`${l}${r}`;n.push(e?l:i),a=""}else a=l}),{hyphenatedStrings:n,remainingWord:a}},(t,e,r="-",i)=>`${t}${e}${r}${i.fontSize}${i.fontWeight}${i.fontFamily}`);function tt(t,e){return it(t,e).height}function et(t,e){return it(t,e).width}(0,o.K2)(tt,"calculateTextHeight"),(0,o.K2)(et,"calculateTextWidth");var rt,it=s((t,e)=>{const{fontSize:r=12,fontFamily:o="Arial",fontWeight:n=400}=e;if(!t)return{width:0,height:0};const[,s]=lt(r),l=["sans-serif",o],h=t.split(i.Y2.lineBreakRegex),c=[],d=(0,a.Ltv)("body");if(!d.remove)return{width:0,height:0,lineHeight:0};const u=d.append("svg");for(const i of l){let t=0;const e={width:0,height:0,lineHeight:0};for(const r of h){const o=V();o.text=r||A;const a=Z(u,o).style("font-size",s).style("font-weight",n).style("font-family",i),l=(a._groups||a)[0][0].getBBox();if(0===l.width&&0===l.height)throw new Error("svg element not in render tree");e.width=Math.round(Math.max(e.width,l.width)),t=Math.round(l.height),e.height+=t,e.lineHeight=Math.round(Math.max(e.lineHeight,t))}c.push(e)}u.remove();return c[isNaN(c[1].height)||isNaN(c[1].width)||isNaN(c[1].lineHeight)||c[0].height>c[1].height&&c[0].width>c[1].width&&c[0].lineHeight>c[1].lineHeight?0:1]},(t,e)=>`${t}${e.fontSize}${e.fontWeight}${e.fontFamily}`),ot=class{constructor(t=!1,e){this.count=0,this.count=e?e.length:0,this.next=t?()=>this.count++:()=>Date.now()}static{(0,o.K2)(this,"InitIDGenerator")}},nt=(0,o.K2)(function(t){return rt=rt||document.createElement("div"),t=escape(t).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),rt.innerHTML=t,unescape(rt.textContent)},"entityDecode");function at(t){return"str"in t}(0,o.K2)(at,"isDetailedError");var st=(0,o.K2)((t,e,r,i)=>{if(!i)return;const o=t.node()?.getBBox();o&&t.append("text").text(i).attr("text-anchor","middle").attr("x",o.x+o.width/2).attr("y",-r).attr("class",e)},"insertTitle"),lt=(0,o.K2)(t=>{if("number"==typeof t)return[t,t+"px"];const e=parseInt(t??"",10);return Number.isNaN(e)?[void 0,void 0]:t===String(e)?[e,t+"px"]:[e,t]},"parseFontSize");function ht(t,e){return _({},t,e)}(0,o.K2)(ht,"cleanAndMerge");var ct={assignWithDepth:i.hH,wrapLabel:Q,calculateTextHeight:tt,calculateTextWidth:et,calculateTextDimensions:it,cleanAndMerge:ht,detectInit:M,detectDirective:E,isSubstringInArray:O,interpolateToCurve:D,calcLabelPosition:z,calcCardinalityPosition:j,calcTerminalLabelPosition:W,formatUrl:I,getStylesFromArray:H,generateId:Y,random:X,runFunc:P,entityDecode:nt,insertTitle:st,isLabelCoordinateInPath:ft,parseFontSize:lt,InitIDGenerator:ot},dt=(0,o.K2)(function(t){let e=t;return e=e.replace(/style.*:\S*#.*;/g,function(t){return t.substring(0,t.length-1)}),e=e.replace(/classDef.*:\S*#.*;/g,function(t){return t.substring(0,t.length-1)}),e=e.replace(/#\w+;/g,function(t){const e=t.substring(1,t.length-1);return/^\+?\d+$/.test(e)?"\ufb02\xb0\xb0"+e+"\xb6\xdf":"\ufb02\xb0"+e+"\xb6\xdf"}),e},"encodeEntities"),ut=(0,o.K2)(function(t){return t.replace(/\ufb02\xb0\xb0/g,"&#").replace(/\ufb02\xb0/g,"&").replace(/\xb6\xdf/g,";")},"decodeEntities"),pt=(0,o.K2)((t,e,{counter:r=0,prefix:i,suffix:o},n)=>n||`${i?`${i}_`:""}${t}_${e}_${r}${o?`_${o}`:""}`,"getEdgeId");function gt(t){return t??null}function ft(t,e){const r=Math.round(t.x),i=Math.round(t.y),o=e.replace(/(\d+\.\d+)/g,t=>Math.round(parseFloat(t)).toString());return o.includes(r.toString())||o.includes(i.toString())}(0,o.K2)(gt,"handleUndefinedAttr"),(0,o.K2)(ft,"isLabelCoordinateInPath")},797(t,e,r){"use strict";r.d(e,{He:()=>h,K2:()=>n,Rm:()=>l,VA:()=>a});var i=r(4353),o=Object.defineProperty,n=(t,e)=>o(t,"name",{value:e,configurable:!0}),a=(t,e)=>{for(var r in e)o(t,r,{get:e[r],enumerable:!0})},s={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},l={trace:n((...t)=>{},"trace"),debug:n((...t)=>{},"debug"),info:n((...t)=>{},"info"),warn:n((...t)=>{},"warn"),error:n((...t)=>{},"error"),fatal:n((...t)=>{},"fatal")},h=n(function(t="fatal"){let e=s.fatal;"string"==typeof t?t.toLowerCase()in s&&(e=s[t]):"number"==typeof t&&(e=t),l.trace=()=>{},l.debug=()=>{},l.info=()=>{},l.warn=()=>{},l.error=()=>{},l.fatal=()=>{},e<=s.fatal&&(l.fatal=console.error?console.error.bind(console,c("FATAL"),"color: orange"):console.log.bind(console,"\x1b[35m",c("FATAL"))),e<=s.error&&(l.error=console.error?console.error.bind(console,c("ERROR"),"color: orange"):console.log.bind(console,"\x1b[31m",c("ERROR"))),e<=s.warn&&(l.warn=console.warn?console.warn.bind(console,c("WARN"),"color: orange"):console.log.bind(console,"\x1b[33m",c("WARN"))),e<=s.info&&(l.info=console.info?console.info.bind(console,c("INFO"),"color: lightblue"):console.log.bind(console,"\x1b[34m",c("INFO"))),e<=s.debug&&(l.debug=console.debug?console.debug.bind(console,c("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1b[32m",c("DEBUG"))),e<=s.trace&&(l.trace=console.debug?console.debug.bind(console,c("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1b[32m",c("TRACE")))},"setLogLevel"),c=n(t=>`%c${i().format("ss.SSS")} : ${t} : `,"format")},1334(t,e,r){"use strict";r.d(e,{Nq:()=>a,RI:()=>h,Wg:()=>o,hq:()=>n});var i=r(797),o=(0,i.K2)((t,e)=>{if(e)return"translate("+-t.width/2+", "+-t.height/2+")";const r=t.x??0,i=t.y??0;return"translate("+-(r+t.width/2)+", "+-(i+t.height/2)+")"},"computeLabelTransform"),n={aggregation:17.25,extension:17.25,composition:17.25,dependency:6,lollipop:13.5,arrow_point:4,arrow_barb:0,arrow_barb_neo:5.5},a={arrow_point:4,arrow_cross:12.5,arrow_circle:12.5};function s(t,e){if(void 0===t||void 0===e)return{angle:0,deltaX:0,deltaY:0};t=l(t),e=l(e);const[r,i]=[t.x,t.y],[o,n]=[e.x,e.y],a=o-r,s=n-i;return{angle:Math.atan(s/a),deltaX:a,deltaY:s}}(0,i.K2)(s,"calculateDeltaAndAngle");var l=(0,i.K2)(t=>Array.isArray(t)?{x:t[0],y:t[1]}:t,"pointTransformer"),h=(0,i.K2)(t=>({x:(0,i.K2)(function(e,r,i){let o=0;const a=l(i[0]).x<l(i[i.length-1]).x?"left":"right";if(0===r&&Object.hasOwn(n,t.arrowTypeStart)){const{angle:e,deltaX:r}=s(i[0],i[1]);o=n[t.arrowTypeStart]*Math.cos(e)*(r>=0?1:-1)}else if(r===i.length-1&&Object.hasOwn(n,t.arrowTypeEnd)){const{angle:e,deltaX:r}=s(i[i.length-1],i[i.length-2]);o=n[t.arrowTypeEnd]*Math.cos(e)*(r>=0?1:-1)}const h=Math.abs(l(e).x-l(i[i.length-1]).x),c=Math.abs(l(e).y-l(i[i.length-1]).y),d=Math.abs(l(e).x-l(i[0]).x),u=Math.abs(l(e).y-l(i[0]).y),p=n[t.arrowTypeStart],g=n[t.arrowTypeEnd];if(h<g&&h>0&&c<g){let t=g+1-h;t*="right"===a?-1:1,o-=t}if(d<p&&d>0&&u<p){let t=p+1-d;t*="right"===a?-1:1,o+=t}return l(e).x+o},"x"),y:(0,i.K2)(function(e,r,i){let o=0;const a=l(i[0]).y<l(i[i.length-1]).y?"down":"up";if(0===r&&Object.hasOwn(n,t.arrowTypeStart)){const{angle:e,deltaY:r}=s(i[0],i[1]);o=n[t.arrowTypeStart]*Math.abs(Math.sin(e))*(r>=0?1:-1)}else if(r===i.length-1&&Object.hasOwn(n,t.arrowTypeEnd)){const{angle:e,deltaY:r}=s(i[i.length-1],i[i.length-2]);o=n[t.arrowTypeEnd]*Math.abs(Math.sin(e))*(r>=0?1:-1)}const h=Math.abs(l(e).y-l(i[i.length-1]).y),c=Math.abs(l(e).x-l(i[i.length-1]).x),d=Math.abs(l(e).y-l(i[0]).y),u=Math.abs(l(e).x-l(i[0]).x),p=n[t.arrowTypeStart],g=n[t.arrowTypeEnd];if(h<g&&h>0&&c<g){let t=g+1-h;t*="up"===a?-1:1,o-=t}if(d<p&&d>0&&u<p){let t=p+1-d;t*="up"===a?-1:1,o+=t}return l(e).y+o},"y")}),"getLineFunctionsWithOffset")},3706(t,e,r){"use strict";r.d(e,{C0:()=>C,xA:()=>mt,hH:()=>v,Dl:()=>Yt,IU:()=>de,Wt:()=>ae,Y2:()=>Vt,a$:()=>Jt,KG:()=>re,sb:()=>ot,ME:()=>we,UI:()=>et,Ch:()=>b,mW:()=>x,DB:()=>y,_3:()=>nt,EJ:()=>f,m7:()=>fe,iN:()=>pe,zj:()=>ft,D7:()=>be,Gs:()=>Ae,J$:()=>T,ab:()=>me,E:()=>St,Q2:()=>pt,P$:()=>O,ID:()=>Pt,TM:()=>Tt,Wi:()=>Ut,H1:()=>vt,QO:()=>zt,Js:()=>_e,Xd:()=>k,dj:()=>Xt,cL:()=>Ct,Df:()=>it,$i:()=>rt,jZ:()=>Mt,oB:()=>Te,wZ:()=>dt,EI:()=>ge,SV:()=>ue,Nk:()=>gt,XV:()=>ke,ke:()=>ye,UU:()=>ct,ot:()=>te,mj:()=>Se,tM:()=>ne,H$:()=>V,B6:()=>ut});var i=r(797),o=r(4886),n=r(8232);const a=(t,e)=>{const r=o.A.parse(t),i={};for(const o in e)e[o]&&(i[o]=r[o]+e[o]);return(0,n.A)(t,i)};var s=r(3201);const l=(t,e,r=50)=>{const{r:i,g:n,b:a,a:l}=o.A.parse(t),{r:h,g:c,b:d,a:u}=o.A.parse(e),p=r/100,g=2*p-1,f=l-u,y=((g*f===-1?g:(g+f)/(1+g*f))+1)/2,m=1-y,C=i*y+h*m,x=n*y+c*m,b=a*y+d*m,k=l*p+u*(1-p);return(0,s.A)(C,x,b,k)},h=(t,e=100)=>{const r=o.A.parse(t);return r.r=255-r.r,r.g=255-r.g,r.b=255-r.b,l(r,t,e)};var c,d=r(5263),u=r(8041),p=r(3219),g=r(9418),f=/^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s,y=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,m=/\s*%%.*\n/gm,C=class extends Error{static{(0,i.K2)(this,"UnknownDiagramError")}constructor(t){super(t),this.name="UnknownDiagramError"}},x={},b=(0,i.K2)(function(t,e){t=t.replace(f,"").replace(y,"").replace(m,"\n");for(const[r,{detector:i}]of Object.entries(x)){if(i(t,e))return r}throw new C(`No diagram type detected matching given configuration for text: ${t}`)},"detectType"),k=(0,i.K2)((...t)=>{for(const{id:e,detector:r,loader:i}of t)w(e,r,i)},"registerLazyLoadedDiagrams"),w=(0,i.K2)((t,e,r)=>{x[t]&&i.Rm.warn(`Detector with key ${t} already exists. Overwriting.`),x[t]={detector:e,loader:r},i.Rm.debug(`Detector with key ${t} added${r?" with loader":""}`)},"addDetector"),T=(0,i.K2)(t=>x[t].loader,"getDiagramLoader"),S=(0,i.K2)((t,e,{depth:r=2,clobber:i=!1}={})=>{const o={depth:r,clobber:i};return Array.isArray(e)&&!Array.isArray(t)?(e.forEach(e=>S(t,e,o)),t):Array.isArray(e)&&Array.isArray(t)?(e.forEach(e=>{t.includes(e)||t.push(e)}),t):void 0===t||r<=0?null!=t&&"object"==typeof t&&"object"==typeof e?Object.assign(t,e):e:(void 0!==e&&"object"==typeof t&&"object"==typeof e&&Object.keys(e).forEach(o=>{"object"!=typeof e[o]||null===e[o]||void 0!==t[o]&&"object"!=typeof t[o]?(i||"object"!=typeof t[o]&&"object"!=typeof e[o])&&(t[o]=e[o]):(void 0===t[o]&&(t[o]=Array.isArray(e[o])?[]:{}),t[o]=S(t[o],e[o],{depth:r-1,clobber:i}))}),t)},"assignWithDepth"),v=S,B="#ffffff",_="#f2f2f2",A=(0,i.K2)((t,e)=>a(t,e?{s:-40,l:10}:{s:-40,l:-10}),"mkBorder"),L=class{static{(0,i.K2)(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.useGradient=!0,this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,1))"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||a(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||a(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||A(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||A(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||A(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||A(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||h(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||h(this.tertiaryColor),this.lineColor=this.lineColor||h(this.background),this.arrowheadColor=this.arrowheadColor||h(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?(0,d.A)(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||(0,d.A)(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||h(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||(0,u.A)(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.vertLineColor=this.vertLineColor||"navy",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.noteFontWeight=this.noteFontWeight||"normal",this.fontWeight=this.fontWeight||"normal",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.darkMode?(this.rowOdd=this.rowOdd||(0,d.A)(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||(0,d.A)(this.mainBkg,10)):(this.rowOdd=this.rowOdd||(0,u.A)(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||(0,u.A)(this.mainBkg,5)),this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||a(this.primaryColor,{h:30}),this.cScale4=this.cScale4||a(this.primaryColor,{h:60}),this.cScale5=this.cScale5||a(this.primaryColor,{h:90}),this.cScale6=this.cScale6||a(this.primaryColor,{h:120}),this.cScale7=this.cScale7||a(this.primaryColor,{h:150}),this.cScale8=this.cScale8||a(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||a(this.primaryColor,{h:270}),this.cScale10=this.cScale10||a(this.primaryColor,{h:300}),this.cScale11=this.cScale11||a(this.primaryColor,{h:330}),this.darkMode)for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this["cScale"+e]=(0,d.A)(this["cScale"+e],75);else for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this["cScale"+e]=(0,d.A)(this["cScale"+e],25);for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this["cScaleInv"+e]=this["cScaleInv"+e]||h(this["cScale"+e]);for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this.darkMode?this["cScalePeer"+e]=this["cScalePeer"+e]||(0,u.A)(this["cScale"+e],10):this["cScalePeer"+e]=this["cScalePeer"+e]||(0,d.A)(this["cScale"+e],10);this.scaleLabelColor=this.scaleLabelColor||this.labelTextColor;for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this["cScaleLabel"+e]=this["cScaleLabel"+e]||this.scaleLabelColor;const t=this.darkMode?-4:-1;for(let e=0;e<5;e++)this["surface"+e]=this["surface"+e]||a(this.mainBkg,{h:180,s:-15,l:t*(5+3*e)}),this["surfacePeer"+e]=this["surfacePeer"+e]||a(this.mainBkg,{h:180,s:-15,l:t*(8+3*e)});this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||this.primaryColor,this.fillType1=this.fillType1||this.secondaryColor,this.fillType2=this.fillType2||a(this.primaryColor,{h:64}),this.fillType3=this.fillType3||a(this.secondaryColor,{h:64}),this.fillType4=this.fillType4||a(this.primaryColor,{h:-64}),this.fillType5=this.fillType5||a(this.secondaryColor,{h:-64}),this.fillType6=this.fillType6||a(this.primaryColor,{h:128}),this.fillType7=this.fillType7||a(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||this.tertiaryColor,this.pie4=this.pie4||a(this.primaryColor,{l:-10}),this.pie5=this.pie5||a(this.secondaryColor,{l:-10}),this.pie6=this.pie6||a(this.tertiaryColor,{l:-10}),this.pie7=this.pie7||a(this.primaryColor,{h:60,l:-10}),this.pie8=this.pie8||a(this.primaryColor,{h:-60,l:-10}),this.pie9=this.pie9||a(this.primaryColor,{h:120,l:0}),this.pie10=this.pie10||a(this.primaryColor,{h:60,l:-20}),this.pie11=this.pie11||a(this.primaryColor,{h:-60,l:-20}),this.pie12=this.pie12||a(this.primaryColor,{h:120,l:-10}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.venn1=this.venn1??a(this.primaryColor,{l:-30}),this.venn2=this.venn2??a(this.secondaryColor,{l:-30}),this.venn3=this.venn3??a(this.tertiaryColor,{l:-30}),this.venn4=this.venn4??a(this.primaryColor,{h:60,l:-30}),this.venn5=this.venn5??a(this.primaryColor,{h:-60,l:-30}),this.venn6=this.venn6??a(this.secondaryColor,{h:60,l:-30}),this.venn7=this.venn7??a(this.primaryColor,{h:120,l:-30}),this.venn8=this.venn8??a(this.secondaryColor,{h:120,l:-30}),this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.radar={axisColor:this.radar?.axisColor||this.lineColor,axisStrokeWidth:this.radar?.axisStrokeWidth||2,axisLabelFontSize:this.radar?.axisLabelFontSize||12,curveOpacity:this.radar?.curveOpacity||.5,curveStrokeWidth:this.radar?.curveStrokeWidth||2,graticuleColor:this.radar?.graticuleColor||"#DEDEDE",graticuleStrokeWidth:this.radar?.graticuleStrokeWidth||1,graticuleOpacity:this.radar?.graticuleOpacity||.3,legendBoxSize:this.radar?.legendBoxSize||12,legendFontSize:this.radar?.legendFontSize||12},this.wardleyEvolutionColor=this.wardleyEvolutionColor||"#dc3545",this.wardley={backgroundColor:this.wardley?.backgroundColor||this.background,axisColor:this.wardley?.axisColor||this.lineColor,axisTextColor:this.wardley?.axisTextColor||this.primaryTextColor,gridColor:this.wardley?.gridColor||this.gridColor,componentFill:this.wardley?.componentFill||this.background,componentStroke:this.wardley?.componentStroke||this.lineColor,componentLabelColor:this.wardley?.componentLabelColor||this.primaryTextColor,linkStroke:this.wardley?.linkStroke||this.lineColor,evolutionStroke:this.wardley?.evolutionStroke||this.wardleyEvolutionColor,annotationStroke:this.wardley?.annotationStroke||this.lineColor,annotationTextColor:this.wardley?.annotationTextColor||this.primaryTextColor,annotationFill:this.wardley?.annotationFill||this.background},this.archEdgeColor=this.archEdgeColor||"#777",this.archEdgeArrowColor=this.archEdgeArrowColor||"#777",this.archEdgeWidth=this.archEdgeWidth||"3",this.archGroupBorderColor=this.archGroupBorderColor||"#000",this.archGroupBorderWidth=this.archGroupBorderWidth||"2px",this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||a(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||a(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||a(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||a(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||a(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||a(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||(0,p.A)(this.quadrant1Fill)?(0,u.A)(this.quadrant1Fill):(0,d.A)(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,dataLabelColor:this.xyChart?.dataLabelColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0"},this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?(0,d.A)(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||a(this.primaryColor,{h:-30}),this.git4=this.git4||a(this.primaryColor,{h:-60}),this.git5=this.git5||a(this.primaryColor,{h:-90}),this.git6=this.git6||a(this.primaryColor,{h:60}),this.git7=this.git7||a(this.primaryColor,{h:120}),this.darkMode?(this.git0=(0,u.A)(this.git0,25),this.git1=(0,u.A)(this.git1,25),this.git2=(0,u.A)(this.git2,25),this.git3=(0,u.A)(this.git3,25),this.git4=(0,u.A)(this.git4,25),this.git5=(0,u.A)(this.git5,25),this.git6=(0,u.A)(this.git6,25),this.git7=(0,u.A)(this.git7,25)):(this.git0=(0,d.A)(this.git0,25),this.git1=(0,d.A)(this.git1,25),this.git2=(0,d.A)(this.git2,25),this.git3=(0,d.A)(this.git3,25),this.git4=(0,d.A)(this.git4,25),this.git5=(0,d.A)(this.git5,25),this.git6=(0,d.A)(this.git6,25),this.git7=(0,d.A)(this.git7,25)),this.gitInv0=this.gitInv0||h(this.git0),this.gitInv1=this.gitInv1||h(this.git1),this.gitInv2=this.gitInv2||h(this.git2),this.gitInv3=this.gitInv3||h(this.git3),this.gitInv4=this.gitInv4||h(this.git4),this.gitInv5=this.gitInv5||h(this.git5),this.gitInv6=this.gitInv6||h(this.git6),this.gitInv7=this.gitInv7||h(this.git7),this.branchLabelColor=this.branchLabelColor||(this.darkMode?"black":this.labelTextColor),this.gitBranchLabel0=this.gitBranchLabel0||this.branchLabelColor,this.gitBranchLabel1=this.gitBranchLabel1||this.branchLabelColor,this.gitBranchLabel2=this.gitBranchLabel2||this.branchLabelColor,this.gitBranchLabel3=this.gitBranchLabel3||this.branchLabelColor,this.gitBranchLabel4=this.gitBranchLabel4||this.branchLabelColor,this.gitBranchLabel5=this.gitBranchLabel5||this.branchLabelColor,this.gitBranchLabel6=this.gitBranchLabel6||this.branchLabelColor,this.gitBranchLabel7=this.gitBranchLabel7||this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.emUiFill=this.emUiFill||"white",this.emUiStroke=this.emUiStroke||"#dbdada",this.emProcessorFill=this.emProcessorFill||"#edb3f6",this.emProcessorStroke=this.emProcessorStroke||"#b88cbf",this.emReadModelFill=this.emReadModelFill||"#d3f1a2",this.emReadModelStroke=this.emReadModelStroke||"#a3b732",this.emCommandFill=this.emCommandFill||"#bcd6fe",this.emCommandStroke=this.emCommandStroke||"#679ac3",this.emEventFill=this.emEventFill||"#ffb778",this.emEventStroke=this.emEventStroke||"#c19a0f",this.emSwimlaneBackgroundOdd=this.emSwimlaneBackgroundOdd||"rgb(250,250,250)",this.emSwimlaneBackgroundStroke=this.emSwimlaneBackgroundStroke||"rgb(240,240,240)",this.emArrowhead=this.emArrowhead||this.lineColor,this.emRelationStroke=this.emRelationStroke||this.lineColor,this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||B,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||_,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor}calculate(t){if("object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach(e=>{this[e]=t[e]}),this.updateColors(),e.forEach(e=>{this[e]=t[e]})}},F=(0,i.K2)(t=>{const e=new L;return e.calculate(t),e},"getThemeVariables"),M=class{static{(0,i.K2)(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=(0,u.A)(this.primaryColor,16),this.tertiaryColor=a(this.primaryColor,{h:-160}),this.primaryBorderColor=h(this.background),this.secondaryBorderColor=A(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=A(this.tertiaryColor,this.darkMode),this.primaryTextColor=h(this.primaryColor),this.secondaryTextColor=h(this.secondaryColor),this.tertiaryTextColor=h(this.tertiaryColor),this.lineColor=h(this.background),this.textColor=h(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=(0,u.A)(h("#323D47"),10),this.lineColor="calculated",this.border1="#ccc",this.border2=(0,s.A)(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.clusterBkg="#302F3D",this.sectionBkgColor=(0,d.A)("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=(0,d.A)(this.sectionBkgColor,10),this.taskBorderColor=(0,s.A)(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=(0,s.A)(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||(0,u.A)(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||(0,d.A)(this.mainBkg,10),this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd",this.useGradient=!0,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,1))",this.noteFontWeight=this.noteFontWeight||"normal",this.fontWeight=this.fontWeight||"normal"}updateColors(){this.secondBkg=(0,u.A)(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=(0,u.A)(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.actorBorder,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=(0,u.A)(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=h(this.doneTaskBkgColor),this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=a(this.primaryColor,{h:64}),this.fillType3=a(this.secondaryColor,{h:64}),this.fillType4=a(this.primaryColor,{h:-64}),this.fillType5=a(this.secondaryColor,{h:-64}),this.fillType6=a(this.primaryColor,{h:128}),this.fillType7=a(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||a(this.primaryColor,{h:30}),this.cScale4=this.cScale4||a(this.primaryColor,{h:60}),this.cScale5=this.cScale5||a(this.primaryColor,{h:90}),this.cScale6=this.cScale6||a(this.primaryColor,{h:120}),this.cScale7=this.cScale7||a(this.primaryColor,{h:150}),this.cScale8=this.cScale8||a(this.primaryColor,{h:210}),this.cScale9=this.cScale9||a(this.primaryColor,{h:270}),this.cScale10=this.cScale10||a(this.primaryColor,{h:300}),this.cScale11=this.cScale11||a(this.primaryColor,{h:330});for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleInv"+t]=this["cScaleInv"+t]||h(this["cScale"+t]);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScalePeer"+t]=this["cScalePeer"+t]||(0,u.A)(this["cScale"+t],10);for(let t=0;t<5;t++)this["surface"+t]=this["surface"+t]||a(this.mainBkg,{h:30,s:-30,l:-(4*t-10)}),this["surfacePeer"+t]=this["surfacePeer"+t]||a(this.mainBkg,{h:30,s:-30,l:-(4*t-7)});this.scaleLabelColor=this.scaleLabelColor||(this.darkMode?"black":this.labelTextColor);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleLabel"+t]=this["cScaleLabel"+t]||this.scaleLabelColor;for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["pie"+t]=this["cScale"+t];this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.mainContrastColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.mainContrastColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7";for(let t=0;t<8;t++)this["venn"+(t+1)]=this["venn"+(t+1)]??(0,u.A)(this["cScale"+t],30);this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||a(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||a(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||a(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||a(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||a(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||a(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||(0,p.A)(this.quadrant1Fill)?(0,u.A)(this.quadrant1Fill):(0,d.A)(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,dataLabelColor:this.xyChart?.dataLabelColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#3498db,#2ecc71,#e74c3c,#f1c40f,#bdc3c7,#ffffff,#34495e,#9b59b6,#1abc9c,#e67e22"},this.packet={startByteColor:this.primaryTextColor,endByteColor:this.primaryTextColor,labelColor:this.primaryTextColor,titleColor:this.primaryTextColor,blockStrokeColor:this.primaryTextColor,blockFillColor:this.background},this.radar={axisColor:this.radar?.axisColor||this.lineColor,axisStrokeWidth:this.radar?.axisStrokeWidth||2,axisLabelFontSize:this.radar?.axisLabelFontSize||12,curveOpacity:this.radar?.curveOpacity||.5,curveStrokeWidth:this.radar?.curveStrokeWidth||2,graticuleColor:this.radar?.graticuleColor||"#DEDEDE",graticuleStrokeWidth:this.radar?.graticuleStrokeWidth||1,graticuleOpacity:this.radar?.graticuleOpacity||.3,legendBoxSize:this.radar?.legendBoxSize||12,legendFontSize:this.radar?.legendFontSize||12},this.wardleyEvolutionColor=this.wardleyEvolutionColor||"#ff6b6b",this.wardley={backgroundColor:this.wardley?.backgroundColor||this.background,axisColor:this.wardley?.axisColor||this.lineColor,axisTextColor:this.wardley?.axisTextColor||this.primaryTextColor,gridColor:this.wardley?.gridColor||this.gridColor,componentFill:this.wardley?.componentFill||this.mainBkg,componentStroke:this.wardley?.componentStroke||this.lineColor,componentLabelColor:this.wardley?.componentLabelColor||this.primaryTextColor,linkStroke:this.wardley?.linkStroke||this.lineColor,evolutionStroke:this.wardley?.evolutionStroke||this.wardleyEvolutionColor,annotationStroke:this.wardley?.annotationStroke||this.lineColor,annotationTextColor:this.wardley?.annotationTextColor||this.primaryTextColor,annotationFill:this.wardley?.annotationFill||this.mainBkg},this.classText=this.primaryTextColor,this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?(0,d.A)(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=(0,u.A)(this.secondaryColor,20),this.git1=(0,u.A)(this.pie2||this.secondaryColor,20),this.git2=(0,u.A)(this.pie3||this.tertiaryColor,20),this.git3=(0,u.A)(this.pie4||a(this.primaryColor,{h:-30}),20),this.git4=(0,u.A)(this.pie5||a(this.primaryColor,{h:-60}),20),this.git5=(0,u.A)(this.pie6||a(this.primaryColor,{h:-90}),10),this.git6=(0,u.A)(this.pie7||a(this.primaryColor,{h:60}),10),this.git7=(0,u.A)(this.pie8||a(this.primaryColor,{h:120}),20),this.gitInv0=this.gitInv0||h(this.git0),this.gitInv1=this.gitInv1||h(this.git1),this.gitInv2=this.gitInv2||h(this.git2),this.gitInv3=this.gitInv3||h(this.git3),this.gitInv4=this.gitInv4||h(this.git4),this.gitInv5=this.gitInv5||h(this.git5),this.gitInv6=this.gitInv6||h(this.git6),this.gitInv7=this.gitInv7||h(this.git7),this.gitBranchLabel0=this.gitBranchLabel0||h(this.labelTextColor),this.gitBranchLabel1=this.gitBranchLabel1||this.labelTextColor,this.gitBranchLabel2=this.gitBranchLabel2||this.labelTextColor,this.gitBranchLabel3=this.gitBranchLabel3||h(this.labelTextColor),this.gitBranchLabel4=this.gitBranchLabel4||this.labelTextColor,this.gitBranchLabel5=this.gitBranchLabel5||this.labelTextColor,this.gitBranchLabel6=this.gitBranchLabel6||this.labelTextColor,this.gitBranchLabel7=this.gitBranchLabel7||this.labelTextColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.emUiFill=this.emUiFill||"#2d2d2d",this.emUiStroke=this.emUiStroke||"#555",this.emProcessorFill=this.emProcessorFill||(0,u.A)("#5a3d5c",10),this.emProcessorStroke=this.emProcessorStroke||"#8a6d8c",this.emReadModelFill=this.emReadModelFill||(0,u.A)("#3d5a2d",10),this.emReadModelStroke=this.emReadModelStroke||"#6d8c5c",this.emCommandFill=this.emCommandFill||(0,u.A)("#2d3d5a",10),this.emCommandStroke=this.emCommandStroke||"#5c6d8c",this.emEventFill=this.emEventFill||(0,u.A)("#5a452d",10),this.emEventStroke=this.emEventStroke||"#8c755c",this.emSwimlaneBackgroundOdd=this.emSwimlaneBackgroundOdd||(0,u.A)(this.background,5),this.emSwimlaneBackgroundStroke=this.emSwimlaneBackgroundStroke||(0,u.A)(this.background,12),this.emArrowhead=this.emArrowhead||this.lineColor,this.emRelationStroke=this.emRelationStroke||this.lineColor,this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||(0,u.A)(this.background,12),this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||(0,u.A)(this.background,2),this.nodeBorder=this.nodeBorder||"#999"}calculate(t){if("object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach(e=>{this[e]=t[e]}),this.updateColors(),e.forEach(e=>{this[e]=t[e]})}},E=(0,i.K2)(t=>{const e=new M;return e.calculate(t),e},"getThemeVariables"),$=class{static{(0,i.K2)(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=a(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=a(this.primaryColor,{h:-160}),this.primaryBorderColor=A(this.primaryColor,this.darkMode),this.secondaryBorderColor=A(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=A(this.tertiaryColor,this.darkMode),this.primaryTextColor=h(this.primaryColor),this.secondaryTextColor=h(this.secondaryColor),this.tertiaryTextColor=h(this.tertiaryColor),this.lineColor=h(this.background),this.textColor=h(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.primaryBorderColor=A(this.primaryColor,this.darkMode),this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="rgba(232,232,232, 0.8)",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.clusterBkg="#FBFBFF",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.vertLineColor="calculated",this.sectionBkgColor=(0,s.A)(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.vertLineColor="navy",this.noteFontWeight=this.noteFontWeight||"normal",this.fontWeight=this.fontWeight||"normal",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd="calculated",this.rowEven="calculated",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.useGradient=!1,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow="drop-shadow(1px 2px 2px rgba(185, 185, 185, 1))",this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||a(this.primaryColor,{h:30}),this.cScale4=this.cScale4||a(this.primaryColor,{h:60}),this.cScale5=this.cScale5||a(this.primaryColor,{h:90}),this.cScale6=this.cScale6||a(this.primaryColor,{h:120}),this.cScale7=this.cScale7||a(this.primaryColor,{h:150}),this.cScale8=this.cScale8||a(this.primaryColor,{h:210}),this.cScale9=this.cScale9||a(this.primaryColor,{h:270}),this.cScale10=this.cScale10||a(this.primaryColor,{h:300}),this.cScale11=this.cScale11||a(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||(0,d.A)(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||(0,d.A)(this.tertiaryColor,40);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScale"+t]=(0,d.A)(this["cScale"+t],10),this["cScalePeer"+t]=this["cScalePeer"+t]||(0,d.A)(this["cScale"+t],25);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleInv"+t]=this["cScaleInv"+t]||a(this["cScale"+t],{h:180});for(let t=0;t<5;t++)this["surface"+t]=this["surface"+t]||a(this.mainBkg,{h:30,l:-(5+5*t)}),this["surfacePeer"+t]=this["surfacePeer"+t]||a(this.mainBkg,{h:30,l:-(7+5*t)});if(this.scaleLabelColor="calculated"!==this.scaleLabelColor&&this.scaleLabelColor?this.scaleLabelColor:this.labelTextColor,"calculated"!==this.labelTextColor){this.cScaleLabel0=this.cScaleLabel0||h(this.labelTextColor),this.cScaleLabel3=this.cScaleLabel3||h(this.labelTextColor);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleLabel"+t]=this["cScaleLabel"+t]||this.labelTextColor}this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.titleColor=this.textColor,this.edgeLabelBackground=this.labelBackground,this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.signalColor=this.textColor,this.signalTextColor=this.textColor,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.actorLineColor=this.actorBorder,this.taskTextColor=this.taskTextLightColor,this.taskTextOutsideColor=this.taskTextDarkColor,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.rowOdd=this.rowOdd||(0,u.A)(this.primaryColor,75)||"#ffffff",this.rowEven=this.rowEven||(0,u.A)(this.primaryColor,1),this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.specialStateColor=this.lineColor,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=a(this.primaryColor,{h:64}),this.fillType3=a(this.secondaryColor,{h:64}),this.fillType4=a(this.primaryColor,{h:-64}),this.fillType5=a(this.secondaryColor,{h:-64}),this.fillType6=a(this.primaryColor,{h:128}),this.fillType7=a(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||a(this.tertiaryColor,{l:-40}),this.pie4=this.pie4||a(this.primaryColor,{l:-10}),this.pie5=this.pie5||a(this.secondaryColor,{l:-30}),this.pie6=this.pie6||a(this.tertiaryColor,{l:-20}),this.pie7=this.pie7||a(this.primaryColor,{h:60,l:-20}),this.pie8=this.pie8||a(this.primaryColor,{h:-60,l:-40}),this.pie9=this.pie9||a(this.primaryColor,{h:120,l:-40}),this.pie10=this.pie10||a(this.primaryColor,{h:60,l:-40}),this.pie11=this.pie11||a(this.primaryColor,{h:-90,l:-40}),this.pie12=this.pie12||a(this.primaryColor,{h:120,l:-30}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.venn1=this.venn1??a(this.primaryColor,{l:-30}),this.venn2=this.venn2??a(this.secondaryColor,{l:-30}),this.venn3=this.venn3??a(this.tertiaryColor,{l:-40}),this.venn4=this.venn4??a(this.primaryColor,{h:60,l:-30}),this.venn5=this.venn5??a(this.primaryColor,{h:-60,l:-30}),this.venn6=this.venn6??a(this.secondaryColor,{h:60,l:-30}),this.venn7=this.venn7??a(this.primaryColor,{h:120,l:-30}),this.venn8=this.venn8??a(this.secondaryColor,{h:120,l:-30}),this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||a(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||a(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||a(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||a(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||a(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||a(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||(0,p.A)(this.quadrant1Fill)?(0,u.A)(this.quadrant1Fill):(0,d.A)(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.radar={axisColor:this.radar?.axisColor||this.lineColor,axisStrokeWidth:this.radar?.axisStrokeWidth||2,axisLabelFontSize:this.radar?.axisLabelFontSize||12,curveOpacity:this.radar?.curveOpacity||.5,curveStrokeWidth:this.radar?.curveStrokeWidth||2,graticuleColor:this.radar?.graticuleColor||"#DEDEDE",graticuleStrokeWidth:this.radar?.graticuleStrokeWidth||1,graticuleOpacity:this.radar?.graticuleOpacity||.3,legendBoxSize:this.radar?.legendBoxSize||12,legendFontSize:this.radar?.legendFontSize||12},this.wardleyEvolutionColor=this.wardleyEvolutionColor||"#dc3545",this.wardley={backgroundColor:this.wardley?.backgroundColor||this.background,axisColor:this.wardley?.axisColor||this.lineColor,axisTextColor:this.wardley?.axisTextColor||this.primaryTextColor,gridColor:this.wardley?.gridColor||this.gridColor,componentFill:this.wardley?.componentFill||this.background,componentStroke:this.wardley?.componentStroke||this.lineColor,componentLabelColor:this.wardley?.componentLabelColor||this.primaryTextColor,linkStroke:this.wardley?.linkStroke||this.lineColor,evolutionStroke:this.wardley?.evolutionStroke||this.wardleyEvolutionColor,annotationStroke:this.wardley?.annotationStroke||this.lineColor,annotationTextColor:this.wardley?.annotationTextColor||this.primaryTextColor,annotationFill:this.wardley?.annotationFill||this.background},this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,dataLabelColor:this.xyChart?.dataLabelColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#ECECFF,#8493A6,#FFC3A0,#DCDDE1,#B8E994,#D1A36F,#C3CDE6,#FFB6C1,#496078,#F8F3E3"},this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||this.labelBackground,this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||a(this.primaryColor,{h:-30}),this.git4=this.git4||a(this.primaryColor,{h:-60}),this.git5=this.git5||a(this.primaryColor,{h:-90}),this.git6=this.git6||a(this.primaryColor,{h:60}),this.git7=this.git7||a(this.primaryColor,{h:120}),this.darkMode?(this.git0=(0,u.A)(this.git0,25),this.git1=(0,u.A)(this.git1,25),this.git2=(0,u.A)(this.git2,25),this.git3=(0,u.A)(this.git3,25),this.git4=(0,u.A)(this.git4,25),this.git5=(0,u.A)(this.git5,25),this.git6=(0,u.A)(this.git6,25),this.git7=(0,u.A)(this.git7,25)):(this.git0=(0,d.A)(this.git0,25),this.git1=(0,d.A)(this.git1,25),this.git2=(0,d.A)(this.git2,25),this.git3=(0,d.A)(this.git3,25),this.git4=(0,d.A)(this.git4,25),this.git5=(0,d.A)(this.git5,25),this.git6=(0,d.A)(this.git6,25),this.git7=(0,d.A)(this.git7,25)),this.gitInv0=this.gitInv0||(0,d.A)(h(this.git0),25),this.gitInv1=this.gitInv1||h(this.git1),this.gitInv2=this.gitInv2||h(this.git2),this.gitInv3=this.gitInv3||h(this.git3),this.gitInv4=this.gitInv4||h(this.git4),this.gitInv5=this.gitInv5||h(this.git5),this.gitInv6=this.gitInv6||h(this.git6),this.gitInv7=this.gitInv7||h(this.git7),this.gitBranchLabel0=this.gitBranchLabel0||h(this.labelTextColor),this.gitBranchLabel1=this.gitBranchLabel1||this.labelTextColor,this.gitBranchLabel2=this.gitBranchLabel2||this.labelTextColor,this.gitBranchLabel3=this.gitBranchLabel3||h(this.labelTextColor),this.gitBranchLabel4=this.gitBranchLabel4||this.labelTextColor,this.gitBranchLabel5=this.gitBranchLabel5||this.labelTextColor,this.gitBranchLabel6=this.gitBranchLabel6||this.labelTextColor,this.gitBranchLabel7=this.gitBranchLabel7||this.labelTextColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.emUiFill=this.emUiFill||"white",this.emUiStroke=this.emUiStroke||"#dbdada",this.emProcessorFill=this.emProcessorFill||"#edb3f6",this.emProcessorStroke=this.emProcessorStroke||"#b88cbf",this.emReadModelFill=this.emReadModelFill||"#d3f1a2",this.emReadModelStroke=this.emReadModelStroke||"#a3b732",this.emCommandFill=this.emCommandFill||"#bcd6fe",this.emCommandStroke=this.emCommandStroke||"#679ac3",this.emEventFill=this.emEventFill||"#ffb778",this.emEventStroke=this.emEventStroke||"#c19a0f",this.emSwimlaneBackgroundOdd=this.emSwimlaneBackgroundOdd||"rgb(250,250,250)",this.emSwimlaneBackgroundStroke=this.emSwimlaneBackgroundStroke||"rgb(240,240,240)",this.emArrowhead=this.emArrowhead||this.lineColor,this.emRelationStroke=this.emRelationStroke||this.lineColor,this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||B,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||_}calculate(t){if(Object.keys(this).forEach(t=>{"calculated"===this[t]&&(this[t]=void 0)}),"object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach(e=>{this[e]=t[e]}),this.updateColors(),e.forEach(e=>{this[e]=t[e]})}},O=(0,i.K2)(t=>{const e=new $;return e.calculate(t),e},"getThemeVariables"),D=class{static{(0,i.K2)(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=(0,u.A)("#cde498",10),this.primaryBorderColor=A(this.primaryColor,this.darkMode),this.secondaryBorderColor=A(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=A(this.tertiaryColor,this.darkMode),this.primaryTextColor=h(this.primaryColor),this.secondaryTextColor=h(this.secondaryColor),this.tertiaryTextColor=h(this.primaryColor),this.lineColor=h(this.background),this.textColor=h(this.background),this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.noteFontWeight="normal",this.fontWeight="normal",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.useGradient=!0,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,0.5))"}updateColors(){this.actorBorder=(0,d.A)(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.actorLineColor=this.actorBorder,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||a(this.primaryColor,{h:30}),this.cScale4=this.cScale4||a(this.primaryColor,{h:60}),this.cScale5=this.cScale5||a(this.primaryColor,{h:90}),this.cScale6=this.cScale6||a(this.primaryColor,{h:120}),this.cScale7=this.cScale7||a(this.primaryColor,{h:150}),this.cScale8=this.cScale8||a(this.primaryColor,{h:210}),this.cScale9=this.cScale9||a(this.primaryColor,{h:270}),this.cScale10=this.cScale10||a(this.primaryColor,{h:300}),this.cScale11=this.cScale11||a(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||(0,d.A)(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||(0,d.A)(this.tertiaryColor,40);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScale"+t]=(0,d.A)(this["cScale"+t],10),this["cScalePeer"+t]=this["cScalePeer"+t]||(0,d.A)(this["cScale"+t],25);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleInv"+t]=this["cScaleInv"+t]||a(this["cScale"+t],{h:180});this.scaleLabelColor="calculated"!==this.scaleLabelColor&&this.scaleLabelColor?this.scaleLabelColor:this.labelTextColor;for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleLabel"+t]=this["cScaleLabel"+t]||this.scaleLabelColor;for(let t=0;t<5;t++)this["surface"+t]=this["surface"+t]||a(this.mainBkg,{h:30,s:-30,l:-(5+5*t)}),this["surfacePeer"+t]=this["surfacePeer"+t]||a(this.mainBkg,{h:30,s:-30,l:-(8+5*t)});this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.taskBorderColor=this.border1,this.taskTextColor=this.taskTextLightColor,this.taskTextOutsideColor=this.taskTextDarkColor,this.activeTaskBorderColor=this.taskBorderColor,this.activeTaskBkgColor=this.mainBkg,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.rowOdd=this.rowOdd||(0,u.A)(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||(0,u.A)(this.mainBkg,20),this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor=this.lineColor,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=a(this.primaryColor,{h:64}),this.fillType3=a(this.secondaryColor,{h:64}),this.fillType4=a(this.primaryColor,{h:-64}),this.fillType5=a(this.secondaryColor,{h:-64}),this.fillType6=a(this.primaryColor,{h:128}),this.fillType7=a(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||this.tertiaryColor,this.pie4=this.pie4||a(this.primaryColor,{l:-30}),this.pie5=this.pie5||a(this.secondaryColor,{l:-30}),this.pie6=this.pie6||a(this.tertiaryColor,{h:40,l:-40}),this.pie7=this.pie7||a(this.primaryColor,{h:60,l:-10}),this.pie8=this.pie8||a(this.primaryColor,{h:-60,l:-10}),this.pie9=this.pie9||a(this.primaryColor,{h:120,l:0}),this.pie10=this.pie10||a(this.primaryColor,{h:60,l:-50}),this.pie11=this.pie11||a(this.primaryColor,{h:-60,l:-50}),this.pie12=this.pie12||a(this.primaryColor,{h:120,l:-50}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.venn1=this.venn1??a(this.primaryColor,{l:-30}),this.venn2=this.venn2??a(this.secondaryColor,{l:-30}),this.venn3=this.venn3??a(this.tertiaryColor,{l:-30}),this.venn4=this.venn4??a(this.primaryColor,{h:60,l:-30}),this.venn5=this.venn5??a(this.primaryColor,{h:-60,l:-30}),this.venn6=this.venn6??a(this.secondaryColor,{h:60,l:-30}),this.venn7=this.venn7??a(this.primaryColor,{h:120,l:-30}),this.venn8=this.venn8??a(this.secondaryColor,{h:120,l:-30}),this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||a(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||a(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||a(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||a(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||a(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||a(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||(0,p.A)(this.quadrant1Fill)?(0,u.A)(this.quadrant1Fill):(0,d.A)(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.packet={startByteColor:this.primaryTextColor,endByteColor:this.primaryTextColor,labelColor:this.primaryTextColor,titleColor:this.primaryTextColor,blockStrokeColor:this.primaryTextColor,blockFillColor:this.mainBkg},this.radar={axisColor:this.radar?.axisColor||this.lineColor,axisStrokeWidth:this.radar?.axisStrokeWidth||2,axisLabelFontSize:this.radar?.axisLabelFontSize||12,curveOpacity:this.radar?.curveOpacity||.5,curveStrokeWidth:this.radar?.curveStrokeWidth||2,graticuleColor:this.radar?.graticuleColor||"#DEDEDE",graticuleStrokeWidth:this.radar?.graticuleStrokeWidth||1,graticuleOpacity:this.radar?.graticuleOpacity||.3,legendBoxSize:this.radar?.legendBoxSize||12,legendFontSize:this.radar?.legendFontSize||12},this.wardleyEvolutionColor=this.wardleyEvolutionColor||"#dc3545",this.wardley={backgroundColor:this.wardley?.backgroundColor||this.background,axisColor:this.wardley?.axisColor||this.lineColor,axisTextColor:this.wardley?.axisTextColor||this.primaryTextColor,gridColor:this.wardley?.gridColor||this.gridColor,componentFill:this.wardley?.componentFill||this.background,componentStroke:this.wardley?.componentStroke||this.lineColor,componentLabelColor:this.wardley?.componentLabelColor||this.primaryTextColor,linkStroke:this.wardley?.linkStroke||this.lineColor,evolutionStroke:this.wardley?.evolutionStroke||this.wardleyEvolutionColor,annotationStroke:this.wardley?.annotationStroke||this.lineColor,annotationTextColor:this.wardley?.annotationTextColor||this.primaryTextColor,annotationFill:this.wardley?.annotationFill||this.background},this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,dataLabelColor:this.xyChart?.dataLabelColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#CDE498,#FF6B6B,#A0D2DB,#D7BDE2,#F0F0F0,#FFC3A0,#7FD8BE,#FF9A8B,#FAF3E0,#FFF176"},this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||this.edgeLabelBackground,this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||a(this.primaryColor,{h:-30}),this.git4=this.git4||a(this.primaryColor,{h:-60}),this.git5=this.git5||a(this.primaryColor,{h:-90}),this.git6=this.git6||a(this.primaryColor,{h:60}),this.git7=this.git7||a(this.primaryColor,{h:120}),this.darkMode?(this.git0=(0,u.A)(this.git0,25),this.git1=(0,u.A)(this.git1,25),this.git2=(0,u.A)(this.git2,25),this.git3=(0,u.A)(this.git3,25),this.git4=(0,u.A)(this.git4,25),this.git5=(0,u.A)(this.git5,25),this.git6=(0,u.A)(this.git6,25),this.git7=(0,u.A)(this.git7,25)):(this.git0=(0,d.A)(this.git0,25),this.git1=(0,d.A)(this.git1,25),this.git2=(0,d.A)(this.git2,25),this.git3=(0,d.A)(this.git3,25),this.git4=(0,d.A)(this.git4,25),this.git5=(0,d.A)(this.git5,25),this.git6=(0,d.A)(this.git6,25),this.git7=(0,d.A)(this.git7,25)),this.gitInv0=this.gitInv0||h(this.git0),this.gitInv1=this.gitInv1||h(this.git1),this.gitInv2=this.gitInv2||h(this.git2),this.gitInv3=this.gitInv3||h(this.git3),this.gitInv4=this.gitInv4||h(this.git4),this.gitInv5=this.gitInv5||h(this.git5),this.gitInv6=this.gitInv6||h(this.git6),this.gitInv7=this.gitInv7||h(this.git7),this.gitBranchLabel0=this.gitBranchLabel0||h(this.labelTextColor),this.gitBranchLabel1=this.gitBranchLabel1||this.labelTextColor,this.gitBranchLabel2=this.gitBranchLabel2||this.labelTextColor,this.gitBranchLabel3=this.gitBranchLabel3||h(this.labelTextColor),this.gitBranchLabel4=this.gitBranchLabel4||this.labelTextColor,this.gitBranchLabel5=this.gitBranchLabel5||this.labelTextColor,this.gitBranchLabel6=this.gitBranchLabel6||this.labelTextColor,this.gitBranchLabel7=this.gitBranchLabel7||this.labelTextColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.emUiFill=this.emUiFill||"white",this.emUiStroke=this.emUiStroke||"#dbdada",this.emProcessorFill=this.emProcessorFill||"#edb3f6",this.emProcessorStroke=this.emProcessorStroke||"#b88cbf",this.emReadModelFill=this.emReadModelFill||"#d3f1a2",this.emReadModelStroke=this.emReadModelStroke||"#a3b732",this.emCommandFill=this.emCommandFill||"#bcd6fe",this.emCommandStroke=this.emCommandStroke||"#679ac3",this.emEventFill=this.emEventFill||"#ffb778",this.emEventStroke=this.emEventStroke||"#c19a0f",this.emSwimlaneBackgroundOdd=this.emSwimlaneBackgroundOdd||"rgb(250,250,250)",this.emSwimlaneBackgroundStroke=this.emSwimlaneBackgroundStroke||"rgb(240,240,240)",this.emArrowhead=this.emArrowhead||this.lineColor,this.emRelationStroke=this.emRelationStroke||this.lineColor,this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||B,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||_}calculate(t){if("object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach(e=>{this[e]=t[e]}),this.updateColors(),e.forEach(e=>{this[e]=t[e]})}},I=(0,i.K2)(t=>{const e=new D;return e.calculate(t),e},"getThemeVariables"),P=class{static{(0,i.K2)(this,"Theme")}constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=(0,u.A)(this.contrast,55),this.background="#ffffff",this.tertiaryColor=a(this.primaryColor,{h:-160}),this.primaryBorderColor=A(this.primaryColor,this.darkMode),this.secondaryBorderColor=A(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=A(this.tertiaryColor,this.darkMode),this.primaryTextColor=h(this.primaryColor),this.secondaryTextColor=h(this.secondaryColor),this.tertiaryTextColor=h(this.tertiaryColor),this.lineColor=h(this.background),this.textColor=h(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor=this.actorBorder,this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.vertLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.noteFontWeight="normal",this.fontWeight="normal",this.rowOdd=this.rowOdd||(0,u.A)(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||"#f4f4f4",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.useGradient=!0,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,1))"}updateColors(){this.secondBkg=(0,u.A)(this.contrast,55),this.border2=this.contrast,this.actorBorder=(0,u.A)(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.actorBorder,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleInv"+t]=this["cScaleInv"+t]||h(this["cScale"+t]);for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this.darkMode?this["cScalePeer"+t]=this["cScalePeer"+t]||(0,u.A)(this["cScale"+t],10):this["cScalePeer"+t]=this["cScalePeer"+t]||(0,d.A)(this["cScale"+t],10);this.scaleLabelColor=this.scaleLabelColor||(this.darkMode?"black":this.labelTextColor),this.cScaleLabel0=this.cScaleLabel0||this.cScale1,this.cScaleLabel2=this.cScaleLabel2||this.cScale1;for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["cScaleLabel"+t]=this["cScaleLabel"+t]||this.scaleLabelColor;for(let t=0;t<5;t++)this["surface"+t]=this["surface"+t]||a(this.mainBkg,{l:-(5+5*t)}),this["surfacePeer"+t]=this["surfacePeer"+t]||a(this.mainBkg,{l:-(8+5*t)});this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.titleColor=this.text,this.sectionBkgColor=(0,u.A)(this.contrast,30),this.sectionBkgColor2=(0,u.A)(this.contrast,30),this.taskBorderColor=(0,d.A)(this.contrast,10),this.taskBkgColor=this.contrast,this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor=this.text,this.taskTextOutsideColor=this.taskTextDarkColor,this.activeTaskBorderColor=this.taskBorderColor,this.activeTaskBkgColor=this.mainBkg,this.gridColor=(0,u.A)(this.border1,30),this.doneTaskBkgColor=this.done,this.doneTaskBorderColor=this.lineColor,this.critBkgColor=this.critical,this.critBorderColor=(0,d.A)(this.critBkgColor,10),this.todayLineColor=this.critBkgColor,this.vertLineColor=this.critBkgColor,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.transitionColor=this.transitionColor||"#000",this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f4f4f4",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.stateBorder=this.stateBorder||"#000",this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#222",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=a(this.primaryColor,{h:64}),this.fillType3=a(this.secondaryColor,{h:64}),this.fillType4=a(this.primaryColor,{h:-64}),this.fillType5=a(this.secondaryColor,{h:-64}),this.fillType6=a(this.primaryColor,{h:128}),this.fillType7=a(this.secondaryColor,{h:128});for(let t=0;t<this.THEME_COLOR_LIMIT;t++)this["pie"+t]=this["cScale"+t];this.pie12=this.pie0,this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7";for(let t=0;t<8;t++)this["venn"+(t+1)]=this["venn"+(t+1)]??this["cScale"+t];this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||a(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||a(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||a(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||a(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||a(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||a(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||(0,p.A)(this.quadrant1Fill)?(0,u.A)(this.quadrant1Fill):(0,d.A)(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,dataLabelColor:this.xyChart?.dataLabelColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#EEE,#6BB8E4,#8ACB88,#C7ACD6,#E8DCC2,#FFB2A8,#FFF380,#7E8D91,#FFD8B1,#FAF3E0"},this.radar={axisColor:this.radar?.axisColor||this.lineColor,axisStrokeWidth:this.radar?.axisStrokeWidth||2,axisLabelFontSize:this.radar?.axisLabelFontSize||12,curveOpacity:this.radar?.curveOpacity||.5,curveStrokeWidth:this.radar?.curveStrokeWidth||2,graticuleColor:this.radar?.graticuleColor||"#DEDEDE",graticuleStrokeWidth:this.radar?.graticuleStrokeWidth||1,graticuleOpacity:this.radar?.graticuleOpacity||.3,legendBoxSize:this.radar?.legendBoxSize||12,legendFontSize:this.radar?.legendFontSize||12},this.wardleyEvolutionColor=this.wardleyEvolutionColor||"#dc3545",this.wardley={backgroundColor:this.wardley?.backgroundColor||this.background,axisColor:this.wardley?.axisColor||this.lineColor,axisTextColor:this.wardley?.axisTextColor||this.primaryTextColor,gridColor:this.wardley?.gridColor||this.gridColor,componentFill:this.wardley?.componentFill||this.background,componentStroke:this.wardley?.componentStroke||this.lineColor,componentLabelColor:this.wardley?.componentLabelColor||this.primaryTextColor,linkStroke:this.wardley?.linkStroke||this.lineColor,evolutionStroke:this.wardley?.evolutionStroke||this.wardleyEvolutionColor,annotationStroke:this.wardley?.annotationStroke||this.lineColor,annotationTextColor:this.wardley?.annotationTextColor||this.primaryTextColor,annotationFill:this.wardley?.annotationFill||this.background},this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||this.edgeLabelBackground,this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=(0,d.A)(this.pie1,25)||this.primaryColor,this.git1=this.pie2||this.secondaryColor,this.git2=this.pie3||this.tertiaryColor,this.git3=this.pie4||a(this.primaryColor,{h:-30}),this.git4=this.pie5||a(this.primaryColor,{h:-60}),this.git5=this.pie6||a(this.primaryColor,{h:-90}),this.git6=this.pie7||a(this.primaryColor,{h:60}),this.git7=this.pie8||a(this.primaryColor,{h:120}),this.gitInv0=this.gitInv0||h(this.git0),this.gitInv1=this.gitInv1||h(this.git1),this.gitInv2=this.gitInv2||h(this.git2),this.gitInv3=this.gitInv3||h(this.git3),this.gitInv4=this.gitInv4||h(this.git4),this.gitInv5=this.gitInv5||h(this.git5),this.gitInv6=this.gitInv6||h(this.git6),this.gitInv7=this.gitInv7||h(this.git7),this.branchLabelColor=this.branchLabelColor||this.labelTextColor,this.gitBranchLabel0=this.branchLabelColor,this.gitBranchLabel1="white",this.gitBranchLabel2=this.branchLabelColor,this.gitBranchLabel3="white",this.gitBranchLabel4=this.branchLabelColor,this.gitBranchLabel5=this.branchLabelColor,this.gitBranchLabel6=this.branchLabelColor,this.gitBranchLabel7=this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.emUiFill=this.emUiFill||"white",this.emUiStroke=this.emUiStroke||"#dbdada",this.emProcessorFill=this.emProcessorFill||"#edb3f6",this.emProcessorStroke=this.emProcessorStroke||"#b88cbf",this.emReadModelFill=this.emReadModelFill||"#d3f1a2",this.emReadModelStroke=this.emReadModelStroke||"#a3b732",this.emCommandFill=this.emCommandFill||"#bcd6fe",this.emCommandStroke=this.emCommandStroke||"#679ac3",this.emEventFill=this.emEventFill||"#ffb778",this.emEventStroke=this.emEventStroke||"#c19a0f",this.emSwimlaneBackgroundOdd=this.emSwimlaneBackgroundOdd||"rgb(250,250,250)",this.emSwimlaneBackgroundStroke=this.emSwimlaneBackgroundStroke||"rgb(240,240,240)",this.emArrowhead=this.emArrowhead||this.lineColor,this.emRelationStroke=this.emRelationStroke||this.lineColor,this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||B,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||_}calculate(t){if("object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach(e=>{this[e]=t[e]}),this.updateColors(),e.forEach(e=>{this[e]=t[e]})}},q=(0,i.K2)(t=>{const e=new P;return e.calculate(t),e},"getThemeVariables"),R=class{static{(0,i.K2)(this,"Theme")}constructor(){this.background="#ffffff",this.primaryColor="#cccccc",this.mainBkg="#ffffff",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.radius=3,this.strokeWidth=2,this.primaryBorderColor=A(this.primaryColor,this.darkMode),this.fontFamily="arial, sans-serif",this.fontSize="14px",this.nodeBorder="#000000",this.stateBorder="#000000",this.useGradient=!0,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="drop-shadow( 0px 1px 2px rgba(0, 0, 0, 0.25));",this.tertiaryColor="#ffffff",this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.noteFontWeight="normal",this.fontWeight="normal"}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||a(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||a(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||A(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||A(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||A(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||A(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||h(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||h(this.tertiaryColor),this.lineColor=this.lineColor||h(this.background),this.arrowheadColor=this.arrowheadColor||h(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?(0,d.A)(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||(0,d.A)(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||h(this.lineColor);const t="#ECECFE",e="#E9E9F1",r=a(t,{h:180,l:5});if(this.sectionBkgColor=this.sectionBkgColor||r,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||e,this.sectionBkgColor2=this.sectionBkgColor2||t,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||t,this.activeTaskBorderColor=this.activeTaskBorderColor||t,this.activeTaskBkgColor=this.activeTaskBkgColor||(0,u.A)(t,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||t,this.cScale1=this.cScale1||e,this.cScale2=this.cScale2||r,this.cScale3=this.cScale3||a(t,{h:30}),this.cScale4=this.cScale4||a(t,{h:60}),this.cScale5=this.cScale5||a(t,{h:90}),this.cScale6=this.cScale6||a(t,{h:120}),this.cScale7=this.cScale7||a(t,{h:150}),this.cScale8=this.cScale8||a(t,{h:210,l:150}),this.cScale9=this.cScale9||a(t,{h:270}),this.cScale10=this.cScale10||a(t,{h:300}),this.cScale11=this.cScale11||a(t,{h:330}),this.darkMode)for(let o=0;o<this.THEME_COLOR_LIMIT;o++)this["cScale"+o]=(0,d.A)(this["cScale"+o],75);else for(let o=0;o<this.THEME_COLOR_LIMIT;o++)this["cScale"+o]=(0,d.A)(this["cScale"+o],25);for(let o=0;o<this.THEME_COLOR_LIMIT;o++)this["cScaleInv"+o]=this["cScaleInv"+o]||h(this["cScale"+o]);for(let o=0;o<this.THEME_COLOR_LIMIT;o++)this.darkMode?this["cScalePeer"+o]=this["cScalePeer"+o]||(0,u.A)(this["cScale"+o],10):this["cScalePeer"+o]=this["cScalePeer"+o]||(0,d.A)(this["cScale"+o],10);this.scaleLabelColor=this.scaleLabelColor||this.labelTextColor;for(let o=0;o<this.THEME_COLOR_LIMIT;o++)this["cScaleLabel"+o]=this["cScaleLabel"+o]||this.scaleLabelColor;const i=this.darkMode?-4:-1;for(let o=0;o<5;o++)this["surface"+o]=this["surface"+o]||a(this.mainBkg,{h:180,s:-15,l:i*(5+3*o)}),this["surfacePeer"+o]=this["surfacePeer"+o]||a(this.mainBkg,{h:180,s:-15,l:i*(8+3*o)});this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||t,this.fillType1=this.fillType1||e,this.fillType2=this.fillType2||a(t,{h:64}),this.fillType3=this.fillType3||a(e,{h:64}),this.fillType4=this.fillType4||a(t,{h:-64}),this.fillType5=this.fillType5||a(e,{h:-64}),this.fillType6=this.fillType6||a(t,{h:128}),this.fillType7=this.fillType7||a(e,{h:128}),this.pie1=this.pie1||t,this.pie2=this.pie2||e,this.pie3=this.pie3||r,this.pie4=this.pie4||a(t,{l:-10}),this.pie5=this.pie5||a(e,{l:-10}),this.pie6=this.pie6||a(r,{l:-10}),this.pie7=this.pie7||a(t,{h:60,l:-10}),this.pie8=this.pie8||a(t,{h:-60,l:-10}),this.pie9=this.pie9||a(t,{h:120,l:0}),this.pie10=this.pie10||a(t,{h:60,l:-20}),this.pie11=this.pie11||a(t,{h:-60,l:-20}),this.pie12=this.pie12||a(t,{h:120,l:-10}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.quadrant1Fill=this.quadrant1Fill||t,this.quadrant2Fill=this.quadrant2Fill||a(t,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||a(t,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||a(t,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||a(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||a(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||a(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||(0,p.A)(this.quadrant1Fill)?(0,u.A)(this.quadrant1Fill):(0,d.A)(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0"},this.requirementBackground=this.requirementBackground||t,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?(0,d.A)(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||t,this.git1=this.git1||e,this.git2=this.git2||r,this.git3=this.git3||a(t,{h:-30}),this.git4=this.git4||a(t,{h:-60}),this.git5=this.git5||a(t,{h:-90}),this.git6=this.git6||a(t,{h:60}),this.git7=this.git7||a(t,{h:120}),this.darkMode?(this.git0=(0,u.A)(this.git0,25),this.git1=(0,u.A)(this.git1,25),this.git2=(0,u.A)(this.git2,25),this.git3=(0,u.A)(this.git3,25),this.git4=(0,u.A)(this.git4,25),this.git5=(0,u.A)(this.git5,25),this.git6=(0,u.A)(this.git6,25),this.git7=(0,u.A)(this.git7,25)):(this.git0=(0,d.A)(this.git0,25),this.git1=(0,d.A)(this.git1,25),this.git2=(0,d.A)(this.git2,25),this.git3=(0,d.A)(this.git3,25),this.git4=(0,d.A)(this.git4,25),this.git5=(0,d.A)(this.git5,25),this.git6=(0,d.A)(this.git6,25),this.git7=(0,d.A)(this.git7,25)),this.gitInv0=this.gitInv0||h(this.git0),this.gitInv1=this.gitInv1||h(this.git1),this.gitInv2=this.gitInv2||h(this.git2),this.gitInv3=this.gitInv3||h(this.git3),this.gitInv4=this.gitInv4||h(this.git4),this.gitInv5=this.gitInv5||h(this.git5),this.gitInv6=this.gitInv6||h(this.git6),this.gitInv7=this.gitInv7||h(this.git7),this.branchLabelColor=this.branchLabelColor||(this.darkMode?"black":this.labelTextColor),this.gitBranchLabel0=this.gitBranchLabel0||this.branchLabelColor,this.gitBranchLabel1=this.gitBranchLabel1||this.branchLabelColor,this.gitBranchLabel2=this.gitBranchLabel2||this.branchLabelColor,this.gitBranchLabel3=this.gitBranchLabel3||this.branchLabelColor,this.gitBranchLabel4=this.gitBranchLabel4||this.branchLabelColor,this.gitBranchLabel5=this.gitBranchLabel5||this.branchLabelColor,this.gitBranchLabel6=this.gitBranchLabel6||this.branchLabelColor,this.gitBranchLabel7=this.gitBranchLabel7||this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||B,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||_}calculate(t){if("object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach(e=>{this[e]=t[e]}),this.updateColors(),e.forEach(e=>{this[e]=t[e]})}},z=(0,i.K2)(t=>{const e=new R;return e.calculate(t),e},"getThemeVariables"),K=class{static{(0,i.K2)(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=(0,u.A)(this.primaryColor,16),this.tertiaryColor=a(this.primaryColor,{h:-160}),this.primaryBorderColor=h(this.background),this.secondaryBorderColor=A(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=A(this.tertiaryColor,this.darkMode),this.primaryTextColor=h(this.primaryColor),this.secondaryTextColor=h(this.secondaryColor),this.tertiaryTextColor=h(this.tertiaryColor),this.mainBkg="#2a2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=(0,u.A)(h("#323D47"),10),this.border1="#ccc",this.border2=(0,s.A)(255,255,255,.25),this.arrowheadColor=h(this.background),this.fontFamily="arial, sans-serif",this.fontSize="14px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.radius=3,this.strokeWidth=1,this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily="arial, sans-serif",this.fontSize="14px",this.useGradient=!0,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,0.2))",this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.noteFontWeight="normal",this.fontWeight="normal"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||a(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||a(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||A(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||A(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||A(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||A(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||h(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||h(this.tertiaryColor),this.lineColor=this.lineColor||h(this.background),this.arrowheadColor=this.arrowheadColor||h(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.border1,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?(0,d.A)(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||(0,d.A)(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||h(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||(0,u.A)(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||a(this.primaryColor,{h:30}),this.cScale4=this.cScale4||a(this.primaryColor,{h:60}),this.cScale5=this.cScale5||a(this.primaryColor,{h:90}),this.cScale6=this.cScale6||a(this.primaryColor,{h:120}),this.cScale7=this.cScale7||a(this.primaryColor,{h:150}),this.cScale8=this.cScale8||a(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||a(this.primaryColor,{h:270}),this.cScale10=this.cScale10||a(this.primaryColor,{h:300}),this.cScale11=this.cScale11||a(this.primaryColor,{h:330}),this.darkMode)for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this["cScale"+e]=(0,d.A)(this["cScale"+e],75);else for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this["cScale"+e]=(0,d.A)(this["cScale"+e],25);for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this["cScaleInv"+e]=this["cScaleInv"+e]||h(this["cScale"+e]);for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this.darkMode?this["cScalePeer"+e]=this["cScalePeer"+e]||(0,u.A)(this["cScale"+e],10):this["cScalePeer"+e]=this["cScalePeer"+e]||(0,d.A)(this["cScale"+e],10);this.scaleLabelColor=this.scaleLabelColor||this.labelTextColor;for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this["cScaleLabel"+e]=this["cScaleLabel"+e]||this.scaleLabelColor;const t=this.darkMode?-4:-1;for(let e=0;e<5;e++)this["surface"+e]=this["surface"+e]||a(this.mainBkg,{h:180,s:-15,l:t*(5+3*e)}),this["surfacePeer"+e]=this["surfacePeer"+e]||a(this.mainBkg,{h:180,s:-15,l:t*(8+3*e)});this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||this.primaryColor,this.fillType1=this.fillType1||this.secondaryColor,this.fillType2=this.fillType2||a(this.primaryColor,{h:64}),this.fillType3=this.fillType3||a(this.secondaryColor,{h:64}),this.fillType4=this.fillType4||a(this.primaryColor,{h:-64}),this.fillType5=this.fillType5||a(this.secondaryColor,{h:-64}),this.fillType6=this.fillType6||a(this.primaryColor,{h:128}),this.fillType7=this.fillType7||a(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||this.tertiaryColor,this.pie4=this.pie4||a(this.primaryColor,{l:-10}),this.pie5=this.pie5||a(this.secondaryColor,{l:-10}),this.pie6=this.pie6||a(this.tertiaryColor,{l:-10}),this.pie7=this.pie7||a(this.primaryColor,{h:60,l:-10}),this.pie8=this.pie8||a(this.primaryColor,{h:-60,l:-10}),this.pie9=this.pie9||a(this.primaryColor,{h:120,l:0}),this.pie10=this.pie10||a(this.primaryColor,{h:60,l:-20}),this.pie11=this.pie11||a(this.primaryColor,{h:-60,l:-20}),this.pie12=this.pie12||a(this.primaryColor,{h:120,l:-10}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||a(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||a(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||a(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||a(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||a(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||a(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||(0,p.A)(this.quadrant1Fill)?(0,u.A)(this.quadrant1Fill):(0,d.A)(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0"},this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?(0,d.A)(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||"#0b0000",this.git1=this.git1||"#4d1037",this.git2=this.git2||"#3f5258",this.git3=this.git3||"#4f2f1b",this.git4=this.git4||"#6e0a0a",this.git5=this.git5||"#3b0048",this.git6=this.git6||"#995a01",this.git7=this.git7||"#154706",this.gitDarkMode=!0,this.gitDarkMode?(this.git0=(0,u.A)(this.git0,25),this.git1=(0,u.A)(this.git1,25),this.git2=(0,u.A)(this.git2,25),this.git3=(0,u.A)(this.git3,25),this.git4=(0,u.A)(this.git4,25),this.git5=(0,u.A)(this.git5,25),this.git6=(0,u.A)(this.git6,25),this.git7=(0,u.A)(this.git7,25)):(this.git0=(0,d.A)(this.git0,25),this.git1=(0,d.A)(this.git1,25),this.git2=(0,d.A)(this.git2,25),this.git3=(0,d.A)(this.git3,25),this.git4=(0,d.A)(this.git4,25),this.git5=(0,d.A)(this.git5,25),this.git6=(0,d.A)(this.git6,25),this.git7=(0,d.A)(this.git7,25)),this.gitInv0=this.gitInv0||h(this.git0),this.gitInv1=this.gitInv1||h(this.git1),this.gitInv2=this.gitInv2||h(this.git2),this.gitInv3=this.gitInv3||h(this.git3),this.gitInv4=this.gitInv4||h(this.git4),this.gitInv5=this.gitInv5||h(this.git5),this.gitInv6=this.gitInv6||h(this.git6),this.gitInv7=this.gitInv7||h(this.git7),this.branchLabelColor=this.branchLabelColor||(this.darkMode?"black":this.labelTextColor),this.gitBranchLabel0=this.gitBranchLabel0||this.branchLabelColor,this.gitBranchLabel1=this.gitBranchLabel1||this.branchLabelColor,this.gitBranchLabel2=this.gitBranchLabel2||this.branchLabelColor,this.gitBranchLabel3=this.gitBranchLabel3||this.branchLabelColor,this.gitBranchLabel4=this.gitBranchLabel4||this.branchLabelColor,this.gitBranchLabel5=this.gitBranchLabel5||this.branchLabelColor,this.gitBranchLabel6=this.gitBranchLabel6||this.branchLabelColor,this.gitBranchLabel7=this.gitBranchLabel7||this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||B,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||_}calculate(t){if("object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach(e=>{this[e]=t[e]}),this.updateColors(),e.forEach(e=>{this[e]=t[e]})}},N=(0,i.K2)(t=>{const e=new K;return e.calculate(t),e},"getThemeVariables"),j=class{static{(0,i.K2)(this,"Theme")}constructor(){this.background="#ffffff",this.primaryColor="#cccccc",this.mainBkg="#ffffff",this.noteBkgColor="#fff5ad",this.noteTextColor="#28253D",this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.primaryBorderColor=A("#28253D",this.darkMode),this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.nodeBorder="#28253D",this.stateBorder="#28253D",this.useGradient=!1,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="url(#drop-shadow)",this.nodeShadow=!0,this.tertiaryColor="#ffffff",this.clusterBkg="#F9F9FB",this.clusterBorder="#BDBCCC",this.noteBorderColor="#FACC15",this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.actorBorder="#28253D",this.filterColor="#000000"}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#28253D"),this.secondaryColor=this.secondaryColor||a(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||a(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||A(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||A(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||A(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||A(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#FEF9C3",this.noteTextColor=this.noteTextColor||"#28253D",this.secondaryTextColor=this.secondaryTextColor||h(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||h(this.tertiaryColor),this.lineColor=this.lineColor||h(this.background),this.arrowheadColor=this.arrowheadColor||h(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?(0,d.A)(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.noteFontWeight=600,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||(0,d.A)(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||h(this.lineColor);const t="#ECECFE",e="#E9E9F1",r=a(t,{h:180,l:5});this.sectionBkgColor=this.sectionBkgColor||r,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||e,this.sectionBkgColor2=this.sectionBkgColor2||t,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||t,this.activeTaskBorderColor=this.activeTaskBorderColor||t,this.activeTaskBkgColor=this.activeTaskBkgColor||(0,u.A)(t,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.compositeTitleBackground="#F9F9FB",this.altBackground="#F9F9FB",this.stateEdgeLabelBackground="#FFFFFF",this.fontWeight=600,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor;for(let o=0;o<this.THEME_COLOR_LIMIT;o++)this["cScale"+o]=this.mainBkg;if(this.darkMode)for(let o=0;o<this.THEME_COLOR_LIMIT;o++)this["cScale"+o]=(0,d.A)(this["cScale"+o],75);else for(let o=0;o<this.THEME_COLOR_LIMIT;o++)this["cScale"+o]=(0,d.A)(this["cScale"+o],25);for(let o=0;o<this.THEME_COLOR_LIMIT;o++)this["cScaleInv"+o]=this["cScaleInv"+o]||h(this["cScale"+o]);for(let o=0;o<this.THEME_COLOR_LIMIT;o++)this.darkMode?this["cScalePeer"+o]=this["cScalePeer"+o]||(0,u.A)(this["cScale"+o],10):this["cScalePeer"+o]=this["cScalePeer"+o]||(0,d.A)(this["cScale"+o],10);this.scaleLabelColor=this.scaleLabelColor||this.labelTextColor;for(let o=0;o<this.THEME_COLOR_LIMIT;o++)this["cScaleLabel"+o]=this["cScaleLabel"+o]||this.scaleLabelColor;const i=this.darkMode?-4:-1;for(let o=0;o<5;o++)this["surface"+o]=this["surface"+o]||a(this.mainBkg,{h:180,s:-15,l:i*(5+3*o)}),this["surfacePeer"+o]=this["surfacePeer"+o]||a(this.mainBkg,{h:180,s:-15,l:i*(8+3*o)});this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||t,this.fillType1=this.fillType1||e,this.fillType2=this.fillType2||a(t,{h:64}),this.fillType3=this.fillType3||a(e,{h:64}),this.fillType4=this.fillType4||a(t,{h:-64}),this.fillType5=this.fillType5||a(e,{h:-64}),this.fillType6=this.fillType6||a(t,{h:128}),this.fillType7=this.fillType7||a(e,{h:128}),this.pie1=this.pie1||t,this.pie2=this.pie2||e,this.pie3=this.pie3||r,this.pie4=this.pie4||a(t,{l:-10}),this.pie5=this.pie5||a(e,{l:-10}),this.pie6=this.pie6||a(r,{l:-10}),this.pie7=this.pie7||a(t,{h:60,l:-10}),this.pie8=this.pie8||a(t,{h:-60,l:-10}),this.pie9=this.pie9||a(t,{h:120,l:0}),this.pie10=this.pie10||a(t,{h:60,l:-20}),this.pie11=this.pie11||a(t,{h:-60,l:-20}),this.pie12=this.pie12||a(t,{h:120,l:-10}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.quadrant1Fill=this.quadrant1Fill||t,this.quadrant2Fill=this.quadrant2Fill||a(t,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||a(t,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||a(t,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||a(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||a(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||a(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||(0,p.A)(this.quadrant1Fill)?(0,u.A)(this.quadrant1Fill):(0,d.A)(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0"},this.requirementBackground=this.requirementBackground||t,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?(0,d.A)(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.requirementEdgeLabelBackground="#FFFFFF",this.git0=this.git0||t,this.git1=this.git1||e,this.git2=this.git2||r,this.git3=this.git3||a(t,{h:-30}),this.git4=this.git4||a(t,{h:-60}),this.git5=this.git5||a(t,{h:-90}),this.git6=this.git6||a(t,{h:60}),this.git7=this.git7||a(t,{h:120}),this.darkMode?(this.git0=(0,u.A)(this.git0,25),this.git1=(0,u.A)(this.git1,25),this.git2=(0,u.A)(this.git2,25),this.git3=(0,u.A)(this.git3,25),this.git4=(0,u.A)(this.git4,25),this.git5=(0,u.A)(this.git5,25),this.git6=(0,u.A)(this.git6,25),this.git7=(0,u.A)(this.git7,25)):(this.git0=(0,d.A)(this.git0,25),this.git1=(0,d.A)(this.git1,25),this.git2=(0,d.A)(this.git2,25),this.git3=(0,d.A)(this.git3,25),this.git4=(0,d.A)(this.git4,25),this.git5=(0,d.A)(this.git5,25),this.git6=(0,d.A)(this.git6,25),this.git7=(0,d.A)(this.git7,25)),this.gitInv0=this.gitInv0||h(this.git0),this.gitInv1=this.gitInv1||h(this.git1),this.gitInv2=this.gitInv2||h(this.git2),this.gitInv3=this.gitInv3||h(this.git3),this.gitInv4=this.gitInv4||h(this.git4),this.gitInv5=this.gitInv5||h(this.git5),this.gitInv6=this.gitInv6||h(this.git6),this.gitInv7=this.gitInv7||h(this.git7),this.branchLabelColor=this.branchLabelColor||(this.darkMode?"black":this.labelTextColor),this.gitBranchLabel0=this.gitBranchLabel0||this.branchLabelColor,this.gitBranchLabel1=this.gitBranchLabel1||this.branchLabelColor,this.gitBranchLabel2=this.gitBranchLabel2||this.branchLabelColor,this.gitBranchLabel3=this.gitBranchLabel3||this.branchLabelColor,this.gitBranchLabel4=this.gitBranchLabel4||this.branchLabelColor,this.gitBranchLabel5=this.gitBranchLabel5||this.branchLabelColor,this.gitBranchLabel6=this.gitBranchLabel6||this.branchLabelColor,this.gitBranchLabel7=this.gitBranchLabel7||this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.commitLineColor=this.commitLineColor??"#BDBCCC",this.erEdgeLabelBackground="#FFFFFF",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||B,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||_}calculate(t){if("object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach(e=>{this[e]=t[e]}),this.updateColors(),e.forEach(e=>{this[e]=t[e]})}},W=(0,i.K2)(t=>{const e=new j;return e.calculate(t),e},"getThemeVariables"),H=class{static{(0,i.K2)(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=(0,u.A)(this.primaryColor,16),this.tertiaryColor=a(this.primaryColor,{h:-160}),this.primaryBorderColor=h(this.background),this.secondaryBorderColor=A(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=A(this.tertiaryColor,this.darkMode),this.primaryTextColor=h(this.primaryColor),this.secondaryTextColor=h(this.secondaryColor),this.tertiaryTextColor=h(this.tertiaryColor),this.mainBkg="#111113",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=(0,u.A)(h("#323D47"),10),this.border1="#ccc",this.border2=(0,s.A)(255,255,255,.25),this.arrowheadColor=h(this.background),this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.labelBackground="#111113",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.noteBkgColor=this.noteBkgColor??"#FEF9C3",this.noteTextColor=this.noteTextColor??"#28253D",this.THEME_COLOR_LIMIT=12,this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.nodeBorder="#FFFFFF",this.stateBorder="#FFFFFF",this.useGradient=!1,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="url(#drop-shadow)",this.nodeShadow=!0,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.clusterBkg="#1E1A2E",this.clusterBorder="#BDBCCC",this.noteBorderColor="#FACC15",this.noteFontWeight=600,this.filterColor="#FFFFFF"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#FFFFFF"),this.secondaryColor=this.secondaryColor||a(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||a(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||A(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||A(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||A(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||A(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#FFFFFF",this.secondaryTextColor=this.secondaryTextColor||h(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||h(this.tertiaryColor),this.lineColor=this.lineColor||h(this.background),this.arrowheadColor=this.arrowheadColor||h(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.border1,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?(0,d.A)(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder="#FFFFFF",this.signalColor="#FFFFFF",this.labelBoxBorderColor="#BDBCCC",this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||(0,d.A)(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||h(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||(0,u.A)(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.compositeBackground="#16141F",this.altBackground="#16141F",this.compositeTitleBackground="#16141F",this.stateEdgeLabelBackground="#16141F",this.fontWeight=600,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||a(this.primaryColor,{h:30}),this.cScale4=this.cScale4||a(this.primaryColor,{h:60}),this.cScale5=this.cScale5||a(this.primaryColor,{h:90}),this.cScale6=this.cScale6||a(this.primaryColor,{h:120}),this.cScale7=this.cScale7||a(this.primaryColor,{h:150}),this.cScale8=this.cScale8||a(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||a(this.primaryColor,{h:270}),this.cScale10=this.cScale10||a(this.primaryColor,{h:300}),this.cScale11=this.cScale11||a(this.primaryColor,{h:330}),this.darkMode)for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this["cScale"+e]=(0,d.A)(this["cScale"+e],75);else for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this["cScale"+e]=(0,d.A)(this["cScale"+e],25);for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this["cScaleInv"+e]=this["cScaleInv"+e]||h(this["cScale"+e]);for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this.darkMode?this["cScalePeer"+e]=this["cScalePeer"+e]||(0,u.A)(this["cScale"+e],10):this["cScalePeer"+e]=this["cScalePeer"+e]||(0,d.A)(this["cScale"+e],10);this.scaleLabelColor=this.scaleLabelColor||this.labelTextColor;for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this["cScaleLabel"+e]=this["cScaleLabel"+e]||this.scaleLabelColor;const t=this.darkMode?-4:-1;for(let e=0;e<5;e++)this["surface"+e]=this["surface"+e]||a(this.mainBkg,{h:180,s:-15,l:t*(5+3*e)}),this["surfacePeer"+e]=this["surfacePeer"+e]||a(this.mainBkg,{h:180,s:-15,l:t*(8+3*e)});this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||this.primaryColor,this.fillType1=this.fillType1||this.secondaryColor,this.fillType2=this.fillType2||a(this.primaryColor,{h:64}),this.fillType3=this.fillType3||a(this.secondaryColor,{h:64}),this.fillType4=this.fillType4||a(this.primaryColor,{h:-64}),this.fillType5=this.fillType5||a(this.secondaryColor,{h:-64}),this.fillType6=this.fillType6||a(this.primaryColor,{h:128}),this.fillType7=this.fillType7||a(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||this.tertiaryColor,this.pie4=this.pie4||a(this.primaryColor,{l:-10}),this.pie5=this.pie5||a(this.secondaryColor,{l:-10}),this.pie6=this.pie6||a(this.tertiaryColor,{l:-10}),this.pie7=this.pie7||a(this.primaryColor,{h:60,l:-10}),this.pie8=this.pie8||a(this.primaryColor,{h:-60,l:-10}),this.pie9=this.pie9||a(this.primaryColor,{h:120,l:0}),this.pie10=this.pie10||a(this.primaryColor,{h:60,l:-20}),this.pie11=this.pie11||a(this.primaryColor,{h:-60,l:-20}),this.pie12=this.pie12||a(this.primaryColor,{h:120,l:-10}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||a(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||a(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||a(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||a(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||a(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||a(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||(0,p.A)(this.quadrant1Fill)?(0,u.A)(this.quadrant1Fill):(0,d.A)(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0"},this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?(0,d.A)(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.requirementEdgeLabelBackground="#16141F",this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||a(this.primaryColor,{h:-30}),this.git4=this.git4||a(this.primaryColor,{h:-60}),this.git5=this.git5||a(this.primaryColor,{h:-90}),this.git6=this.git6||a(this.primaryColor,{h:60}),this.git7=this.git7||a(this.primaryColor,{h:120}),this.darkMode?(this.git0=(0,u.A)(this.git0,25),this.git1=(0,u.A)(this.git1,25),this.git2=(0,u.A)(this.git2,25),this.git3=(0,u.A)(this.git3,25),this.git4=(0,u.A)(this.git4,25),this.git5=(0,u.A)(this.git5,25),this.git6=(0,u.A)(this.git6,25),this.git7=(0,u.A)(this.git7,25)):(this.git0=(0,d.A)(this.git0,25),this.git1=(0,d.A)(this.git1,25),this.git2=(0,d.A)(this.git2,25),this.git3=(0,d.A)(this.git3,25),this.git4=(0,d.A)(this.git4,25),this.git5=(0,d.A)(this.git5,25),this.git6=(0,d.A)(this.git6,25),this.git7=(0,d.A)(this.git7,25)),this.gitInv0=this.gitInv0||h(this.git0),this.gitInv1=this.gitInv1||h(this.git1),this.gitInv2=this.gitInv2||h(this.git2),this.gitInv3=this.gitInv3||h(this.git3),this.gitInv4=this.gitInv4||h(this.git4),this.gitInv5=this.gitInv5||h(this.git5),this.gitInv6=this.gitInv6||h(this.git6),this.gitInv7=this.gitInv7||h(this.git7),this.branchLabelColor=this.branchLabelColor||(this.darkMode?"black":this.labelTextColor),this.gitBranchLabel0=this.gitBranchLabel0||this.branchLabelColor,this.gitBranchLabel1=this.gitBranchLabel1||this.branchLabelColor,this.gitBranchLabel2=this.gitBranchLabel2||this.branchLabelColor,this.gitBranchLabel3=this.gitBranchLabel3||this.branchLabelColor,this.gitBranchLabel4=this.gitBranchLabel4||this.branchLabelColor,this.gitBranchLabel5=this.gitBranchLabel5||this.branchLabelColor,this.gitBranchLabel6=this.gitBranchLabel6||this.branchLabelColor,this.gitBranchLabel7=this.gitBranchLabel7||this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.commitLineColor=this.commitLineColor??"#BDBCCC",this.erEdgeLabelBackground="#16141F",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||B,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||_}calculate(t){if("object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach(e=>{this[e]=t[e]}),this.updateColors(),e.forEach(e=>{this[e]=t[e]})}},U=(0,i.K2)(t=>{const e=new H;return e.calculate(t),e},"getThemeVariables"),Y=class{static{(0,i.K2)(this,"Theme")}constructor(){this.background="#ffffff",this.primaryColor="#cccccc",this.mainBkg="#ffffff",this.noteBkgColor="#fff5ad",this.noteTextColor="#28253D",this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.primaryBorderColor=A(this.primaryColor,this.darkMode),this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.nodeBorder="#28253D",this.stateBorder="#28253D",this.useGradient=!1,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="url(#drop-shadow)",this.nodeShadow=!0,this.tertiaryColor="#ffffff",this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.actorBorder="#28253D",this.noteBorderColor="#FACC15",this.noteFontWeight=600,this.borderColorArray=["#E879F9","#2DD4BF","#FB923C","#22D3EE","#4ADE80","#A78BFA","#F87171","#FACC15","#818CF8","#A3E635 ","#38BDF8","#FB7185"],this.bkgColorArray=["#FDF4FF","#F0FDFA","#FFF7ED","#ECFEFF","#F0FDF4","#F5F3FF","#FEF2F2","#FEFCE8","#EEF2FF","#F7FEE7","#F0F9FF","#FFF1F2"],this.filterColor="#000000"}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#28253D"),this.secondaryColor=this.secondaryColor||a(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||a(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||A(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||A(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||A(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||A(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#28253D",this.secondaryTextColor=this.secondaryTextColor||h(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||h(this.tertiaryColor),this.lineColor=this.lineColor||h(this.background),this.arrowheadColor=this.arrowheadColor||h(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?(0,d.A)(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||(0,d.A)(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||h(this.lineColor);const t="#ECECFE",e="#E9E9F1",r=a(t,{h:180,l:5});this.sectionBkgColor=this.sectionBkgColor||r,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||e,this.sectionBkgColor2=this.sectionBkgColor2||t,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||t,this.activeTaskBorderColor=this.activeTaskBorderColor||t,this.activeTaskBkgColor=this.activeTaskBkgColor||(0,u.A)(t,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||"#f4a8ff",this.cScale1=this.cScale1||"#46ecd5",this.cScale2=this.cScale2||"#ffb86a",this.cScale3=this.cScale3||"#dab2ff",this.cScale4=this.cScale4||"#7bf1a8",this.cScale5=this.cScale5||"#c4b4ff",this.cScale6=this.cScale6||"#ffa2a2",this.cScale7=this.cScale7||"#ffdf20",this.cScale8=this.cScale8||"#a3b3ff",this.cScale9=this.cScale9||"#bbf451",this.cScale10=this.cScale10||"#74d4ff",this.cScale11=this.cScale11||"#ffa1ad";for(let o=0;o<this.THEME_COLOR_LIMIT;o++)this["cScaleInv"+o]=this["cScaleInv"+o]||h(this["cScale"+o]);for(let o=0;o<this.THEME_COLOR_LIMIT;o++)this.darkMode?this["cScalePeer"+o]=this["cScalePeer"+o]||(0,u.A)(this["cScale"+o],10):this["cScalePeer"+o]=this["cScalePeer"+o]||(0,d.A)(this["cScale"+o],10);this.scaleLabelColor=this.scaleLabelColor||this.labelTextColor;for(let o=0;o<this.THEME_COLOR_LIMIT;o++)this["cScaleLabel"+o]=this["cScaleLabel"+o]||this.scaleLabelColor;const i=this.darkMode?-4:-1;for(let o=0;o<5;o++)this["surface"+o]=this["surface"+o]||a(this.mainBkg,{h:180,s:-15,l:i*(5+3*o)}),this["surfacePeer"+o]=this["surfacePeer"+o]||a(this.mainBkg,{h:180,s:-15,l:i*(8+3*o)});this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||t,this.fillType1=this.fillType1||e,this.fillType2=this.fillType2||a(t,{h:64}),this.fillType3=this.fillType3||a(e,{h:64}),this.fillType4=this.fillType4||a(t,{h:-64}),this.fillType5=this.fillType5||a(e,{h:-64}),this.fillType6=this.fillType6||a(t,{h:128}),this.fillType7=this.fillType7||a(e,{h:128}),this.pie1=this.pie1||t,this.pie2=this.pie2||e,this.pie3=this.pie3||r,this.pie4=this.pie4||a(t,{l:-10}),this.pie5=this.pie5||a(e,{l:-10}),this.pie6=this.pie6||a(r,{l:-10}),this.pie7=this.pie7||a(t,{h:60,l:-10}),this.pie8=this.pie8||a(t,{h:-60,l:-10}),this.pie9=this.pie9||a(t,{h:120,l:0}),this.pie10=this.pie10||a(t,{h:60,l:-20}),this.pie11=this.pie11||a(t,{h:-60,l:-20}),this.pie12=this.pie12||a(t,{h:120,l:-10}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.quadrant1Fill=this.quadrant1Fill||t,this.quadrant2Fill=this.quadrant2Fill||a(t,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||a(t,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||a(t,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||a(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||a(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||a(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||(0,p.A)(this.quadrant1Fill)?(0,u.A)(this.quadrant1Fill):(0,d.A)(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0"},this.requirementBackground=this.requirementBackground||t,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?(0,d.A)(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||t,this.git1=this.git1||e,this.git2=this.git2||r,this.git3=this.git3||a(t,{h:-30}),this.git4=this.git4||a(t,{h:-60}),this.git5=this.git5||a(t,{h:-90}),this.git6=this.git6||a(t,{h:60}),this.git7=this.git7||a(t,{h:120}),this.darkMode?(this.git0=(0,u.A)(this.git0,25),this.git1=(0,u.A)(this.git1,25),this.git2=(0,u.A)(this.git2,25),this.git3=(0,u.A)(this.git3,25),this.git4=(0,u.A)(this.git4,25),this.git5=(0,u.A)(this.git5,25),this.git6=(0,u.A)(this.git6,25),this.git7=(0,u.A)(this.git7,25)):(this.git0=(0,d.A)(this.git0,25),this.git1=(0,d.A)(this.git1,25),this.git2=(0,d.A)(this.git2,25),this.git3=(0,d.A)(this.git3,25),this.git4=(0,d.A)(this.git4,25),this.git5=(0,d.A)(this.git5,25),this.git6=(0,d.A)(this.git6,25),this.git7=(0,d.A)(this.git7,25)),this.gitInv0=this.gitInv0||h(this.git0),this.gitInv1=this.gitInv1||h(this.git1),this.gitInv2=this.gitInv2||h(this.git2),this.gitInv3=this.gitInv3||h(this.git3),this.gitInv4=this.gitInv4||h(this.git4),this.gitInv5=this.gitInv5||h(this.git5),this.gitInv6=this.gitInv6||h(this.git6),this.gitInv7=this.gitInv7||h(this.git7),this.branchLabelColor=this.branchLabelColor||(this.darkMode?"black":this.labelTextColor),this.gitBranchLabel0=this.gitBranchLabel0||this.branchLabelColor,this.gitBranchLabel1=this.gitBranchLabel1||this.branchLabelColor,this.gitBranchLabel2=this.gitBranchLabel2||this.branchLabelColor,this.gitBranchLabel3=this.gitBranchLabel3||this.branchLabelColor,this.gitBranchLabel4=this.gitBranchLabel4||this.branchLabelColor,this.gitBranchLabel5=this.gitBranchLabel5||this.branchLabelColor,this.gitBranchLabel6=this.gitBranchLabel6||this.branchLabelColor,this.gitBranchLabel7=this.gitBranchLabel7||this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLineColor=this.commitLineColor??"#BDBCCC",this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.fontWeight=600,this.erEdgeLabelBackground="#FFFFFF",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||B,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||_}calculate(t){if("object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach(e=>{this[e]=t[e]}),this.updateColors(),e.forEach(e=>{this[e]=t[e]})}},G=(0,i.K2)(t=>{const e=new Y;return e.calculate(t),e},"getThemeVariables"),X=class{static{(0,i.K2)(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=(0,u.A)(this.primaryColor,16),this.tertiaryColor=a(this.primaryColor,{h:-160}),this.primaryBorderColor=h(this.background),this.secondaryBorderColor=A(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=A(this.tertiaryColor,this.darkMode),this.primaryTextColor=h(this.primaryColor),this.secondaryTextColor=h(this.secondaryColor),this.tertiaryTextColor=h(this.tertiaryColor),this.mainBkg="#111113",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=(0,u.A)(h("#323D47"),10),this.border1="#ccc",this.border2=(0,s.A)(255,255,255,.25),this.arrowheadColor=h(this.background),this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.labelBackground="#111113",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.noteBkgColor=this.noteBkgColor??"#FEF9C3",this.noteTextColor=this.noteTextColor??"#28253D",this.THEME_COLOR_LIMIT=12,this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.nodeBorder="#FFFFFF",this.stateBorder="#FFFFFF",this.useGradient=!1,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="url(#drop-shadow)",this.nodeShadow=!0,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.clusterBkg="#1E1A2E",this.clusterBorder="#BDBCCC",this.noteBorderColor="#FACC15",this.noteFontWeight=600,this.borderColorArray=["#E879F9","#2DD4BF","#FB923C","#22D3EE","#4ADE80","#A78BFA","#F87171","#FACC15","#818CF8","#A3E635 ","#38BDF8","#FB7185"],this.bkgColorArray=[],this.filterColor="#FFFFFF"}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#FFFFFF"),this.secondaryColor=this.secondaryColor||a(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||a(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||A(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||A(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||A(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||A(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#FFFFFF",this.secondaryTextColor=this.secondaryTextColor||h(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||h(this.tertiaryColor),this.lineColor=this.lineColor||h(this.background),this.arrowheadColor=this.arrowheadColor||h(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.border1,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?(0,d.A)(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder="#FFFFFF",this.signalColor="#FFFFFF",this.labelBoxBorderColor="#BDBCCC",this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||(0,d.A)(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||h(this.lineColor),this.rootLabelColor="#FFFFFF",this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||(0,u.A)(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||"#f4a8ff",this.cScale1=this.cScale1||"#46ecd5",this.cScale2=this.cScale2||"#ffb86a",this.cScale3=this.cScale3||"#dab2ff",this.cScale4=this.cScale4||"#7bf1a8",this.cScale5=this.cScale5||"#c4b4ff",this.cScale6=this.cScale6||"#ffa2a2",this.cScale7=this.cScale7||"#ffdf20",this.cScale8=this.cScale8||"#a3b3ff",this.cScale9=this.cScale9||"#bbf451",this.cScale10=this.cScale10||"#74d4ff",this.cScale11=this.cScale11||"#ffa1ad";for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this["cScaleInv"+e]=this["cScaleInv"+e]||h(this["cScale"+e]);for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this.darkMode?this["cScalePeer"+e]=this["cScalePeer"+e]||(0,u.A)(this["cScale"+e],10):this["cScalePeer"+e]=this["cScalePeer"+e]||(0,d.A)(this["cScale"+e],10);this.scaleLabelColor=this.scaleLabelColor||this.labelTextColor;for(let e=0;e<this.THEME_COLOR_LIMIT;e++)this["cScaleLabel"+e]=(0,d.A)(this["cScale"+e],75);const t=this.darkMode?-4:-1;for(let e=0;e<5;e++)this["surface"+e]=this["surface"+e]||a(this.mainBkg,{h:180,s:-15,l:t*(5+3*e)}),this["surfacePeer"+e]=this["surfacePeer"+e]||a(this.mainBkg,{h:180,s:-15,l:t*(8+3*e)});this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||this.primaryColor,this.fillType1=this.fillType1||this.secondaryColor,this.fillType2=this.fillType2||a(this.primaryColor,{h:64}),this.fillType3=this.fillType3||a(this.secondaryColor,{h:64}),this.fillType4=this.fillType4||a(this.primaryColor,{h:-64}),this.fillType5=this.fillType5||a(this.secondaryColor,{h:-64}),this.fillType6=this.fillType6||a(this.primaryColor,{h:128}),this.fillType7=this.fillType7||a(this.secondaryColor,{h:128}),this.pie1=this.pie1||this.primaryColor,this.pie2=this.pie2||this.secondaryColor,this.pie3=this.pie3||this.tertiaryColor,this.pie4=this.pie4||a(this.primaryColor,{l:-10}),this.pie5=this.pie5||a(this.secondaryColor,{l:-10}),this.pie6=this.pie6||a(this.tertiaryColor,{l:-10}),this.pie7=this.pie7||a(this.primaryColor,{h:60,l:-10}),this.pie8=this.pie8||a(this.primaryColor,{h:-60,l:-10}),this.pie9=this.pie9||a(this.primaryColor,{h:120,l:0}),this.pie10=this.pie10||a(this.primaryColor,{h:60,l:-20}),this.pie11=this.pie11||a(this.primaryColor,{h:-60,l:-20}),this.pie12=this.pie12||a(this.primaryColor,{h:120,l:-10}),this.pieTitleTextSize=this.pieTitleTextSize||"25px",this.pieTitleTextColor=this.pieTitleTextColor||this.taskTextDarkColor,this.pieSectionTextSize=this.pieSectionTextSize||"17px",this.pieSectionTextColor=this.pieSectionTextColor||this.textColor,this.pieLegendTextSize=this.pieLegendTextSize||"17px",this.pieLegendTextColor=this.pieLegendTextColor||this.taskTextDarkColor,this.pieStrokeColor=this.pieStrokeColor||"black",this.pieStrokeWidth=this.pieStrokeWidth||"2px",this.pieOuterStrokeWidth=this.pieOuterStrokeWidth||"2px",this.pieOuterStrokeColor=this.pieOuterStrokeColor||"black",this.pieOpacity=this.pieOpacity||"0.7",this.vennTitleTextColor=this.vennTitleTextColor??this.titleColor,this.vennSetTextColor=this.vennSetTextColor??this.textColor,this.quadrant1Fill=this.quadrant1Fill||this.primaryColor,this.quadrant2Fill=this.quadrant2Fill||a(this.primaryColor,{r:5,g:5,b:5}),this.quadrant3Fill=this.quadrant3Fill||a(this.primaryColor,{r:10,g:10,b:10}),this.quadrant4Fill=this.quadrant4Fill||a(this.primaryColor,{r:15,g:15,b:15}),this.quadrant1TextFill=this.quadrant1TextFill||this.primaryTextColor,this.quadrant2TextFill=this.quadrant2TextFill||a(this.primaryTextColor,{r:-5,g:-5,b:-5}),this.quadrant3TextFill=this.quadrant3TextFill||a(this.primaryTextColor,{r:-10,g:-10,b:-10}),this.quadrant4TextFill=this.quadrant4TextFill||a(this.primaryTextColor,{r:-15,g:-15,b:-15}),this.quadrantPointFill=this.quadrantPointFill||(0,p.A)(this.quadrant1Fill)?(0,u.A)(this.quadrant1Fill):(0,d.A)(this.quadrant1Fill),this.quadrantPointTextFill=this.quadrantPointTextFill||this.primaryTextColor,this.quadrantXAxisTextFill=this.quadrantXAxisTextFill||this.primaryTextColor,this.quadrantYAxisTextFill=this.quadrantYAxisTextFill||this.primaryTextColor,this.quadrantInternalBorderStrokeFill=this.quadrantInternalBorderStrokeFill||this.primaryBorderColor,this.quadrantExternalBorderStrokeFill=this.quadrantExternalBorderStrokeFill||this.primaryBorderColor,this.quadrantTitleFill=this.quadrantTitleFill||this.primaryTextColor,this.xyChart={backgroundColor:this.xyChart?.backgroundColor||this.background,titleColor:this.xyChart?.titleColor||this.primaryTextColor,xAxisTitleColor:this.xyChart?.xAxisTitleColor||this.primaryTextColor,xAxisLabelColor:this.xyChart?.xAxisLabelColor||this.primaryTextColor,xAxisTickColor:this.xyChart?.xAxisTickColor||this.primaryTextColor,xAxisLineColor:this.xyChart?.xAxisLineColor||this.primaryTextColor,yAxisTitleColor:this.xyChart?.yAxisTitleColor||this.primaryTextColor,yAxisLabelColor:this.xyChart?.yAxisLabelColor||this.primaryTextColor,yAxisTickColor:this.xyChart?.yAxisTickColor||this.primaryTextColor,yAxisLineColor:this.xyChart?.yAxisLineColor||this.primaryTextColor,plotColorPalette:this.xyChart?.plotColorPalette||"#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0"},this.requirementBackground=this.requirementBackground||this.primaryColor,this.requirementBorderColor=this.requirementBorderColor||this.primaryBorderColor,this.requirementBorderSize=this.requirementBorderSize||"1",this.requirementTextColor=this.requirementTextColor||this.primaryTextColor,this.relationColor=this.relationColor||this.lineColor,this.relationLabelBackground=this.relationLabelBackground||(this.darkMode?(0,d.A)(this.secondaryColor,30):this.secondaryColor),this.relationLabelColor=this.relationLabelColor||this.actorTextColor,this.git0=this.git0||this.primaryColor,this.git1=this.git1||this.secondaryColor,this.git2=this.git2||this.tertiaryColor,this.git3=this.git3||a(this.primaryColor,{h:-30}),this.git4=this.git4||a(this.primaryColor,{h:-60}),this.git5=this.git5||a(this.primaryColor,{h:-90}),this.git6=this.git6||a(this.primaryColor,{h:60}),this.git7=this.git7||a(this.primaryColor,{h:120}),this.darkMode?(this.git0=(0,u.A)(this.git0,25),this.git1=(0,u.A)(this.git1,25),this.git2=(0,u.A)(this.git2,25),this.git3=(0,u.A)(this.git3,25),this.git4=(0,u.A)(this.git4,25),this.git5=(0,u.A)(this.git5,25),this.git6=(0,u.A)(this.git6,25),this.git7=(0,u.A)(this.git7,25)):(this.git0=(0,d.A)(this.git0,25),this.git1=(0,d.A)(this.git1,25),this.git2=(0,d.A)(this.git2,25),this.git3=(0,d.A)(this.git3,25),this.git4=(0,d.A)(this.git4,25),this.git5=(0,d.A)(this.git5,25),this.git6=(0,d.A)(this.git6,25),this.git7=(0,d.A)(this.git7,25)),this.gitInv0=this.gitInv0||h(this.git0),this.gitInv1=this.gitInv1||h(this.git1),this.gitInv2=this.gitInv2||h(this.git2),this.gitInv3=this.gitInv3||h(this.git3),this.gitInv4=this.gitInv4||h(this.git4),this.gitInv5=this.gitInv5||h(this.git5),this.gitInv6=this.gitInv6||h(this.git6),this.gitInv7=this.gitInv7||h(this.git7),this.branchLabelColor=this.branchLabelColor||(this.darkMode?"black":this.labelTextColor),this.gitBranchLabel0=this.gitBranchLabel0||this.branchLabelColor,this.gitBranchLabel1=this.gitBranchLabel1||this.branchLabelColor,this.gitBranchLabel2=this.gitBranchLabel2||this.branchLabelColor,this.gitBranchLabel3=this.gitBranchLabel3||this.branchLabelColor,this.gitBranchLabel4=this.gitBranchLabel4||this.branchLabelColor,this.gitBranchLabel5=this.gitBranchLabel5||this.branchLabelColor,this.gitBranchLabel6=this.gitBranchLabel6||this.branchLabelColor,this.gitBranchLabel7=this.gitBranchLabel7||this.branchLabelColor,this.tagLabelColor=this.tagLabelColor||this.primaryTextColor,this.tagLabelBackground=this.tagLabelBackground||this.primaryColor,this.tagLabelBorder=this.tagBorder||this.primaryBorderColor,this.tagLabelFontSize=this.tagLabelFontSize||"10px",this.commitLabelColor=this.commitLabelColor||this.secondaryTextColor,this.commitLabelBackground=this.commitLabelBackground||this.secondaryColor,this.commitLabelFontSize=this.commitLabelFontSize||"10px",this.commitLineColor=this.commitLineColor??"#BDBCCC",this.fontWeight=600,this.erEdgeLabelBackground="#16141F",this.attributeBackgroundColorOdd=this.attributeBackgroundColorOdd||B,this.attributeBackgroundColorEven=this.attributeBackgroundColorEven||_}calculate(t){if("object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach(e=>{this[e]=t[e]}),this.updateColors(),e.forEach(e=>{this[e]=t[e]})}},V={base:{getThemeVariables:F},dark:{getThemeVariables:E},default:{getThemeVariables:O},forest:{getThemeVariables:I},neutral:{getThemeVariables:q},neo:{getThemeVariables:z},"neo-dark":{getThemeVariables:N},redux:{getThemeVariables:W},"redux-dark":{getThemeVariables:U},"redux-color":{getThemeVariables:G},"redux-dark-color":{getThemeVariables:(0,i.K2)(t=>{const e=new X;return e.calculate(t),e},"getThemeVariables")}},Z={flowchart:{useMaxWidth:!0,titleTopMargin:25,subGraphTitleMargin:{top:0,bottom:0},diagramPadding:8,htmlLabels:null,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,defaultRenderer:"dagre-wrapper",wrappingWidth:200,inheritDir:!1},sequence:{useMaxWidth:!0,hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20},gantt:{useMaxWidth:!0,titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",topAxis:!1,displayMode:"",weekday:"sunday"},journey:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,maxLabelWidth:360,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],titleColor:"",titleFontFamily:'"trebuchet ms", verdana, arial, sans-serif',titleFontSize:"4ex"},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:"dagre-wrapper",htmlLabels:!1,hideEmptyMembersBox:!1,hierarchicalNamespaces:!0},state:{useMaxWidth:!0,titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,defaultRenderer:"dagre-wrapper"},er:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,nodeSpacing:140,rankSpacing:80,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.75},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:"top",yAxisPosition:"left",quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},xyChart:{useMaxWidth:!0,width:700,height:500,titleFontSize:20,titlePadding:10,showDataLabel:!1,showDataLabelOutsideBar:!1,showTitle:!0,xAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},yAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},chartOrientation:"vertical",plotReservedSpacePercent:50},requirement:{useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200,layoutAlgorithm:"cose-bilkent"},ishikawa:{useMaxWidth:!0,diagramPadding:20},kanban:{useMaxWidth:!0,padding:8,sectionWidth:200,ticketBaseUrl:""},timeline:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},gitGraph:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0,parallelCommits:!1,arrowMarkerAbsolute:!1},c4:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},sankey:{useMaxWidth:!0,width:600,height:400,linkColor:"gradient",nodeAlignment:"justify",showValues:!0,prefix:"",suffix:"",nodeWidth:10,nodePadding:12,labelStyle:"legacy"},block:{useMaxWidth:!0,padding:8},packet:{useMaxWidth:!0,rowHeight:32,bitWidth:32,bitsPerRow:32,showBits:!0,paddingX:5,paddingY:5},treeView:{useMaxWidth:!0,rowIndent:10,paddingX:5,paddingY:5,lineThickness:1},architecture:{useMaxWidth:!0,padding:40,iconSize:80,fontSize:16,randomize:!1,nodeSeparation:75,idealEdgeLengthMultiplier:1.5,edgeElasticity:.45,numIter:2500},eventmodeling:{useMaxWidth:!0,padding:30,rowHeight:32},radar:{useMaxWidth:!0,width:600,height:600,marginTop:50,marginRight:50,marginBottom:50,marginLeft:50,axisScaleFactor:1,axisLabelFactor:1.05,curveTension:.17},venn:{useMaxWidth:!0,width:800,height:450,padding:8,useDebugLayout:!1},theme:"default",look:"classic",handDrawnSeed:0,layout:"dagre",maxTextSize:5e4,maxEdges:500,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize","suppressErrorRendering","maxEdges"],legacyMathML:!1,forceLegacyMathML:!1,deterministicIds:!1,fontSize:16,markdownAutoWrap:!0,suppressErrorRendering:!1},Q={...Z,deterministicIDSeed:void 0,elk:{mergeEdges:!1,nodePlacementStrategy:"BRANDES_KOEPF",forceNodeModelOrder:!1,considerModelOrder:"NODES_AND_EDGES"},themeCSS:void 0,themeVariables:V.default.getThemeVariables(),sequence:{...Z.sequence,messageFont:(0,i.K2)(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont"),noteFont:(0,i.K2)(function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},"noteFont"),actorFont:(0,i.K2)(function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}},"actorFont")},class:{hideEmptyMembersBox:!1,hierarchicalNamespaces:!0},gantt:{...Z.gantt,tickInterval:void 0,useWidth:void 0},c4:{...Z.c4,useWidth:void 0,personFont:(0,i.K2)(function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},"personFont"),flowchart:{...Z.flowchart,inheritDir:!1},external_personFont:(0,i.K2)(function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},"external_personFont"),systemFont:(0,i.K2)(function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},"systemFont"),external_systemFont:(0,i.K2)(function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},"external_systemFont"),system_dbFont:(0,i.K2)(function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},"system_dbFont"),external_system_dbFont:(0,i.K2)(function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},"external_system_dbFont"),system_queueFont:(0,i.K2)(function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},"system_queueFont"),external_system_queueFont:(0,i.K2)(function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},"external_system_queueFont"),containerFont:(0,i.K2)(function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},"containerFont"),external_containerFont:(0,i.K2)(function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},"external_containerFont"),container_dbFont:(0,i.K2)(function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},"container_dbFont"),external_container_dbFont:(0,i.K2)(function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},"external_container_dbFont"),container_queueFont:(0,i.K2)(function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},"container_queueFont"),external_container_queueFont:(0,i.K2)(function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},"external_container_queueFont"),componentFont:(0,i.K2)(function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},"componentFont"),external_componentFont:(0,i.K2)(function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},"external_componentFont"),component_dbFont:(0,i.K2)(function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},"component_dbFont"),external_component_dbFont:(0,i.K2)(function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},"external_component_dbFont"),component_queueFont:(0,i.K2)(function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},"component_queueFont"),external_component_queueFont:(0,i.K2)(function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},"external_component_queueFont"),boundaryFont:(0,i.K2)(function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},"boundaryFont"),messageFont:(0,i.K2)(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont")},pie:{...Z.pie,useWidth:984},xyChart:{...Z.xyChart,useWidth:void 0},requirement:{...Z.requirement,useWidth:void 0},packet:{...Z.packet},eventmodeling:{...Z.eventmodeling},treeView:{...Z.treeView,useWidth:void 0},radar:{...Z.radar},ishikawa:{...Z.ishikawa},sankey:{...Z.sankey,nodeColors:void 0},treemap:{useMaxWidth:!0,padding:10,diagramPadding:8,showValues:!0,nodeWidth:100,nodeHeight:40,borderWidth:1,valueFontSize:12,labelFontSize:14,valueFormat:","},venn:{...Z.venn}},J=(0,i.K2)((t,e="")=>Object.keys(t).reduce((r,i)=>Array.isArray(t[i])?r:"object"==typeof t[i]&&null!==t[i]?[...r,e+i,...J(t[i],"")]:[...r,e+i],[]),"keyify"),tt=new Set(J(Q,"")),et=Q,rt=(0,i.K2)(t=>{if(i.Rm.debug("sanitizeDirective called with",t),"object"==typeof t&&null!=t)if(Array.isArray(t))t.forEach(t=>rt(t));else{for(const e of Object.keys(t)){if(i.Rm.debug("Checking key",e),e.startsWith("__")||e.includes("proto")||e.includes("constr")||!tt.has(e)||null==t[e]){i.Rm.debug("sanitize deleting key: ",e),delete t[e];continue}if("object"==typeof t[e]){if("nodeColors"===e){const r=/^#[\da-f]{3,8}$|^rgb\([\d\s%,.]+\)$|^hsl\([\d\s%,.]+\)$|^[a-z]+$/i;for(const o of Object.keys(t[e]))"string"==typeof t[e][o]&&r.test(t[e][o])||(i.Rm.debug("sanitize deleting invalid color:",o,t[e][o]),delete t[e][o])}else i.Rm.debug("sanitizing object",e),rt(t[e]);continue}const r=["themeCSS","fontFamily","altFontFamily"];for(const o of r)e.includes(o)&&(i.Rm.debug("sanitizing css option",e),t[e]=it(t[e]))}if(t.themeVariables)for(const e of Object.keys(t.themeVariables)){const r=t.themeVariables[e];r?.match&&!r.match(/^[\d "#%(),.;A-Za-z]+$/)&&(t.themeVariables[e]="")}i.Rm.debug("After sanitization",t)}},"sanitizeDirective"),it=(0,i.K2)(t=>{let e=0,r=0;for(const i of t){if(e<r)return"{ /* ERROR: Unbalanced CSS */ }";"{"===i?e++:"}"===i&&r++}return e!==r?"{ /* ERROR: Unbalanced CSS */ }":t},"sanitizeCss"),ot=Object.freeze(et),nt=(0,i.K2)(t=>!1!==t&&!["false","null","0"].includes(String(t).trim().toLowerCase()),"evaluate"),at=v({},ot),st=[],lt=v({},ot),ht=(0,i.K2)((t,e)=>{let r=v({},t),i={};for(const o of e)yt(o),i=v(i,o);if(r=v(r,i),i.theme&&i.theme in V){const t=v({},c),e=v(t.themeVariables||{},i.themeVariables);r.theme&&r.theme in V&&(r.themeVariables=V[r.theme].getThemeVariables(e))}return wt(lt=r),lt},"updateCurrentConfig"),ct=(0,i.K2)(t=>(at=v({},ot),at=v(at,t),t.theme&&V[t.theme]&&(at.themeVariables=V[t.theme].getThemeVariables(t.themeVariables)),ht(at,st),at),"setSiteConfig"),dt=(0,i.K2)(t=>{c=v({},t)},"saveConfigFromInitialize"),ut=(0,i.K2)(t=>(at=v(at,t),ht(at,st),at),"updateSiteConfig"),pt=(0,i.K2)(()=>v({},at),"getSiteConfig"),gt=(0,i.K2)(t=>(wt(t),v(lt,t),ft()),"setConfig"),ft=(0,i.K2)(()=>v({},lt),"getConfig"),yt=(0,i.K2)(t=>{t&&(["secure",...at.secure??[]].forEach(e=>{Object.hasOwn(t,e)&&(i.Rm.debug(`Denied attempt to modify a secure key ${e}`,t[e]),delete t[e])}),Object.keys(t).forEach(e=>{e.startsWith("__")&&delete t[e]}),Object.keys(t).forEach(e=>{"string"==typeof t[e]&&(t[e].includes("<")||t[e].includes(">")||t[e].includes("url(data:"))&&delete t[e],"object"==typeof t[e]&&yt(t[e])}))},"sanitize"),mt=(0,i.K2)(t=>{rt(t),t.fontFamily&&!t.themeVariables?.fontFamily&&(t.themeVariables={...t.themeVariables,fontFamily:t.fontFamily}),st.push(t),ht(at,st)},"addDirective"),Ct=(0,i.K2)((t=at)=>{ht(t,st=[])},"reset"),xt={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.",FLOWCHART_HTML_LABELS_DEPRECATED:"flowchart.htmlLabels is deprecated. Please use global htmlLabels instead."},bt={},kt=(0,i.K2)(t=>{bt[t]||(i.Rm.warn(xt[t]),bt[t]=!0)},"issueWarning"),wt=(0,i.K2)(t=>{t&&(t.lazyLoadedDiagrams||t.loadExternalDiagramsAtStartup)&&kt("LAZY_LOAD_DEPRECATED")},"checkConfig"),Tt=(0,i.K2)(()=>{let t={};c&&(t=v(t,c));for(const e of st)t=v(t,e);return t},"getUserDefinedConfig"),St=(0,i.K2)(t=>(null!=t.flowchart?.htmlLabels&&kt("FLOWCHART_HTML_LABELS_DEPRECATED"),nt(t.htmlLabels??t.flowchart?.htmlLabels??!0)),"getEffectiveHtmlLabels"),vt=/<br\s*\/?>/gi,Bt=(0,i.K2)(t=>{if(!t)return[""];return It(t).replace(/\\n/g,"#br#").split("#br#")},"getRows"),_t=(()=>{let t=!1;return()=>{t||(At(),t=!0)}})();function At(){const t="data-temp-href-target";g.A.addHook("beforeSanitizeAttributes",e=>{"A"===e.tagName&&e.hasAttribute("target")&&e.setAttribute(t,e.getAttribute("target")??"")}),g.A.addHook("afterSanitizeAttributes",e=>{"A"===e.tagName&&e.hasAttribute(t)&&(e.setAttribute("target",e.getAttribute(t)??""),e.removeAttribute(t),"_blank"===e.getAttribute("target")&&e.setAttribute("rel","noopener"))})}(0,i.K2)(At,"setupDompurifyHooks");var Lt=(0,i.K2)(t=>{_t();return g.A.sanitize(t)},"removeScript"),Ft=(0,i.K2)((t,e)=>{if(St(e)){const r=e.securityLevel;"antiscript"===r||"strict"===r||"sandbox"===r?t=Lt(t):"loose"!==r&&(t=(t=(t=It(t)).replace(/</g,"<").replace(/>/g,">")).replace(/=/g,"="),t=Dt(t))}return t},"sanitizeMore"),Mt=(0,i.K2)((t,e)=>t?t=e.dompurifyConfig?g.A.sanitize(Ft(t,e),e.dompurifyConfig).toString():g.A.sanitize(Ft(t,e),{FORBID_TAGS:["style"]}).toString():t,"sanitizeText"),Et=(0,i.K2)((t,e)=>"string"==typeof t?Mt(t,e):t.flat().map(t=>Mt(t,e)),"sanitizeTextOrArray"),$t=(0,i.K2)(t=>vt.test(t),"hasBreaks"),Ot=(0,i.K2)(t=>t.split(vt),"splitBreaks"),Dt=(0,i.K2)(t=>t.replace(/#br#/g,"<br/>"),"placeholderToBreak"),It=(0,i.K2)(t=>t.replace(vt,"#br#"),"breakToPlaceholder"),Pt=(0,i.K2)(t=>{let e="";return t&&(e=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,e=CSS.escape(e)),e},"getUrl"),qt=(0,i.K2)(function(...t){const e=t.filter(t=>!isNaN(t));return Math.max(...e)},"getMax"),Rt=(0,i.K2)(function(...t){const e=t.filter(t=>!isNaN(t));return Math.min(...e)},"getMin"),zt=(0,i.K2)(function(t){const e=t.split(/(,)/),r=[];for(let i=0;i<e.length;i++){let t=e[i];if(","===t&&i>0&&i+1<e.length){const o=e[i-1],n=e[i+1];Nt(o,n)&&(t=o+","+n,i++,r.pop())}r.push(jt(t))}return r.join("")},"parseGenericTypes"),Kt=(0,i.K2)((t,e)=>Math.max(0,t.split(e).length-1),"countOccurrence"),Nt=(0,i.K2)((t,e)=>{const r=Kt(t,"~"),i=Kt(e,"~");return 1===r&&1===i},"shouldCombineSets"),jt=(0,i.K2)(t=>{const e=Kt(t,"~");let r=!1;if(e<=1)return t;e%2!=0&&t.startsWith("~")&&(t=t.substring(1),r=!0);const i=[...t];let o=i.indexOf("~"),n=i.lastIndexOf("~");for(;-1!==o&&-1!==n&&o!==n;)i[o]="<",i[n]=">",o=i.indexOf("~"),n=i.lastIndexOf("~");return r&&i.unshift("~"),i.join("")},"processSet"),Wt=(0,i.K2)(()=>void 0!==window.MathMLElement,"isMathMLSupported"),Ht=/\$\$(.*)\$\$/g,Ut=(0,i.K2)(t=>(t.match(Ht)?.length??0)>0,"hasKatex"),Yt=(0,i.K2)(async(t,e)=>{const r=document.createElement("div");r.innerHTML=await Xt(t,e),r.id="katex-temp",r.style.visibility="hidden",r.style.position="absolute",r.style.top="0";const i=document.querySelector("body");i?.insertAdjacentElement("beforeend",r);const o={width:r.clientWidth,height:r.clientHeight};return r.remove(),o},"calculateMathMLDimensions"),Gt=(0,i.K2)(async(t,e)=>{if(!Ut(t))return t;if(!(Wt()||e.legacyMathML||e.forceLegacyMathML))return t.replace(Ht,"MathML is unsupported in this environment.");{const{default:i}=await r.e(2130).then(r.bind(r,2130)),o=e.forceLegacyMathML||!Wt()&&e.legacyMathML?"htmlAndMathml":"mathml";return t.split(vt).map(t=>Ut(t)?`<div style="display: flex; align-items: center; justify-content: center; white-space: nowrap;">${t}</div>`:`<div>${t}</div>`).join("").replace(Ht,(t,e)=>i.renderToString(e,{throwOnError:!0,displayMode:!0,output:o}).replace(/\n/g," ").replace(/<annotation.*<\/annotation>/g,""))}},"renderKatexUnsanitized"),Xt=(0,i.K2)(async(t,e)=>Mt(await Gt(t,e),e),"renderKatexSanitized"),Vt={getRows:Bt,sanitizeText:Mt,sanitizeTextOrArray:Et,hasBreaks:$t,splitBreaks:Ot,lineBreakRegex:vt,removeScript:Lt,getUrl:Pt,evaluate:nt,getMax:qt,getMin:Rt},Zt=(0,i.K2)(function(t,e){for(let r of e)t.attr(r[0],r[1])},"d3Attrs"),Qt=(0,i.K2)(function(t,e,r){let i=new Map;return r?(i.set("width","100%"),i.set("style",`max-width: ${e}px;`)):(i.set("height",t),i.set("width",e)),i},"calculateSvgSizeAttrs"),Jt=(0,i.K2)(function(t,e,r,i){const o=Qt(e,r,i);Zt(t,o)},"configureSvgSize"),te=(0,i.K2)(function(t,e,r,o){const n=e.node().getBBox(),a=n.width,s=n.height;i.Rm.info(`SVG bounds: ${a}x${s}`,n);let l=0,h=0;i.Rm.info(`Graph bounds: ${l}x${h}`,t),l=a+2*r,h=s+2*r,i.Rm.info(`Calculated bounds: ${l}x${h}`),Jt(e,h,l,o);const c=`${n.x-r} ${n.y-r} ${n.width+2*r} ${n.height+2*r}`;e.attr("viewBox",c)},"setupGraphViewbox"),ee={};function re(t){return[...t.cssRules].map(t=>t.cssText).join("\n")}(0,i.K2)(re,"cssStyleSheetToString");var ie=(0,i.K2)((t,e,r,o)=>{let n="";return t in ee&&ee[t]?n=ee[t]({...r,svgId:o}):i.Rm.warn(`No theme found for ${t}`),` & {\n font-family: ${r.fontFamily};\n font-size: ${r.fontSize};\n fill: ${r.textColor}\n }\n @keyframes edge-animation-frame {\n from {\n stroke-dashoffset: 0;\n }\n }\n @keyframes dash {\n to {\n stroke-dashoffset: 0;\n }\n }\n & .edge-animation-slow {\n stroke-dasharray: 9,5 !important;\n stroke-dashoffset: 900;\n animation: dash 50s linear infinite;\n stroke-linecap: round;\n }\n & .edge-animation-fast {\n stroke-dasharray: 9,5 !important;\n stroke-dashoffset: 900;\n animation: dash 20s linear infinite;\n stroke-linecap: round;\n }\n /* Classes common for multiple diagrams */\n\n & .error-icon {\n fill: ${r.errorBkgColor};\n }\n & .error-text {\n fill: ${r.errorTextColor};\n stroke: ${r.errorTextColor};\n }\n\n & .edge-thickness-normal {\n stroke-width: ${r.strokeWidth??1}px;\n }\n & .edge-thickness-thick {\n stroke-width: 3.5px\n }\n & .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n & .edge-thickness-invisible {\n stroke-width: 0;\n fill: none;\n }\n & .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n & .marker {\n fill: ${r.lineColor};\n stroke: ${r.lineColor};\n }\n & .marker.cross {\n stroke: ${r.lineColor};\n }\n\n & svg {\n font-family: ${r.fontFamily};\n font-size: ${r.fontSize};\n }\n & p {\n margin: 0\n }\n\n ${n}\n .node .neo-node {\n stroke: ${r.nodeBorder};\n }\n\n [data-look="neo"].node rect, [data-look="neo"].cluster rect, [data-look="neo"].node polygon {\n stroke: ${r.useGradient?"url("+o+"-gradient)":r.nodeBorder};\n filter: ${r.dropShadow?r.dropShadow.replace("url(#drop-shadow)",`url(${o}-drop-shadow)`):"none"};\n }\n\n\n [data-look="neo"].node path {\n stroke: ${r.useGradient?"url("+o+"-gradient)":r.nodeBorder};\n stroke-width: ${r.strokeWidth??1}px;\n }\n\n [data-look="neo"].node .outer-path {\n filter: ${r.dropShadow?r.dropShadow.replace("url(#drop-shadow)",`url(${o}-drop-shadow)`):"none"};\n }\n\n [data-look="neo"].node .neo-line path {\n stroke: ${r.nodeBorder};\n filter: none;\n }\n\n [data-look="neo"].node circle{\n stroke: ${r.useGradient?"url("+o+"-gradient)":r.nodeBorder};\n filter: ${r.dropShadow?r.dropShadow.replace("url(#drop-shadow)",`url(${o}-drop-shadow)`):"none"};\n }\n\n [data-look="neo"].node circle .state-start{\n fill: #000000;\n }\n\n [data-look="neo"].icon-shape .icon {\n fill: ${r.useGradient?"url("+o+"-gradient)":r.nodeBorder};\n filter: ${r.dropShadow?r.dropShadow.replace("url(#drop-shadow)",`url(${o}-drop-shadow)`):"none"};\n }\n\n [data-look="neo"].icon-shape .icon-neo path {\n stroke: ${r.useGradient?"url("+o+"-gradient)":r.nodeBorder};\n filter: ${r.dropShadow?r.dropShadow.replace("url(#drop-shadow)",`url(${o}-drop-shadow)`):"none"};\n }\n\n ${e}\n`},"getStyles"),oe=(0,i.K2)((t,e)=>{void 0!==e&&(ee[t]=e)},"addStylesForDiagram"),ne=ie,ae={};(0,i.VA)(ae,{clear:()=>de,getAccDescription:()=>fe,getAccTitle:()=>pe,getDiagramTitle:()=>me,setAccDescription:()=>ge,setAccTitle:()=>ue,setDiagramTitle:()=>ye});var se="",le="",he="",ce=(0,i.K2)(t=>Mt(t,ft()),"sanitizeText"),de=(0,i.K2)(()=>{se="",he="",le=""},"clear"),ue=(0,i.K2)(t=>{se=ce(t).replace(/^\s+/g,"")},"setAccTitle"),pe=(0,i.K2)(()=>se,"getAccTitle"),ge=(0,i.K2)(t=>{he=ce(t).replace(/\n\s+/g,"\n")},"setAccDescription"),fe=(0,i.K2)(()=>he,"getAccDescription"),ye=(0,i.K2)(t=>{le=ce(t)},"setDiagramTitle"),me=(0,i.K2)(()=>le,"getDiagramTitle"),Ce=i.Rm,xe=i.He,be=ft,ke=gt,we=ot,Te=(0,i.K2)(t=>Mt(t,be()),"sanitizeText"),Se=te,ve=(0,i.K2)(()=>ae,"getCommonDb"),Be={},_e=(0,i.K2)((t,e,r)=>{Be[t]&&Ce.warn(`Diagram with id ${t} already registered. Overwriting.`),Be[t]=e,r&&w(t,r),oe(t,e.styles),e.injectUtils?.(Ce,xe,be,Te,Se,ve(),()=>{})},"registerDiagram"),Ae=(0,i.K2)(t=>{if(t in Be)return Be[t];throw new Le(t)},"getDiagram"),Le=class extends Error{static{(0,i.K2)(this,"DiagramNotFoundError")}constructor(t){super(`Diagram ${t} not found.`)}}},6615(t,e,r){"use strict";r.d(e,{IU:()=>b,Jo:()=>E,T_:()=>S,g0:()=>ot,jP:()=>w});var i=r(1334),o=r(273),n=r(5105),a=r(8013),s=r(5739),l=r(8515),h=r(3706),c=r(797),d=r(451),u=r(2274),p=(0,c.K2)((t,e,r,i,o,n=!1,a)=>{e.arrowTypeStart&&y(t,"start",e.arrowTypeStart,r,i,o,n,a),e.arrowTypeEnd&&y(t,"end",e.arrowTypeEnd,r,i,o,n,a)},"addEdgeMarkers"),g={arrow_cross:{type:"cross",fill:!1},arrow_point:{type:"point",fill:!0},arrow_barb:{type:"barb",fill:!0},arrow_barb_neo:{type:"barb",fill:!0},arrow_circle:{type:"circle",fill:!1},aggregation:{type:"aggregation",fill:!1},extension:{type:"extension",fill:!1},composition:{type:"composition",fill:!0},dependency:{type:"dependency",fill:!0},lollipop:{type:"lollipop",fill:!1},only_one:{type:"onlyOne",fill:!1},zero_or_one:{type:"zeroOrOne",fill:!1},one_or_more:{type:"oneOrMore",fill:!1},zero_or_more:{type:"zeroOrMore",fill:!1},requirement_arrow:{type:"requirement_arrow",fill:!1},requirement_contains:{type:"requirement_contains",fill:!1}},f=["cross","point","circle","lollipop","aggregation","extension","composition","dependency","barb"],y=(0,c.K2)((t,e,r,i,o,n,a=!1,s)=>{const l=g[r],h=l&&f.includes(l.type);if(!l)return void c.Rm.warn(`Unknown arrow type: ${r}`);const d=`${o}_${n}-${l.type}${"start"===e?"Start":"End"}${a&&h?"-margin":""}`;if(s&&""!==s.trim()){const r=`${d}_${s.replace(/[^\dA-Za-z]/g,"_")}`;if(!document.getElementById(r)){const t=document.getElementById(d);if(t){const e=t.cloneNode(!0);e.id=r;e.querySelectorAll("path, circle, line").forEach(t=>{t.setAttribute("stroke",s),l.fill&&t.setAttribute("fill",s)}),t.parentNode?.appendChild(e)}}t.attr(`marker-${e}`,`url(${i}#${r})`)}else t.attr(`marker-${e}`,`url(${i}#${d})`)},"addEdgeMarker"),m=(0,c.K2)(t=>"string"==typeof t?t:(0,h.D7)()?.flowchart?.curve,"resolveEdgeCurveType"),C=new Map,x=new Map,b=(0,c.K2)(()=>{C.clear(),x.clear()},"clear"),k=(0,c.K2)(t=>t?"string"==typeof t?t:t.reduce((t,e)=>t+";"+e,""):"","getLabelStyles"),w=(0,c.K2)(async(t,e)=>{const r=(0,h.D7)();let n=(0,h.E)(r);const{labelStyles:l}=(0,a.GX)(e);e.labelStyle=l;const u=t.insert("g").attr("class","edgeLabel"),p=u.insert("g").attr("class","label").attr("data-id",e.id),g="markdown"===e.labelType,f=await(0,s.GZ)(t,e.label,{style:k(e.labelStyle),useHtmlLabels:n,addSvgBackground:!0,isNode:!1,markdown:g,width:void 0},r);p.node().appendChild(f),c.Rm.info("abc82",e,e.labelType);let y,m=f.getBBox(),b=m;if(n){const t=f.children[0],e=(0,d.Ltv)(f);m=t.getBoundingClientRect(),b=m,e.attr("width",m.width),e.attr("height",m.height)}else{const t=(0,d.Ltv)(f).select("text").node();t&&"function"==typeof t.getBBox&&(b=t.getBBox())}if(p.attr("transform",(0,i.Wg)(b,n)),C.set(e.id,u),e.width=m.width,e.height=m.height,e.startLabelLeft){const r=t.insert("g").attr("class","edgeTerminals"),a=r.insert("g").attr("class","inner"),s=await(0,o.DA)(a,e.startLabelLeft,k(e.labelStyle)||"",!1,!1);y=s;let l=s.getBBox();if(n){const t=s.children[0],e=(0,d.Ltv)(s);l=t.getBoundingClientRect(),e.attr("width",l.width),e.attr("height",l.height)}a.attr("transform",(0,i.Wg)(l,n)),x.get(e.id)||x.set(e.id,{}),x.get(e.id).startLeft=r,T(y,e.startLabelLeft)}if(e.startLabelRight){const r=t.insert("g").attr("class","edgeTerminals"),a=r.insert("g").attr("class","inner"),s=await(0,o.DA)(a,e.startLabelRight,k(e.labelStyle)||"",!1,!1);y=s;let l=s.getBBox();if(n){const t=s.children[0],e=(0,d.Ltv)(s);l=t.getBoundingClientRect(),e.attr("width",l.width),e.attr("height",l.height)}a.attr("transform",(0,i.Wg)(l,n)),x.get(e.id)||x.set(e.id,{}),x.get(e.id).startRight=r,T(y,e.startLabelRight)}if(e.endLabelLeft){const r=t.insert("g").attr("class","edgeTerminals"),a=r.insert("g").attr("class","inner"),s=await(0,o.DA)(r,e.endLabelLeft,k(e.labelStyle)||"",!1,!1);y=s;let l=s.getBBox();if(n){const t=s.children[0],e=(0,d.Ltv)(s);l=t.getBoundingClientRect(),e.attr("width",l.width),e.attr("height",l.height)}a.attr("transform",(0,i.Wg)(l,n)),x.get(e.id)||x.set(e.id,{}),x.get(e.id).endLeft=r,T(y,e.endLabelLeft)}if(e.endLabelRight){const r=t.insert("g").attr("class","edgeTerminals"),a=r.insert("g").attr("class","inner"),s=await(0,o.DA)(r,e.endLabelRight,k(e.labelStyle)||"",!1,!1);y=s;let l=s.getBBox();if(n){const t=s.children[0],e=(0,d.Ltv)(s);l=t.getBoundingClientRect(),e.attr("width",l.width),e.attr("height",l.height)}a.attr("transform",(0,i.Wg)(l,n)),x.get(e.id)||x.set(e.id,{}),x.get(e.id).endRight=r,T(y,e.endLabelRight)}return f},"insertEdgeLabel");function T(t,e){(0,h.E)((0,h.D7)())&&t&&(t.style.width=9*e.length+"px",t.style.height="12px")}(0,c.K2)(T,"setTerminalWidth");var S=(0,c.K2)((t,e)=>{c.Rm.debug("Moving label abc88 ",t.id,t.label,C.get(t.id),e);let r=e.updatedPath?e.updatedPath:e.originalPath;const i=(0,h.D7)(),{subGraphTitleTotalMargin:o}=(0,n.O)(i);if(t.label){const i=C.get(t.id);let n=t.x,a=t.y;if(r){const i=l._K.calcLabelPosition(r);c.Rm.debug("Moving label "+t.label+" from (",n,",",a,") to (",i.x,",",i.y,") abc88"),e.updatedPath&&(n=i.x,a=i.y)}i.attr("transform",`translate(${n}, ${a+o/2})`)}if(t.startLabelLeft){const e=x.get(t.id).startLeft;let i=t.x,o=t.y;if(r){const e=l._K.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",r);i=e.x,o=e.y}e.attr("transform",`translate(${i}, ${o})`)}if(t.startLabelRight){const e=x.get(t.id).startRight;let i=t.x,o=t.y;if(r){const e=l._K.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",r);i=e.x,o=e.y}e.attr("transform",`translate(${i}, ${o})`)}if(t.endLabelLeft){const e=x.get(t.id).endLeft;let i=t.x,o=t.y;if(r){const e=l._K.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",r);i=e.x,o=e.y}e.attr("transform",`translate(${i}, ${o})`)}if(t.endLabelRight){const e=x.get(t.id).endRight;let i=t.x,o=t.y;if(r){const e=l._K.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",r);i=e.x,o=e.y}e.attr("transform",`translate(${i}, ${o})`)}},"positionEdgeLabel"),v=(0,c.K2)((t,e)=>{const r=t.x,i=t.y,o=Math.abs(e.x-r),n=Math.abs(e.y-i),a=t.width/2,s=t.height/2;return o>=a||n>=s},"outsideNode"),B=(0,c.K2)((t,e,r)=>{c.Rm.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(e)}\n insidePoint : ${JSON.stringify(r)}\n node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);const i=t.x,o=t.y,n=Math.abs(i-r.x),a=t.width/2;let s=r.x<e.x?a-n:a+n;const l=t.height/2,h=Math.abs(e.y-r.y),d=Math.abs(e.x-r.x);if(Math.abs(o-e.y)*a>Math.abs(i-e.x)*l){let t=r.y<e.y?e.y-l-o:o-l-e.y;s=d*t/h;const i={x:r.x<e.x?r.x+s:r.x-d+s,y:r.y<e.y?r.y+h-t:r.y-h+t};return 0===s&&(i.x=e.x,i.y=e.y),0===d&&(i.x=e.x),0===h&&(i.y=e.y),c.Rm.debug(`abc89 top/bottom calc, Q ${h}, q ${t}, R ${d}, r ${s}`,i),i}{s=r.x<e.x?e.x-a-i:i-a-e.x;let t=h*s/d,o=r.x<e.x?r.x+d-s:r.x-d+s,n=r.y<e.y?r.y+t:r.y-t;return c.Rm.debug(`sides calc abc89, Q ${h}, q ${t}, R ${d}, r ${s}`,{_x:o,_y:n}),0===s&&(o=e.x,n=e.y),0===d&&(o=e.x),0===h&&(n=e.y),{x:o,y:n}}},"intersection"),_=(0,c.K2)((t,e)=>{c.Rm.warn("abc88 cutPathAtIntersect",t,e);let r=[],i=t[0],o=!1;return t.forEach(t=>{if(c.Rm.info("abc88 checking point",t,e),v(e,t)||o)c.Rm.warn("abc88 outside",t,i),i=t,o||r.push(t);else{const n=B(e,i,t);c.Rm.debug("abc88 inside",t,i,n),c.Rm.debug("abc88 intersection",n,e);let a=!1;r.forEach(t=>{a=a||t.x===n.x&&t.y===n.y}),r.some(t=>t.x===n.x&&t.y===n.y)?c.Rm.warn("abc88 no intersect",n,r):r.push(n),o=!0}}),c.Rm.debug("returning points",r),r},"cutPathAtIntersect");function A(t){const e=[],r=[];for(let i=1;i<t.length-1;i++){const o=t[i-1],n=t[i],a=t[i+1];(o.x===n.x&&n.y===a.y&&Math.abs(n.x-a.x)>5&&Math.abs(n.y-o.y)>5||o.y===n.y&&n.x===a.x&&Math.abs(n.x-o.x)>5&&Math.abs(n.y-a.y)>5)&&(e.push(n),r.push(i))}return{cornerPoints:e,cornerPointPositions:r}}(0,c.K2)(A,"extractCornerPoints");var L=(0,c.K2)(function(t,e,r){const i=e.x-t.x,o=e.y-t.y,n=r/Math.sqrt(i*i+o*o);return{x:e.x-n*i,y:e.y-n*o}},"findAdjacentPoint"),F=(0,c.K2)(function(t){const{cornerPointPositions:e}=A(t),r=[];for(let i=0;i<t.length;i++)if(e.includes(i)){const e=t[i-1],o=t[i+1],n=t[i],a=L(e,n,5),s=L(o,n,5),l=s.x-a.x,h=s.y-a.y;r.push(a);const d=2*Math.sqrt(2);let u={x:n.x,y:n.y};if(Math.abs(o.x-e.x)>10&&Math.abs(o.y-e.y)>=10){c.Rm.debug("Corner point fixing",Math.abs(o.x-e.x),Math.abs(o.y-e.y));const t=5;u=n.x===a.x?{x:l<0?a.x-t+d:a.x+t-d,y:h<0?a.y-d:a.y+d}:{x:l<0?a.x-d:a.x+d,y:h<0?a.y-t+d:a.y+t-d}}else c.Rm.debug("Corner point skipping fixing",Math.abs(o.x-e.x),Math.abs(o.y-e.y));r.push(u,s)}else r.push(t[i]);return r},"fixCorners"),M=(0,c.K2)((t,e,r)=>{const i=t-e-r,o=Math.floor(i/4);return`0 ${e} ${Array(o).fill("2 2").join(" ")} ${r}`},"generateDashArray"),E=(0,c.K2)(function(t,e,r,o,n,s,g,f=!1){if(!g)throw new Error(`insertEdge: missing diagramId for edge "${e.id}" \u2014 edge IDs require a diagram prefix for uniqueness`);const{handDrawnSeed:y}=(0,h.D7)();let C=e.points,x=!1;const b=n;var k=s;const w=[];for(const i in e.cssCompiledStyles)(0,a.KX)(i)||w.push(e.cssCompiledStyles[i]);c.Rm.debug("UIO intersect check",e.points,k.x,b.x),k.intersect&&b.intersect&&!f&&(C=C.slice(1,e.points.length-1),C.unshift(b.intersect(C[0])),c.Rm.debug("Last point UIO",e.start,"--\x3e",e.end,C[C.length-1],k,k.intersect(C[C.length-1])),C.push(k.intersect(C[C.length-1])));const T=btoa(JSON.stringify(C));e.toCluster&&(c.Rm.info("to cluster abc88",r.get(e.toCluster)),C=_(e.points,r.get(e.toCluster).node),x=!0),e.fromCluster&&(c.Rm.debug("from cluster abc88",r.get(e.fromCluster),JSON.stringify(C,null,2)),C=_(C.reverse(),r.get(e.fromCluster).node).reverse(),x=!0);let S=C.filter(t=>!Number.isNaN(t.y));const v=m(e.curve);"rounded"!==v&&(S=F(S));let B=d.lUB;switch(v){case"linear":case"rounded":B=d.lUB;break;case"basis":default:B=d.qrM;break;case"cardinal":B=d.y8u;break;case"bumpX":B=d.Wi0;break;case"bumpY":B=d.PGM;break;case"catmullRom":B=d.oDi;break;case"monotoneX":B=d.nVG;break;case"monotoneY":B=d.uxU;break;case"natural":B=d.Xf2;break;case"step":B=d.GZz;break;case"stepAfter":B=d.UPb;break;case"stepBefore":B=d.dyv}const{x:A,y:L}=(0,i.RI)(e),E=(0,d.n8j)().x(A).y(L).curve(B);let O,I;switch(e.thickness){case"normal":default:O="edge-thickness-normal";break;case"thick":O="edge-thickness-thick";break;case"invisible":O="edge-thickness-invisible"}switch(e.pattern){case"solid":default:O+=" edge-pattern-solid";break;case"dotted":O+=" edge-pattern-dotted";break;case"dashed":O+=" edge-pattern-dashed"}let P="rounded"===v?$(D(S,e),5):E(S);const q=Array.isArray(e.style)?e.style:[e.style];let R=q.find(t=>t?.startsWith("stroke:")),z="";e.animate&&(z="edge-animation-fast"),e.animation&&(z="edge-animation-"+e.animation);let K=!1;if("handDrawn"===e.look){const r=u.A.svg(t);Object.assign([],S);const i=r.path(P,{roughness:.3,seed:y});O+=" transition",I=(0,d.Ltv)(i).select("path").attr("id",`${g}-${e.id}`).attr("class"," "+O+(e.classes?" "+e.classes:"")+(z?" "+z:"")).attr("style",q?q.reduce((t,e)=>t+";"+e,""):"");let o=I.attr("d");I.attr("d",o),t.node().appendChild(I.node())}else{const r=w.join(";"),o=q?q.reduce((t,e)=>t+e+";",""):"",n=(r?r+";"+o+";":o)+";"+(q?q.reduce((t,e)=>t+";"+e,""):"");I=t.append("path").attr("d",P).attr("id",`${g}-${e.id}`).attr("class"," "+O+(e.classes?" "+e.classes:"")+(z?" "+z:"")).attr("style",n),R=n.match(/stroke:([^;]+)/)?.[1],K=!0===e.animate||!!e.animation||r.includes("animation");const a=I.node(),s="function"==typeof a.getTotalLength?a.getTotalLength():0,l=i.Nq[e.arrowTypeStart]||0,h=i.Nq[e.arrowTypeEnd]||0;if("neo"===e.look&&!K){const t=`stroke-dasharray: ${"dotted"===e.pattern||"dashed"===e.pattern?M(s,l,h):`0 ${l} ${s-l-h} ${h}`}; stroke-dashoffset: 0;`;I.attr("style",t+I.attr("style"))}}I.attr("data-edge",!0),I.attr("data-et","edge"),I.attr("data-id",e.id),I.attr("data-points",T),I.attr("data-look",(0,l.KL)(e.look)),e.showPoints&&S.forEach(e=>{t.append("circle").style("stroke","red").style("fill","red").attr("r",1).attr("cx",e.x).attr("cy",e.y)});let N="";((0,h.D7)().flowchart.arrowMarkerAbsolute||(0,h.D7)().state.arrowMarkerAbsolute)&&(N=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,N=N.replace(/\(/g,"\\(").replace(/\)/g,"\\)")),c.Rm.info("arrowTypeStart",e.arrowTypeStart),c.Rm.info("arrowTypeEnd",e.arrowTypeEnd);p(I,e,N,g,o,!K&&"neo"===e?.look,R);const j=C[Math.floor(C.length/2)];l._K.isLabelCoordinateInPath(j,I.attr("d"))||(x=!0);let W={};return x&&(W.updatedPath=C),W.originalPath=e.points,W},"insertEdge");function $(t,e){if(t.length<2)return"";let r="";const i=t.length,o=1e-5;for(let n=0;n<i;n++){const a=t[n],s=t[n-1],l=t[n+1];if(0===n)r+=`M${a.x},${a.y}`;else if(n===i-1)r+=`L${a.x},${a.y}`;else{const t=a.x-s.x,i=a.y-s.y,n=l.x-a.x,h=l.y-a.y,c=Math.hypot(t,i),d=Math.hypot(n,h);if(c<o||d<o){r+=`L${a.x},${a.y}`;continue}const u=t/c,p=i/c,g=n/d,f=h/d,y=u*g+p*f,m=Math.max(-1,Math.min(1,y)),C=Math.acos(m);if(C<o||Math.abs(Math.PI-C)<o){r+=`L${a.x},${a.y}`;continue}const x=Math.min(e/Math.sin(C/2),c/2,d/2),b=a.x-u*x,k=a.y-p*x,w=a.x+g*x,T=a.y+f*x;r+=`L${b},${k}`,r+=`Q${a.x},${a.y} ${w},${T}`}}return r}function O(t,e){if(!t||!e)return{angle:0,deltaX:0,deltaY:0};const r=e.x-t.x,i=e.y-t.y;return{angle:Math.atan2(i,r),deltaX:r,deltaY:i}}function D(t,e){const r=t.map(t=>({...t}));if(t.length>=2&&i.hq[e.arrowTypeStart]){const o=i.hq[e.arrowTypeStart],n=t[0],a=t[1],{angle:s}=O(n,a),l=o*Math.cos(s),h=o*Math.sin(s);r[0].x=n.x+l,r[0].y=n.y+h}const o=t.length;if(o>=2&&i.hq[e.arrowTypeEnd]){const n=i.hq[e.arrowTypeEnd],a=t[o-1],s=t[o-2],{angle:l}=O(s,a),h=n*Math.cos(l),c=n*Math.sin(l);r[o-1].x=a.x-h,r[o-1].y=a.y-c}return r}(0,c.K2)($,"generateRoundedPath"),(0,c.K2)(O,"calculateDeltaAndAngle"),(0,c.K2)(D,"applyMarkerOffsetsToPoints");var I=(0,c.K2)((t,e,r,i)=>{e.forEach(e=>{it[e](t,r,i)})},"insertMarkers"),P=(0,c.K2)((t,e,r)=>{c.Rm.trace("Making markers for ",r),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionStart").attr("class","marker extension "+e).attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z"),t.append("marker").attr("id",r+"_"+e+"-extensionStart-margin").attr("class","marker extension "+e).attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").attr("viewBox","0 0 20 14").append("polygon").attr("points","10,7 18,13 18,1").style("stroke-width",2).style("stroke-dasharray","0"),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionEnd-margin").attr("class","marker extension "+e).attr("refX",9).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").attr("viewBox","0 0 20 14").append("polygon").attr("points","10,1 10,13 18,7").style("stroke-width",2).style("stroke-dasharray","0")},"extension"),q=(0,c.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionStart").attr("class","marker composition "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionStart-margin").attr("class","marker composition "+e).attr("refX",15).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",0).attr("viewBox","0 0 15 15").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionEnd-margin").attr("class","marker composition "+e).attr("refX",3.5).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",0).attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),R=(0,c.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationStart-margin").attr("class","marker aggregation "+e).attr("refX",15).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",2).attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationEnd-margin").attr("class","marker aggregation "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",2).attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),z=(0,c.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyStart-margin").attr("class","marker dependency "+e).attr("refX",4).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",0).attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyEnd-margin").attr("class","marker dependency "+e).attr("refX",16).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",0).attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),K=(0,c.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopEnd").attr("class","marker lollipop "+e).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopStart-margin").attr("class","marker lollipop "+e).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6).attr("stroke-width",2),t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopEnd-margin").attr("class","marker lollipop "+e).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6).attr("stroke-width",2)},"lollipop"),N=(0,c.K2)((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-pointEnd-margin").attr("class","marker "+e).attr("viewBox","0 0 11.5 14").attr("refX",11.5).attr("refY",7).attr("markerUnits","userSpaceOnUse").attr("markerWidth",10.5).attr("markerHeight",14).attr("orient","auto").append("path").attr("d","M 0 0 L 11.5 7 L 0 14 z").attr("class","arrowMarkerPath").style("stroke-width",0).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-pointStart-margin").attr("class","marker "+e).attr("viewBox","0 0 11.5 14").attr("refX",1).attr("refY",7).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11.5).attr("markerHeight",14).attr("orient","auto").append("polygon").attr("points","0,7 11.5,14 11.5,0").attr("class","arrowMarkerPath").style("stroke-width",0).style("stroke-dasharray","1,0")},"point"),j=(0,c.K2)((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-circleEnd-margin").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refY",5).attr("refX",12.25).attr("markerUnits","userSpaceOnUse").attr("markerWidth",14).attr("markerHeight",14).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",0).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-circleStart-margin").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-2).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",14).attr("markerHeight",14).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",0).style("stroke-dasharray","1,0")},"circle"),W=(0,c.K2)((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-crossEnd-margin").attr("class","marker cross "+e).attr("viewBox","0 0 15 15").attr("refX",17.7).attr("refY",7.5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 1,1 L 14,14 M 1,14 L 14,1").attr("class","arrowMarkerPath").style("stroke-width",2.5),t.append("marker").attr("id",r+"_"+e+"-crossStart-margin").attr("class","marker cross "+e).attr("viewBox","0 0 15 15").attr("refX",-3.5).attr("refY",7.5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 1,1 L 14,14 M 1,14 L 14,1").attr("class","arrowMarkerPath").style("stroke-width",2.5).style("stroke-dasharray","1,0")},"cross"),H=(0,c.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),U=(0,c.K2)((t,e,r)=>{const i=(0,h.zj)(),{themeVariables:o}=i,{transitionColor:n}=o;t.append("defs").append("marker").attr("id",r+"_"+e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L11,14 L13,7 L11,0 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-barbEnd-margin").attr("refX",17).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M 19,7 L11,14 L13,7 L11,0 Z").attr("fill",`${n}`)},"barbNeo"),Y=(0,c.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-onlyOneStart").attr("class","marker onlyOne "+e).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",r+"_"+e+"-onlyOneEnd").attr("class","marker onlyOne "+e).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M3,0 L3,18 M9,0 L9,18")},"only_one"),G=(0,c.K2)((t,e,r)=>{const i=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrOneStart").attr("class","marker zeroOrOne "+e).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),i.append("path").attr("d","M9,0 L9,18");const o=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrOneEnd").attr("class","marker zeroOrOne "+e).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");o.append("circle").attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),o.append("path").attr("d","M21,0 L21,18")},"zero_or_one"),X=(0,c.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-oneOrMoreStart").attr("class","marker oneOrMore "+e).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),t.append("defs").append("marker").attr("id",r+"_"+e+"-oneOrMoreEnd").attr("class","marker oneOrMore "+e).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18")},"one_or_more"),V=(0,c.K2)((t,e,r)=>{const i=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrMoreStart").attr("class","marker zeroOrMore "+e).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),i.append("path").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18");const o=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrMoreEnd").attr("class","marker zeroOrMore "+e).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");o.append("circle").attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),o.append("path").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},"zero_or_more"),Z=(0,c.K2)((t,e,r)=>{const i=(0,h.zj)(),{themeVariables:o}=i,{strokeWidth:n}=o;t.append("defs").append("marker").attr("id",r+"_"+e+"-onlyOneStart").attr("class","marker onlyOne "+e).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").attr("d","M9,0 L9,18 M15,0 L15,18").attr("stroke-width",`${n}`),t.append("defs").append("marker").attr("id",r+"_"+e+"-onlyOneEnd").attr("class","marker onlyOne "+e).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").attr("d","M3,0 L3,18 M9,0 L9,18").attr("stroke-width",`${n}`)},"only_one_neo"),Q=(0,c.K2)((t,e,r)=>{const i=(0,h.zj)(),{themeVariables:o}=i,{strokeWidth:n,mainBkg:a}=o,s=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrOneStart").attr("class","marker zeroOrOne "+e).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto").attr("markerUnits","userSpaceOnUse");s.append("circle").attr("fill",a??"white").attr("cx",21).attr("cy",9).attr("stroke-width",`${n}`).attr("r",6),s.append("path").attr("d","M9,0 L9,18").attr("stroke-width",`${n}`);const l=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrOneEnd").attr("class","marker zeroOrOne "+e).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("markerUnits","userSpaceOnUse").attr("orient","auto");l.append("circle").attr("fill",a??"white").attr("cx",9).attr("cy",9).attr("stroke-width",`${n}`).attr("r",6),l.append("path").attr("d","M21,0 L21,18").attr("stroke-width",`${n}`)},"zero_or_one_neo"),J=(0,c.K2)((t,e,r)=>{const i=(0,h.zj)(),{themeVariables:o}=i,{strokeWidth:n}=o;t.append("defs").append("marker").attr("id",r+"_"+e+"-oneOrMoreStart").attr("class","marker oneOrMore "+e).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27").attr("stroke-width",`${n}`),t.append("defs").append("marker").attr("id",r+"_"+e+"-oneOrMoreEnd").attr("class","marker oneOrMore "+e).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18").attr("stroke-width",`${n}`)},"one_or_more_neo"),tt=(0,c.K2)((t,e,r)=>{const i=(0,h.zj)(),{themeVariables:o}=i,{strokeWidth:n,mainBkg:a}=o,s=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrMoreStart").attr("class","marker zeroOrMore "+e).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("markerUnits","userSpaceOnUse").attr("orient","auto");s.append("circle").attr("fill",a??"white").attr("cx",45.5).attr("cy",18).attr("r",6).attr("stroke-width",`${n}`),s.append("path").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18").attr("stroke-width",`${n}`);const l=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrMoreEnd").attr("class","marker zeroOrMore "+e).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto").attr("markerUnits","userSpaceOnUse");l.append("circle").attr("fill",a??"white").attr("cx",11).attr("cy",18).attr("r",6).attr("stroke-width",`${n}`),l.append("path").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18").attr("stroke-width",`${n}`)},"zero_or_more_neo"),et=(0,c.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-requirement_arrowEnd").attr("refX",20).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("path").attr("d","M0,0\n L20,10\n M20,10\n L0,20")},"requirement_arrow"),rt=(0,c.K2)((t,e,r)=>{const i=(0,h.zj)(),{themeVariables:o}=i,{strokeWidth:n}=o;t.append("defs").append("marker").attr("id",r+"_"+e+"-requirement_arrowEnd").attr("refX",20).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").attr("markerUnits","userSpaceOnUse").attr("stroke-width",`${n}`).attr("viewBox","0 0 25 20").append("path").attr("d","M0,0\n L20,10\n M20,10\n L0,20").attr("stroke-linejoin","miter")},"requirement_arrow_neo"),it={extension:P,composition:q,aggregation:R,dependency:z,lollipop:K,point:N,circle:j,cross:W,barb:H,barbNeo:U,only_one:Y,zero_or_one:G,one_or_more:X,zero_or_more:V,only_one_neo:Z,zero_or_one_neo:Q,one_or_more_neo:J,zero_or_more_neo:tt,requirement_arrow:et,requirement_contains:(0,c.K2)((t,e,r)=>{const i=t.append("defs").append("marker").attr("id",r+"_"+e+"-requirement_containsStart").attr("refX",0).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("g");i.append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),i.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),i.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10)},"requirement_contains"),requirement_arrow_neo:rt,requirement_contains_neo:(0,c.K2)((t,e,r)=>{const i=(0,h.zj)(),{themeVariables:o}=i,{strokeWidth:n}=o,a=t.append("defs").append("marker").attr("id",r+"_"+e+"-requirement_containsStart").attr("refX",0).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("g");a.append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),a.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),a.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10),a.selectAll("*").attr("stroke-width",`${n}`)},"requirement_contains_neo")},ot=I},5105(t,e,r){"use strict";r.d(e,{O:()=>a,X:()=>s});var i=r(8515),o=r(3706),n=r(797),a=(0,n.K2)(({flowchart:t})=>{const e=t?.subGraphTitleMargin?.top??0,r=t?.subGraphTitleMargin?.bottom??0;return{subGraphTitleTopMargin:e,subGraphTitleBottomMargin:r,subGraphTitleTotalMargin:e+r}},"getSubGraphTitleMargins");async function s(t,e){const r=t.getElementsByTagName("img");if(!r||0===r.length)return;const a=""===e.replace(/<img[^>]*>/g,"").trim();await Promise.all([...r].map(t=>new Promise(e=>{function r(){if(t.style.display="flex",t.style.flexDirection="column",a){const e=(0,o.D7)().fontSize?(0,o.D7)().fontSize:window.getComputedStyle(document.body).fontSize,r=5,[n=o.UI.fontSize]=(0,i.I5)(e),a=n*r+"px";t.style.minWidth=a,t.style.maxWidth=a}else t.style.width="100%";e(t)}(0,n.K2)(r,"setupImage"),setTimeout(()=>{t.complete&&r()}),t.addEventListener("error",r),t.addEventListener("load",r)})))}(0,n.K2)(s,"configureLabelImages")},3848(t,e,r){"use strict";r.d(e,{XX:()=>d,q7:()=>u,sO:()=>c});var i=r(6615),o=r(273),n=r(8515),a=r(3706),s=r(797),l={common:a.Y2,getConfig:a.zj,insertCluster:o.U,insertEdge:i.Jo,insertEdgeLabel:i.jP,insertMarkers:i.g0,insertNode:o.on,interpolateToCurve:n.Ib,labelHelper:o.Zk,log:s.Rm,positionEdgeLabel:i.T_},h={},c=(0,s.K2)(t=>{for(const e of t)h[e.name]=e},"registerLayoutLoaders");(0,s.K2)(()=>{c([{name:"dagre",loader:(0,s.K2)(async()=>await Promise.all([r.e(697),r.e(1301),r.e(7563)]).then(r.bind(r,7563)),"loader")},{name:"cose-bilkent",loader:(0,s.K2)(async()=>await Promise.all([r.e(165),r.e(7928)]).then(r.bind(r,7928)),"loader")}])},"registerDefaultLayoutLoaders")();var d=(0,s.K2)(async(t,e)=>{if(!(t.layoutAlgorithm in h))throw new Error(`Unknown layout algorithm: ${t.layoutAlgorithm}`);if(t.diagramId)for(const l of t.nodes){const e=l.domId||l.id;l.domId=`${t.diagramId}-${e}`}const r=h[t.layoutAlgorithm],i=await r.loader(),{theme:o,themeVariables:n}=t.config,{useGradient:a,gradientStart:s,gradientStop:c}=n,d=e.attr("id");if(e.append("defs").append("filter").attr("id",`${d}-drop-shadow`).attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",""+(o?.includes("dark")?"#FFFFFF":"#000000")),e.append("defs").append("filter").attr("id",`${d}-drop-shadow-small`).attr("height","150%").attr("width","150%").append("feDropShadow").attr("dx","2").attr("dy","2").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",""+(o?.includes("dark")?"#FFFFFF":"#000000")),a){const t=e.append("linearGradient").attr("id",e.attr("id")+"-gradient").attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");t.append("svg:stop").attr("offset","0%").attr("stop-color",s).attr("stop-opacity",1),t.append("svg:stop").attr("offset","100%").attr("stop-color",c).attr("stop-opacity",1)}return i.render(t,e,l,{algorithm:r.algorithm})},"render"),u=(0,s.K2)((t="",{fallback:e="dagre"}={})=>{if(t in h)return t;if(e in h)return s.Rm.warn(`Layout algorithm ${t} is not registered. Using ${e} as fallback.`),e;throw new Error(`Both layout algorithms ${t} and ${e} are not registered.`)},"getRegisteredLayoutAlgorithm")},8013(t,e,r){"use strict";r.d(e,{Fr:()=>c,GX:()=>h,KX:()=>l,WW:()=>a,ue:()=>n});var i=r(3706),o=r(797),n=(0,o.K2)(t=>{const{handDrawnSeed:e}=(0,i.D7)();return{fill:t,hachureAngle:120,hachureGap:4,fillWeight:2,roughness:.7,stroke:t,seed:e}},"solidStateFill"),a=(0,o.K2)(t=>{const e=s([...t.cssCompiledStyles||[],...t.cssStyles||[],...t.labelStyle||[]]);return{stylesMap:e,stylesArray:[...e]}},"compileStyles"),s=(0,o.K2)(t=>{const e=new Map;return t.forEach(t=>{const[r,i]=t.split(":");e.set(r.trim(),i?.trim())}),e},"styles2Map"),l=(0,o.K2)(t=>"color"===t||"font-size"===t||"font-family"===t||"font-weight"===t||"font-style"===t||"text-decoration"===t||"text-align"===t||"text-transform"===t||"line-height"===t||"letter-spacing"===t||"word-spacing"===t||"text-shadow"===t||"text-overflow"===t||"white-space"===t||"word-wrap"===t||"word-break"===t||"overflow-wrap"===t||"hyphens"===t,"isLabelStyle"),h=(0,o.K2)(t=>{const{stylesArray:e}=a(t),r=[],i=[],o=[],n=[];return e.forEach(t=>{const e=t[0];l(e)?r.push(t.join(":")+" !important"):(i.push(t.join(":")+" !important"),e.includes("stroke")&&o.push(t.join(":")+" !important"),"fill"===e&&n.push(t.join(":")+" !important"))}),{labelStyles:r.join(";"),nodeStyles:i.join(";"),stylesArray:e,borderStyles:o,backgroundStyles:n}},"styles2String"),c=(0,o.K2)((t,e)=>{const{themeVariables:r,handDrawnSeed:o}=(0,i.D7)(),{nodeBorder:n,mainBkg:s}=r,{stylesMap:l}=a(t);return Object.assign({roughness:.7,fill:l.get("fill")||s,fillStyle:"hachure",fillWeight:4,hachureGap:5.2,stroke:l.get("stroke")||n,seed:o,strokeWidth:l.get("stroke-width")?.replace("px","")||1.3,fillLineDash:[0,0],strokeLineDash:d(l.get("stroke-dasharray"))},e)},"userNodeOverrides"),d=(0,o.K2)(t=>{if(!t)return[0,0];const e=t.trim().split(/\s+/).map(Number);if(1===e.length){const t=isNaN(e[0])?0:e[0];return[t,t]}return[isNaN(e[0])?0:e[0],isNaN(e[1])?0:e[1]]},"getStrokeDashArray")},5739(t,e,r){"use strict";r.d(e,{W6:()=>ne,GZ:()=>ce,WY:()=>Wt,pC:()=>Kt,Gc:()=>qt});var i=r(8515),o=r(3706),n=r(797);const a=(t,e)=>!!t&&!(!(e&&""===t.prefix||t.prefix)||!t.name),s=Object.freeze({left:0,top:0,width:16,height:16}),l=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),h=Object.freeze({...s,...l}),c=Object.freeze({...h,body:"",hidden:!1});function d(t,e){const r=function(t,e){const r={};!t.hFlip!=!e.hFlip&&(r.hFlip=!0),!t.vFlip!=!e.vFlip&&(r.vFlip=!0);const i=((t.rotate||0)+(e.rotate||0))%4;return i&&(r.rotate=i),r}(t,e);for(const i in c)i in l?i in t&&!(i in r)&&(r[i]=l[i]):i in e?r[i]=e[i]:i in t&&(r[i]=t[i]);return r}function u(t,e,r){const i=t.icons,o=t.aliases||Object.create(null);let n={};function a(t){n=d(i[t]||o[t],n)}return a(e),r.forEach(a),d(t,n)}function p(t,e){if(t.icons[e])return u(t,e,[]);const r=function(t,e){const r=t.icons,i=t.aliases||Object.create(null),o=Object.create(null);return(e||Object.keys(r).concat(Object.keys(i))).forEach(function t(e){if(r[e])return o[e]=[];if(!(e in o)){o[e]=null;const r=i[e]&&i[e].parent,n=r&&t(r);n&&(o[e]=[r].concat(n))}return o[e]}),o}(t,[e])[e];return r?u(t,e,r):null}const g=Object.freeze({width:null,height:null}),f=Object.freeze({...g,...l}),y=/(-?[0-9.]*[0-9]+[0-9.]*)/g,m=/^-?[0-9.]*[0-9]+[0-9.]*$/g;function C(t,e,r){if(1===e)return t;if(r=r||100,"number"==typeof t)return Math.ceil(t*e*r)/r;if("string"!=typeof t)return t;const i=t.split(y);if(null===i||!i.length)return t;const o=[];let n=i.shift(),a=m.test(n);for(;;){if(a){const t=parseFloat(n);isNaN(t)?o.push(n):o.push(Math.ceil(t*e*r)/r)}else o.push(n);if(n=i.shift(),void 0===n)return o.join("");a=!a}}const x=/\sid="(\S+)"/g,b=new Map;function k(t){const e=[];let r;for(;r=x.exec(t);)e.push(r[1]);if(!e.length)return t;const i="suffix"+(16777216*Math.random()|Date.now()).toString(16);return e.forEach(e=>{const r=function(t){t=t.replace(/[0-9]+$/,"")||"a";const e=b.get(t)||0;return b.set(t,e+1),e?`${t}${e}`:t}(e),o=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");t=t.replace(new RegExp('([#;"])('+o+')([")]|\\.[a-z])',"g"),"$1"+r+i+"$3")}),t=t.replace(new RegExp(i,"g"),"")}var w=r(451);function T(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var S={async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null};function v(t){S=t}var B={exec:()=>null};function _(t,e=""){let r="string"==typeof t?t:t.source,i={replace:(t,e)=>{let o="string"==typeof e?e:e.source;return o=o.replace(L.caret,"$1"),r=r.replace(t,o),i},getRegex:()=>new RegExp(r,e)};return i}var A=(()=>{try{return!!new RegExp("(?<=1)(?<!1)")}catch{return!1}})(),L={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:t=>new RegExp(`^( {0,3}${t})((?:[\t ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`),hrRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}#`),htmlBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}<(?:[a-z].*>|!--)`,"i")},F=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,M=/(?:[*+-]|\d{1,9}[.)])/,E=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,$=_(E).replace(/bull/g,M).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),O=_(E).replace(/bull/g,M).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),D=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,I=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,P=_(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",I).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),q=_(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,M).getRegex(),R="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",z=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,K=_("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$))","i").replace("comment",z).replace("tag",R).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),N=_(D).replace("hr",F).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",R).getRegex(),j={blockquote:_(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",N).getRegex(),code:/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,def:P,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,hr:F,html:K,lheading:$,list:q,newline:/^(?:[ \t]*(?:\n|$))+/,paragraph:N,table:B,text:/^[^\n]+/},W=_("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",F).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3}\t)[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",R).getRegex(),H={...j,lheading:O,table:W,paragraph:_(D).replace("hr",F).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",W).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",R).getRegex()},U={...j,html:_("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",z).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:B,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:_(D).replace("hr",F).replace("heading"," *#{1,6} *[^\n]").replace("lheading",$).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Y=/^( {2,}|\\)\n(?!\s*$)/,G=/[\p{P}\p{S}]/u,X=/[\s\p{P}\p{S}]/u,V=/[^\s\p{P}\p{S}]/u,Z=_(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,X).getRegex(),Q=/(?!~)[\p{P}\p{S}]/u,J=_(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",A?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),tt=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,et=_(tt,"u").replace(/punct/g,G).getRegex(),rt=_(tt,"u").replace(/punct/g,Q).getRegex(),it="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",ot=_(it,"gu").replace(/notPunctSpace/g,V).replace(/punctSpace/g,X).replace(/punct/g,G).getRegex(),nt=_(it,"gu").replace(/notPunctSpace/g,/(?:[^\s\p{P}\p{S}]|~)/u).replace(/punctSpace/g,/(?!~)[\s\p{P}\p{S}]/u).replace(/punct/g,Q).getRegex(),at=_("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,V).replace(/punctSpace/g,X).replace(/punct/g,G).getRegex(),st=_(/\\(punct)/,"gu").replace(/punct/g,G).getRegex(),lt=_(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),ht=_(z).replace("(?:--\x3e|$)","--\x3e").getRegex(),ct=_("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",ht).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),dt=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/,ut=_(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",dt).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),pt=_(/^!?\[(label)\]\[(ref)\]/).replace("label",dt).replace("ref",I).getRegex(),gt=_(/^!?\[(ref)\](?:\[\])?/).replace("ref",I).getRegex(),ft=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,yt={_backpedal:B,anyPunctuation:st,autolink:lt,blockSkip:J,br:Y,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,del:B,emStrongLDelim:et,emStrongRDelimAst:ot,emStrongRDelimUnd:at,escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,link:ut,nolink:gt,punctuation:Z,reflink:pt,reflinkSearch:_("reflink|nolink(?!\\()","g").replace("reflink",pt).replace("nolink",gt).getRegex(),tag:ct,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,url:B},mt={...yt,link:_(/^!?\[(label)\]\((.*?)\)/).replace("label",dt).getRegex(),reflink:_(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",dt).getRegex()},Ct={...yt,emStrongRDelimAst:nt,emStrongLDelim:rt,url:_(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",ft).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:_(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",ft).getRegex()},xt={...Ct,br:_(Y).replace("{2,}","*").getRegex(),text:_(Ct.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},bt={normal:j,gfm:H,pedantic:U},kt={normal:yt,gfm:Ct,breaks:xt,pedantic:mt},wt={"&":"&","<":"<",">":">",'"':""","'":"'"},Tt=t=>wt[t];function St(t,e){if(e){if(L.escapeTest.test(t))return t.replace(L.escapeReplace,Tt)}else if(L.escapeTestNoEncode.test(t))return t.replace(L.escapeReplaceNoEncode,Tt);return t}function vt(t){try{t=encodeURI(t).replace(L.percentDecode,"%")}catch{return null}return t}function Bt(t,e){let r=t.replace(L.findPipe,(t,e,r)=>{let i=!1,o=e;for(;--o>=0&&"\\"===r[o];)i=!i;return i?"|":" |"}).split(L.splitPipe),i=0;if(r[0].trim()||r.shift(),r.length>0&&!r.at(-1)?.trim()&&r.pop(),e)if(r.length>e)r.splice(e);else for(;r.length<e;)r.push("");for(;i<r.length;i++)r[i]=r[i].trim().replace(L.slashPipe,"|");return r}function _t(t,e,r){let i=t.length;if(0===i)return"";let o=0;for(;o<i;){let n=t.charAt(i-o-1);if(n!==e||r){if(n===e||!r)break;o++}else o++}return t.slice(0,i-o)}function At(t,e,r,i,o){let n=e.href,a=e.title||null,s=t[1].replace(o.other.outputLinkReplace,"$1");i.state.inLink=!0;let l={type:"!"===t[0].charAt(0)?"image":"link",raw:r,href:n,title:a,text:s,tokens:i.inlineTokens(s)};return i.state.inLink=!1,l}var Lt=class{options;rules;lexer;constructor(t){this.options=t||S}space(t){let e=this.rules.block.newline.exec(t);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(t){let e=this.rules.block.code.exec(t);if(e){let t=e[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?t:_t(t,"\n")}}}fences(t){let e=this.rules.block.fences.exec(t);if(e){let t=e[0],r=function(t,e,r){let i=t.match(r.other.indentCodeCompensation);if(null===i)return e;let o=i[1];return e.split("\n").map(t=>{let e=t.match(r.other.beginningSpace);if(null===e)return t;let[i]=e;return i.length>=o.length?t.slice(o.length):t}).join("\n")}(t,e[3]||"",this.rules);return{type:"code",raw:t,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:r}}}heading(t){let e=this.rules.block.heading.exec(t);if(e){let t=e[2].trim();if(this.rules.other.endingHash.test(t)){let e=_t(t,"#");(this.options.pedantic||!e||this.rules.other.endingSpaceChar.test(e))&&(t=e.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:t,tokens:this.lexer.inline(t)}}}hr(t){let e=this.rules.block.hr.exec(t);if(e)return{type:"hr",raw:_t(e[0],"\n")}}blockquote(t){let e=this.rules.block.blockquote.exec(t);if(e){let t=_t(e[0],"\n").split("\n"),r="",i="",o=[];for(;t.length>0;){let e,n=!1,a=[];for(e=0;e<t.length;e++)if(this.rules.other.blockquoteStart.test(t[e]))a.push(t[e]),n=!0;else{if(n)break;a.push(t[e])}t=t.slice(e);let s=a.join("\n"),l=s.replace(this.rules.other.blockquoteSetextReplace,"\n $1").replace(this.rules.other.blockquoteSetextReplace2,"");r=r?`${r}\n${s}`:s,i=i?`${i}\n${l}`:l;let h=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(l,o,!0),this.lexer.state.top=h,0===t.length)break;let c=o.at(-1);if("code"===c?.type)break;if("blockquote"===c?.type){let e=c,n=e.raw+"\n"+t.join("\n"),a=this.blockquote(n);o[o.length-1]=a,r=r.substring(0,r.length-e.raw.length)+a.raw,i=i.substring(0,i.length-e.text.length)+a.text;break}if("list"===c?.type){let e=c,n=e.raw+"\n"+t.join("\n"),a=this.list(n);o[o.length-1]=a,r=r.substring(0,r.length-c.raw.length)+a.raw,i=i.substring(0,i.length-e.raw.length)+a.raw,t=n.substring(o.at(-1).raw.length).split("\n");continue}}return{type:"blockquote",raw:r,tokens:o,text:i}}}list(t){let e=this.rules.block.list.exec(t);if(e){let r=e[1].trim(),i=r.length>1,o={type:"list",raw:"",ordered:i,start:i?+r.slice(0,-1):"",loose:!1,items:[]};r=i?`\\d{1,9}\\${r.slice(-1)}`:`\\${r}`,this.options.pedantic&&(r=i?r:"[*+-]");let n=this.rules.other.listItemRegex(r),a=!1;for(;t;){let r=!1,i="",s="";if(!(e=n.exec(t))||this.rules.block.hr.test(t))break;i=e[0],t=t.substring(i.length);let l=e[2].split("\n",1)[0].replace(this.rules.other.listReplaceTabs,t=>" ".repeat(3*t.length)),h=t.split("\n",1)[0],c=!l.trim(),d=0;if(this.options.pedantic?(d=2,s=l.trimStart()):c?d=e[1].length+1:(d=e[2].search(this.rules.other.nonSpaceChar),d=d>4?1:d,s=l.slice(d),d+=e[1].length),c&&this.rules.other.blankLine.test(h)&&(i+=h+"\n",t=t.substring(h.length+1),r=!0),!r){let e=this.rules.other.nextBulletRegex(d),r=this.rules.other.hrRegex(d),o=this.rules.other.fencesBeginRegex(d),n=this.rules.other.headingBeginRegex(d),a=this.rules.other.htmlBeginRegex(d);for(;t;){let u,p=t.split("\n",1)[0];if(h=p,this.options.pedantic?(h=h.replace(this.rules.other.listReplaceNesting," "),u=h):u=h.replace(this.rules.other.tabCharGlobal," "),o.test(h)||n.test(h)||a.test(h)||e.test(h)||r.test(h))break;if(u.search(this.rules.other.nonSpaceChar)>=d||!h.trim())s+="\n"+u.slice(d);else{if(c||l.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||o.test(l)||n.test(l)||r.test(l))break;s+="\n"+h}!c&&!h.trim()&&(c=!0),i+=p+"\n",t=t.substring(p.length+1),l=u.slice(d)}}o.loose||(a?o.loose=!0:this.rules.other.doubleBlankLine.test(i)&&(a=!0));let u,p=null;this.options.gfm&&(p=this.rules.other.listIsTask.exec(s),p&&(u="[ ] "!==p[0],s=s.replace(this.rules.other.listReplaceTask,""))),o.items.push({type:"list_item",raw:i,task:!!p,checked:u,loose:!1,text:s,tokens:[]}),o.raw+=i}let s=o.items.at(-1);if(!s)return;s.raw=s.raw.trimEnd(),s.text=s.text.trimEnd(),o.raw=o.raw.trimEnd();for(let t=0;t<o.items.length;t++)if(this.lexer.state.top=!1,o.items[t].tokens=this.lexer.blockTokens(o.items[t].text,[]),!o.loose){let e=o.items[t].tokens.filter(t=>"space"===t.type),r=e.length>0&&e.some(t=>this.rules.other.anyLine.test(t.raw));o.loose=r}if(o.loose)for(let t=0;t<o.items.length;t++)o.items[t].loose=!0;return o}}html(t){let e=this.rules.block.html.exec(t);if(e)return{type:"html",block:!0,raw:e[0],pre:"pre"===e[1]||"script"===e[1]||"style"===e[1],text:e[0]}}def(t){let e=this.rules.block.def.exec(t);if(e){let t=e[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),r=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",i=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:t,raw:e[0],href:r,title:i}}}table(t){let e=this.rules.block.table.exec(t);if(!e||!this.rules.other.tableDelimiter.test(e[2]))return;let r=Bt(e[1]),i=e[2].replace(this.rules.other.tableAlignChars,"").split("|"),o=e[3]?.trim()?e[3].replace(this.rules.other.tableRowBlankLine,"").split("\n"):[],n={type:"table",raw:e[0],header:[],align:[],rows:[]};if(r.length===i.length){for(let t of i)this.rules.other.tableAlignRight.test(t)?n.align.push("right"):this.rules.other.tableAlignCenter.test(t)?n.align.push("center"):this.rules.other.tableAlignLeft.test(t)?n.align.push("left"):n.align.push(null);for(let t=0;t<r.length;t++)n.header.push({text:r[t],tokens:this.lexer.inline(r[t]),header:!0,align:n.align[t]});for(let t of o)n.rows.push(Bt(t,n.header.length).map((t,e)=>({text:t,tokens:this.lexer.inline(t),header:!1,align:n.align[e]})));return n}}lheading(t){let e=this.rules.block.lheading.exec(t);if(e)return{type:"heading",raw:e[0],depth:"="===e[2].charAt(0)?1:2,text:e[1],tokens:this.lexer.inline(e[1])}}paragraph(t){let e=this.rules.block.paragraph.exec(t);if(e){let t="\n"===e[1].charAt(e[1].length-1)?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:t,tokens:this.lexer.inline(t)}}}text(t){let e=this.rules.block.text.exec(t);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(t){let e=this.rules.inline.escape.exec(t);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(t){let e=this.rules.inline.tag.exec(t);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(t){let e=this.rules.inline.link.exec(t);if(e){let t=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(t)){if(!this.rules.other.endAngleBracket.test(t))return;let e=_t(t.slice(0,-1),"\\");if((t.length-e.length)%2==0)return}else{let t=function(t,e){if(-1===t.indexOf(e[1]))return-1;let r=0;for(let i=0;i<t.length;i++)if("\\"===t[i])i++;else if(t[i]===e[0])r++;else if(t[i]===e[1]&&(r--,r<0))return i;return r>0?-2:-1}(e[2],"()");if(-2===t)return;if(t>-1){let r=(0===e[0].indexOf("!")?5:4)+e[1].length+t;e[2]=e[2].substring(0,t),e[0]=e[0].substring(0,r).trim(),e[3]=""}}let r=e[2],i="";if(this.options.pedantic){let t=this.rules.other.pedanticHrefTitle.exec(r);t&&(r=t[1],i=t[3])}else i=e[3]?e[3].slice(1,-1):"";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(r=this.options.pedantic&&!this.rules.other.endAngleBracket.test(t)?r.slice(1):r.slice(1,-1)),At(e,{href:r&&r.replace(this.rules.inline.anyPunctuation,"$1"),title:i&&i.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(t,e){let r;if((r=this.rules.inline.reflink.exec(t))||(r=this.rules.inline.nolink.exec(t))){let t=e[(r[2]||r[1]).replace(this.rules.other.multipleSpaceGlobal," ").toLowerCase()];if(!t){let t=r[0].charAt(0);return{type:"text",raw:t,text:t}}return At(r,t,r[0],this.lexer,this.rules)}}emStrong(t,e,r=""){let i=this.rules.inline.emStrongLDelim.exec(t);if(!(!i||i[3]&&r.match(this.rules.other.unicodeAlphaNumeric))&&(!i[1]&&!i[2]||!r||this.rules.inline.punctuation.exec(r))){let r,o,n=[...i[0]].length-1,a=n,s=0,l="*"===i[0][0]?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(l.lastIndex=0,e=e.slice(-1*t.length+n);null!=(i=l.exec(e));){if(r=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!r)continue;if(o=[...r].length,i[3]||i[4]){a+=o;continue}if((i[5]||i[6])&&n%3&&!((n+o)%3)){s+=o;continue}if(a-=o,a>0)continue;o=Math.min(o,o+a+s);let e=[...i[0]][0].length,l=t.slice(0,n+i.index+e+o);if(Math.min(n,o)%2){let t=l.slice(1,-1);return{type:"em",raw:l,text:t,tokens:this.lexer.inlineTokens(t)}}let h=l.slice(2,-2);return{type:"strong",raw:l,text:h,tokens:this.lexer.inlineTokens(h)}}}}codespan(t){let e=this.rules.inline.code.exec(t);if(e){let t=e[2].replace(this.rules.other.newLineCharGlobal," "),r=this.rules.other.nonSpaceChar.test(t),i=this.rules.other.startingSpaceChar.test(t)&&this.rules.other.endingSpaceChar.test(t);return r&&i&&(t=t.substring(1,t.length-1)),{type:"codespan",raw:e[0],text:t}}}br(t){let e=this.rules.inline.br.exec(t);if(e)return{type:"br",raw:e[0]}}del(t){let e=this.rules.inline.del.exec(t);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}}autolink(t){let e=this.rules.inline.autolink.exec(t);if(e){let t,r;return"@"===e[2]?(t=e[1],r="mailto:"+t):(t=e[1],r=t),{type:"link",raw:e[0],text:t,href:r,tokens:[{type:"text",raw:t,text:t}]}}}url(t){let e;if(e=this.rules.inline.url.exec(t)){let t,r;if("@"===e[2])t=e[0],r="mailto:"+t;else{let i;do{i=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??""}while(i!==e[0]);t=e[0],r="www."===e[1]?"http://"+e[0]:e[0]}return{type:"link",raw:e[0],text:t,href:r,tokens:[{type:"text",raw:t,text:t}]}}}inlineText(t){let e=this.rules.inline.text.exec(t);if(e){let t=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:t}}}},Ft=class t{tokens;options;state;tokenizer;inlineQueue;constructor(t){this.tokens=[],this.tokens.links=Object.create(null),this.options=t||S,this.options.tokenizer=this.options.tokenizer||new Lt,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let e={other:L,block:bt.normal,inline:kt.normal};this.options.pedantic?(e.block=bt.pedantic,e.inline=kt.pedantic):this.options.gfm&&(e.block=bt.gfm,this.options.breaks?e.inline=kt.breaks:e.inline=kt.gfm),this.tokenizer.rules=e}static get rules(){return{block:bt,inline:kt}}static lex(e,r){return new t(r).lex(e)}static lexInline(e,r){return new t(r).inlineTokens(e)}lex(t){t=t.replace(L.carriageReturn,"\n"),this.blockTokens(t,this.tokens);for(let e=0;e<this.inlineQueue.length;e++){let t=this.inlineQueue[e];this.inlineTokens(t.src,t.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(t,e=[],r=!1){for(this.options.pedantic&&(t=t.replace(L.tabCharGlobal," ").replace(L.spaceLine,""));t;){let i;if(this.options.extensions?.block?.some(r=>!!(i=r.call({lexer:this},t,e))&&(t=t.substring(i.raw.length),e.push(i),!0)))continue;if(i=this.tokenizer.space(t)){t=t.substring(i.raw.length);let r=e.at(-1);1===i.raw.length&&void 0!==r?r.raw+="\n":e.push(i);continue}if(i=this.tokenizer.code(t)){t=t.substring(i.raw.length);let r=e.at(-1);"paragraph"===r?.type||"text"===r?.type?(r.raw+=(r.raw.endsWith("\n")?"":"\n")+i.raw,r.text+="\n"+i.text,this.inlineQueue.at(-1).src=r.text):e.push(i);continue}if(i=this.tokenizer.fences(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.heading(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.hr(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.blockquote(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.list(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.html(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.def(t)){t=t.substring(i.raw.length);let r=e.at(-1);"paragraph"===r?.type||"text"===r?.type?(r.raw+=(r.raw.endsWith("\n")?"":"\n")+i.raw,r.text+="\n"+i.raw,this.inlineQueue.at(-1).src=r.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title},e.push(i));continue}if(i=this.tokenizer.table(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.lheading(t)){t=t.substring(i.raw.length),e.push(i);continue}let o=t;if(this.options.extensions?.startBlock){let e,r=1/0,i=t.slice(1);this.options.extensions.startBlock.forEach(t=>{e=t.call({lexer:this},i),"number"==typeof e&&e>=0&&(r=Math.min(r,e))}),r<1/0&&r>=0&&(o=t.substring(0,r+1))}if(this.state.top&&(i=this.tokenizer.paragraph(o))){let n=e.at(-1);r&&"paragraph"===n?.type?(n.raw+=(n.raw.endsWith("\n")?"":"\n")+i.raw,n.text+="\n"+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=n.text):e.push(i),r=o.length!==t.length,t=t.substring(i.raw.length);continue}if(i=this.tokenizer.text(t)){t=t.substring(i.raw.length);let r=e.at(-1);"text"===r?.type?(r.raw+=(r.raw.endsWith("\n")?"":"\n")+i.raw,r.text+="\n"+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=r.text):e.push(i);continue}if(t){let e="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(e);break}throw new Error(e)}}return this.state.top=!0,e}inline(t,e=[]){return this.inlineQueue.push({src:t,tokens:e}),e}inlineTokens(t,e=[]){let r,i=t,o=null;if(this.tokens.links){let t=Object.keys(this.tokens.links);if(t.length>0)for(;null!=(o=this.tokenizer.rules.inline.reflinkSearch.exec(i));)t.includes(o[0].slice(o[0].lastIndexOf("[")+1,-1))&&(i=i.slice(0,o.index)+"["+"a".repeat(o[0].length-2)+"]"+i.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(o=this.tokenizer.rules.inline.anyPunctuation.exec(i));)i=i.slice(0,o.index)+"++"+i.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;null!=(o=this.tokenizer.rules.inline.blockSkip.exec(i));)r=o[2]?o[2].length:0,i=i.slice(0,o.index+r)+"["+"a".repeat(o[0].length-r-2)+"]"+i.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);i=this.options.hooks?.emStrongMask?.call({lexer:this},i)??i;let n=!1,a="";for(;t;){let r;if(n||(a=""),n=!1,this.options.extensions?.inline?.some(i=>!!(r=i.call({lexer:this},t,e))&&(t=t.substring(r.raw.length),e.push(r),!0)))continue;if(r=this.tokenizer.escape(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.tag(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.link(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(r.raw.length);let i=e.at(-1);"text"===r.type&&"text"===i?.type?(i.raw+=r.raw,i.text+=r.text):e.push(r);continue}if(r=this.tokenizer.emStrong(t,i,a)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.codespan(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.br(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.del(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.autolink(t)){t=t.substring(r.raw.length),e.push(r);continue}if(!this.state.inLink&&(r=this.tokenizer.url(t))){t=t.substring(r.raw.length),e.push(r);continue}let o=t;if(this.options.extensions?.startInline){let e,r=1/0,i=t.slice(1);this.options.extensions.startInline.forEach(t=>{e=t.call({lexer:this},i),"number"==typeof e&&e>=0&&(r=Math.min(r,e))}),r<1/0&&r>=0&&(o=t.substring(0,r+1))}if(r=this.tokenizer.inlineText(o)){t=t.substring(r.raw.length),"_"!==r.raw.slice(-1)&&(a=r.raw.slice(-1)),n=!0;let i=e.at(-1);"text"===i?.type?(i.raw+=r.raw,i.text+=r.text):e.push(r);continue}if(t){let e="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(e);break}throw new Error(e)}}return e}},Mt=class{options;parser;constructor(t){this.options=t||S}space(t){return""}code({text:t,lang:e,escaped:r}){let i=(e||"").match(L.notSpaceStart)?.[0],o=t.replace(L.endingNewline,"")+"\n";return i?'<pre><code class="language-'+St(i)+'">'+(r?o:St(o,!0))+"</code></pre>\n":"<pre><code>"+(r?o:St(o,!0))+"</code></pre>\n"}blockquote({tokens:t}){return`<blockquote>\n${this.parser.parse(t)}</blockquote>\n`}html({text:t}){return t}def(t){return""}heading({tokens:t,depth:e}){return`<h${e}>${this.parser.parseInline(t)}</h${e}>\n`}hr(t){return"<hr>\n"}list(t){let e=t.ordered,r=t.start,i="";for(let n=0;n<t.items.length;n++){let e=t.items[n];i+=this.listitem(e)}let o=e?"ol":"ul";return"<"+o+(e&&1!==r?' start="'+r+'"':"")+">\n"+i+"</"+o+">\n"}listitem(t){let e="";if(t.task){let r=this.checkbox({checked:!!t.checked});t.loose?"paragraph"===t.tokens[0]?.type?(t.tokens[0].text=r+" "+t.tokens[0].text,t.tokens[0].tokens&&t.tokens[0].tokens.length>0&&"text"===t.tokens[0].tokens[0].type&&(t.tokens[0].tokens[0].text=r+" "+St(t.tokens[0].tokens[0].text),t.tokens[0].tokens[0].escaped=!0)):t.tokens.unshift({type:"text",raw:r+" ",text:r+" ",escaped:!0}):e+=r+" "}return e+=this.parser.parse(t.tokens,!!t.loose),`<li>${e}</li>\n`}checkbox({checked:t}){return"<input "+(t?'checked="" ':"")+'disabled="" type="checkbox">'}paragraph({tokens:t}){return`<p>${this.parser.parseInline(t)}</p>\n`}table(t){let e="",r="";for(let o=0;o<t.header.length;o++)r+=this.tablecell(t.header[o]);e+=this.tablerow({text:r});let i="";for(let o=0;o<t.rows.length;o++){let e=t.rows[o];r="";for(let t=0;t<e.length;t++)r+=this.tablecell(e[t]);i+=this.tablerow({text:r})}return i&&(i=`<tbody>${i}</tbody>`),"<table>\n<thead>\n"+e+"</thead>\n"+i+"</table>\n"}tablerow({text:t}){return`<tr>\n${t}</tr>\n`}tablecell(t){let e=this.parser.parseInline(t.tokens),r=t.header?"th":"td";return(t.align?`<${r} align="${t.align}">`:`<${r}>`)+e+`</${r}>\n`}strong({tokens:t}){return`<strong>${this.parser.parseInline(t)}</strong>`}em({tokens:t}){return`<em>${this.parser.parseInline(t)}</em>`}codespan({text:t}){return`<code>${St(t,!0)}</code>`}br(t){return"<br>"}del({tokens:t}){return`<del>${this.parser.parseInline(t)}</del>`}link({href:t,title:e,tokens:r}){let i=this.parser.parseInline(r),o=vt(t);if(null===o)return i;let n='<a href="'+(t=o)+'"';return e&&(n+=' title="'+St(e)+'"'),n+=">"+i+"</a>",n}image({href:t,title:e,text:r,tokens:i}){i&&(r=this.parser.parseInline(i,this.parser.textRenderer));let o=vt(t);if(null===o)return St(r);let n=`<img src="${t=o}" alt="${r}"`;return e&&(n+=` title="${St(e)}"`),n+=">",n}text(t){return"tokens"in t&&t.tokens?this.parser.parseInline(t.tokens):"escaped"in t&&t.escaped?t.text:St(t.text)}},Et=class{strong({text:t}){return t}em({text:t}){return t}codespan({text:t}){return t}del({text:t}){return t}html({text:t}){return t}text({text:t}){return t}link({text:t}){return""+t}image({text:t}){return""+t}br(){return""}},$t=class t{options;renderer;textRenderer;constructor(t){this.options=t||S,this.options.renderer=this.options.renderer||new Mt,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Et}static parse(e,r){return new t(r).parse(e)}static parseInline(e,r){return new t(r).parseInline(e)}parse(t,e=!0){let r="";for(let i=0;i<t.length;i++){let o=t[i];if(this.options.extensions?.renderers?.[o.type]){let t=o,e=this.options.extensions.renderers[t.type].call({parser:this},t);if(!1!==e||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(t.type)){r+=e||"";continue}}let n=o;switch(n.type){case"space":r+=this.renderer.space(n);continue;case"hr":r+=this.renderer.hr(n);continue;case"heading":r+=this.renderer.heading(n);continue;case"code":r+=this.renderer.code(n);continue;case"table":r+=this.renderer.table(n);continue;case"blockquote":r+=this.renderer.blockquote(n);continue;case"list":r+=this.renderer.list(n);continue;case"html":r+=this.renderer.html(n);continue;case"def":r+=this.renderer.def(n);continue;case"paragraph":r+=this.renderer.paragraph(n);continue;case"text":{let o=n,a=this.renderer.text(o);for(;i+1<t.length&&"text"===t[i+1].type;)o=t[++i],a+="\n"+this.renderer.text(o);r+=e?this.renderer.paragraph({type:"paragraph",raw:a,text:a,tokens:[{type:"text",raw:a,text:a,escaped:!0}]}):a;continue}default:{let t='Token with "'+n.type+'" type was not found.';if(this.options.silent)return console.error(t),"";throw new Error(t)}}}return r}parseInline(t,e=this.renderer){let r="";for(let i=0;i<t.length;i++){let o=t[i];if(this.options.extensions?.renderers?.[o.type]){let t=this.options.extensions.renderers[o.type].call({parser:this},o);if(!1!==t||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(o.type)){r+=t||"";continue}}let n=o;switch(n.type){case"escape":case"text":r+=e.text(n);break;case"html":r+=e.html(n);break;case"link":r+=e.link(n);break;case"image":r+=e.image(n);break;case"strong":r+=e.strong(n);break;case"em":r+=e.em(n);break;case"codespan":r+=e.codespan(n);break;case"br":r+=e.br(n);break;case"del":r+=e.del(n);break;default:{let t='Token with "'+n.type+'" type was not found.';if(this.options.silent)return console.error(t),"";throw new Error(t)}}}return r}},Ot=class{options;block;constructor(t){this.options=t||S}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens","emStrongMask"]);static passThroughHooksRespectAsync=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(t){return t}postprocess(t){return t}processAllTokens(t){return t}emStrongMask(t){return t}provideLexer(){return this.block?Ft.lex:Ft.lexInline}provideParser(){return this.block?$t.parse:$t.parseInline}},Dt=new class{defaults={async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null};options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=$t;Renderer=Mt;TextRenderer=Et;Lexer=Ft;Tokenizer=Lt;Hooks=Ot;constructor(...t){this.use(...t)}walkTokens(t,e){let r=[];for(let i of t)switch(r=r.concat(e.call(this,i)),i.type){case"table":{let t=i;for(let i of t.header)r=r.concat(this.walkTokens(i.tokens,e));for(let i of t.rows)for(let t of i)r=r.concat(this.walkTokens(t.tokens,e));break}case"list":{let t=i;r=r.concat(this.walkTokens(t.items,e));break}default:{let t=i;this.defaults.extensions?.childTokens?.[t.type]?this.defaults.extensions.childTokens[t.type].forEach(i=>{let o=t[i].flat(1/0);r=r.concat(this.walkTokens(o,e))}):t.tokens&&(r=r.concat(this.walkTokens(t.tokens,e)))}}return r}use(...t){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(t=>{let r={...t};if(r.async=this.defaults.async||r.async||!1,t.extensions&&(t.extensions.forEach(t=>{if(!t.name)throw new Error("extension name required");if("renderer"in t){let r=e.renderers[t.name];e.renderers[t.name]=r?function(...e){let i=t.renderer.apply(this,e);return!1===i&&(i=r.apply(this,e)),i}:t.renderer}if("tokenizer"in t){if(!t.level||"block"!==t.level&&"inline"!==t.level)throw new Error("extension level must be 'block' or 'inline'");let r=e[t.level];r?r.unshift(t.tokenizer):e[t.level]=[t.tokenizer],t.start&&("block"===t.level?e.startBlock?e.startBlock.push(t.start):e.startBlock=[t.start]:"inline"===t.level&&(e.startInline?e.startInline.push(t.start):e.startInline=[t.start]))}"childTokens"in t&&t.childTokens&&(e.childTokens[t.name]=t.childTokens)}),r.extensions=e),t.renderer){let e=this.defaults.renderer||new Mt(this.defaults);for(let r in t.renderer){if(!(r in e))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;let i=r,o=t.renderer[i],n=e[i];e[i]=(...t)=>{let r=o.apply(e,t);return!1===r&&(r=n.apply(e,t)),r||""}}r.renderer=e}if(t.tokenizer){let e=this.defaults.tokenizer||new Lt(this.defaults);for(let r in t.tokenizer){if(!(r in e))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;let i=r,o=t.tokenizer[i],n=e[i];e[i]=(...t)=>{let r=o.apply(e,t);return!1===r&&(r=n.apply(e,t)),r}}r.tokenizer=e}if(t.hooks){let e=this.defaults.hooks||new Ot;for(let r in t.hooks){if(!(r in e))throw new Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;let i=r,o=t.hooks[i],n=e[i];Ot.passThroughHooks.has(r)?e[i]=t=>{if(this.defaults.async&&Ot.passThroughHooksRespectAsync.has(r))return(async()=>{let r=await o.call(e,t);return n.call(e,r)})();let i=o.call(e,t);return n.call(e,i)}:e[i]=(...t)=>{if(this.defaults.async)return(async()=>{let r=await o.apply(e,t);return!1===r&&(r=await n.apply(e,t)),r})();let r=o.apply(e,t);return!1===r&&(r=n.apply(e,t)),r}}r.hooks=e}if(t.walkTokens){let e=this.defaults.walkTokens,i=t.walkTokens;r.walkTokens=function(t){let r=[];return r.push(i.call(this,t)),e&&(r=r.concat(e.call(this,t))),r}}this.defaults={...this.defaults,...r}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,e){return Ft.lex(t,e??this.defaults)}parser(t,e){return $t.parse(t,e??this.defaults)}parseMarkdown(t){return(e,r)=>{let i={...r},o={...this.defaults,...i},n=this.onError(!!o.silent,!!o.async);if(!0===this.defaults.async&&!1===i.async)return n(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||null===e)return n(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof e)return n(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(o.hooks&&(o.hooks.options=o,o.hooks.block=t),o.async)return(async()=>{let r=o.hooks?await o.hooks.preprocess(e):e,i=await(o.hooks?await o.hooks.provideLexer():t?Ft.lex:Ft.lexInline)(r,o),n=o.hooks?await o.hooks.processAllTokens(i):i;o.walkTokens&&await Promise.all(this.walkTokens(n,o.walkTokens));let a=await(o.hooks?await o.hooks.provideParser():t?$t.parse:$t.parseInline)(n,o);return o.hooks?await o.hooks.postprocess(a):a})().catch(n);try{o.hooks&&(e=o.hooks.preprocess(e));let r=(o.hooks?o.hooks.provideLexer():t?Ft.lex:Ft.lexInline)(e,o);o.hooks&&(r=o.hooks.processAllTokens(r)),o.walkTokens&&this.walkTokens(r,o.walkTokens);let i=(o.hooks?o.hooks.provideParser():t?$t.parse:$t.parseInline)(r,o);return o.hooks&&(i=o.hooks.postprocess(i)),i}catch(a){return n(a)}}}onError(t,e){return r=>{if(r.message+="\nPlease report this to https://github.com/markedjs/marked.",t){let t="<p>An error occurred:</p><pre>"+St(r.message+"",!0)+"</pre>";return e?Promise.resolve(t):t}if(e)return Promise.reject(r);throw r}}};function It(t,e){return Dt.parse(t,e)}It.options=It.setOptions=function(t){return Dt.setOptions(t),It.defaults=Dt.defaults,v(It.defaults),It},It.getDefaults=T,It.defaults=S,It.use=function(...t){return Dt.use(...t),It.defaults=Dt.defaults,v(It.defaults),It},It.walkTokens=function(t,e){return Dt.walkTokens(t,e)},It.parseInline=Dt.parseInline,It.Parser=$t,It.parser=$t.parse,It.Renderer=Mt,It.TextRenderer=Et,It.Lexer=Ft,It.lexer=Ft.lex,It.Tokenizer=Lt,It.Hooks=Ot,It.parse=It;It.options,It.setOptions,It.use,It.walkTokens,It.parseInline,$t.parse,Ft.lex;var Pt=r(513),qt={body:'<g><rect width="80" height="80" style="fill: #087ebf; stroke-width: 0px;"/><text transform="translate(21.16 64.67)" style="fill: #fff; font-family: ArialMT, Arial; font-size: 67.75px;"><tspan x="0" y="0">?</tspan></text></g>',height:80,width:80},Rt=new Map,zt=new Map,Kt=(0,n.K2)(t=>{for(const e of t){if(!e.name)throw new Error('Invalid icon loader. Must have a "name" property with non-empty string value.');if(n.Rm.debug("Registering icon pack:",e.name),"loader"in e)zt.set(e.name,e.loader);else{if(!("icons"in e))throw n.Rm.error("Invalid icon loader:",e),new Error('Invalid icon loader. Must have either "icons" or "loader" property.');Rt.set(e.name,e.icons)}}},"registerIconPacks"),Nt=(0,n.K2)(async(t,e)=>{const r=((t,e,r,i="")=>{const o=t.split(":");if("@"===t.slice(0,1)){if(o.length<2||o.length>3)return null;i=o.shift().slice(1)}if(o.length>3||!o.length)return null;if(o.length>1){const t=o.pop(),r=o.pop(),n={provider:o.length>0?o[0]:i,prefix:r,name:t};return e&&!a(n)?null:n}const n=o[0],s=n.split("-");if(s.length>1){const t={provider:i,prefix:s.shift(),name:s.join("-")};return e&&!a(t)?null:t}if(r&&""===i){const t={provider:i,prefix:"",name:n};return e&&!a(t,r)?null:t}return null})(t,!0,void 0!==e);if(!r)throw new Error(`Invalid icon name: ${t}`);const i=r.prefix||e;if(!i)throw new Error(`Icon name must contain a prefix: ${t}`);let o=Rt.get(i);if(!o){const t=zt.get(i);if(!t)throw new Error(`Icon set not found: ${r.prefix}`);try{o={...await t(),prefix:i},Rt.set(i,o)}catch(l){throw n.Rm.error(l),new Error(`Failed to load icon set: ${r.prefix}`)}}const s=p(o,r.name);if(!s)throw new Error(`Icon not found: ${t}`);return s},"getRegisteredIconData"),jt=(0,n.K2)(async t=>{try{return await Nt(t),!0}catch{return!1}},"isIconAvailable"),Wt=(0,n.K2)(async(t,e,r)=>{let i;try{i=await Nt(t,e?.fallbackPrefix)}catch(l){n.Rm.error(l),i=qt}const a=function(t,e){const r={...h,...t},i={...f,...e},o={left:r.left,top:r.top,width:r.width,height:r.height};let n=r.body;[r,i].forEach(t=>{const e=[],r=t.hFlip,i=t.vFlip;let a,s=t.rotate;switch(r?i?s+=2:(e.push("translate("+(o.width+o.left).toString()+" "+(0-o.top).toString()+")"),e.push("scale(-1 1)"),o.top=o.left=0):i&&(e.push("translate("+(0-o.left).toString()+" "+(o.height+o.top).toString()+")"),e.push("scale(1 -1)"),o.top=o.left=0),s<0&&(s-=4*Math.floor(s/4)),s%=4,s){case 1:a=o.height/2+o.top,e.unshift("rotate(90 "+a.toString()+" "+a.toString()+")");break;case 2:e.unshift("rotate(180 "+(o.width/2+o.left).toString()+" "+(o.height/2+o.top).toString()+")");break;case 3:a=o.width/2+o.left,e.unshift("rotate(-90 "+a.toString()+" "+a.toString()+")")}s%2==1&&(o.left!==o.top&&(a=o.left,o.left=o.top,o.top=a),o.width!==o.height&&(a=o.width,o.width=o.height,o.height=a)),e.length&&(n=function(t,e,r){const i=function(t,e="defs"){let r="";const i=t.indexOf("<"+e);for(;i>=0;){const o=t.indexOf(">",i),n=t.indexOf("</"+e);if(-1===o||-1===n)break;const a=t.indexOf(">",n);if(-1===a)break;r+=t.slice(o+1,n).trim(),t=t.slice(0,i).trim()+t.slice(a+1)}return{defs:r,content:t}}(t);return o=i.defs,n=e+i.content+r,o?"<defs>"+o+"</defs>"+n:n;var o,n}(n,'<g transform="'+e.join(" ")+'">',"</g>"))});const a=i.width,s=i.height,l=o.width,c=o.height;let d,u;null===a?(u=null===s?"1em":"auto"===s?c:s,d=C(u,l/c)):(d="auto"===a?l:a,u=null===s?C(d,c/l):"auto"===s?c:s);const p={},g=(t,e)=>{(t=>"unset"===t||"undefined"===t||"none"===t)(e)||(p[t]=e.toString())};g("width",d),g("height",u);const y=[o.left,o.top,l,c];return p.viewBox=y.join(" "),{attributes:p,viewBox:y,body:n}}(i,e),s=function(t,e){let r=-1===t.indexOf("xlink:")?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(const i in e)r+=" "+i+'="'+e[i]+'"';return'<svg xmlns="http://www.w3.org/2000/svg"'+r+">"+t+"</svg>"}(k(a.body),{...a.attributes,...r});return(0,o.jZ)(s,(0,o.zj)())},"getIconSVG");function Ht(t,{markdownAutoWrap:e}){const r=t.replace(/<br\/>/g,"\n").replace(/\n{2,}/g,"\n");return(0,Pt.T)(r)}function Ut(t){return t.split(/\\n|\n|<br\s*\/?>/gi).map(t=>t.trim().match(/<[^>]+>|[^\s<>]+/g)?.map(t=>({content:t,type:"normal"}))??[])}function Yt(t,e={}){const r=Ht(t,e),i=It.lexer(r),o=[[]];let a=0;function s(t,e="normal"){if("text"===t.type){t.text.split("\n").forEach((t,r)=>{0!==r&&(a++,o.push([])),t.split(" ").forEach(t=>{(t=t.replace(/'/g,"'"))&&o[a].push({content:t,type:e})})})}else"strong"===t.type||"em"===t.type?t.tokens.forEach(e=>{s(e,t.type)}):"html"===t.type&&o[a].push({content:t.text,type:"normal"})}return(0,n.K2)(s,"processNode"),i.forEach(t=>{"paragraph"===t.type?t.tokens?.forEach(t=>{s(t)}):"html"===t.type?o[a].push({content:t.text,type:"normal"}):o[a].push({content:t.raw,type:"normal"})}),o}function Gt(t){return t?`<p>${t.replace(/\\n|\n/g,"<br />")}</p>`:""}function Xt(t,{markdownAutoWrap:e}={}){const r=It.lexer(t);function i(t){return"text"===t.type?!1===e?t.text.replace(/\n */g,"<br/>").replace(/ /g," "):t.text.replace(/\n */g,"<br/>"):"strong"===t.type?`<strong>${t.tokens?.map(i).join("")}</strong>`:"em"===t.type?`<em>${t.tokens?.map(i).join("")}</em>`:"paragraph"===t.type?`<p>${t.tokens?.map(i).join("")}</p>`:"space"===t.type?"":"html"===t.type?`${t.text}`:"escape"===t.type?t.text:(n.Rm.warn(`Unsupported markdown: ${t.type}`),t.raw)}return(0,n.K2)(i,"output"),r.map(i).join("")}function Vt(t){return Intl.Segmenter?[...(new Intl.Segmenter).segment(t)].map(t=>t.segment):[...t]}function Zt(t,e){return Qt(t,[],Vt(e.content),e.type)}function Qt(t,e,r,i){if(0===r.length)return[{content:e.join(""),type:i},{content:"",type:i}];const[o,...n]=r,a=[...e,o];return t([{content:a.join(""),type:i}])?Qt(t,a,n,i):(0===e.length&&o&&(e.push(o),r.shift()),[{content:e.join(""),type:i},{content:r.join(""),type:i}])}function Jt(t,e){if(t.some(({content:t})=>t.includes("\n")))throw new Error("splitLineToFitWidth does not support newlines in the line");return te(t,e)}function te(t,e,r=[],i=[]){if(0===t.length)return i.length>0&&r.push(i),r.length>0?r:[];let o="";" "===t[0].content&&(o=" ",t.shift());const n=t.shift()??{content:" ",type:"normal"},a=[...i];if(""!==o&&a.push({content:o,type:"normal"}),a.push(n),e(a))return te(t,e,r,a);if(i.length>0)r.push(i),t.unshift(n);else if(n.content){const[i,o]=Zt(e,n);r.push([i]),o.content&&t.unshift(o)}return te(t,e,r)}function ee(t,e){e&&t.attr("style",e)}(0,n.K2)(Ht,"preprocessMarkdown"),(0,n.K2)(Ut,"nonMarkdownToLines"),(0,n.K2)(Yt,"markdownToLines"),(0,n.K2)(Gt,"nonMarkdownToHTML"),(0,n.K2)(Xt,"markdownToHTML"),(0,n.K2)(Vt,"splitTextToChars"),(0,n.K2)(Zt,"splitWordToFitWidth"),(0,n.K2)(Qt,"splitWordToFitWidthRecursion"),(0,n.K2)(Jt,"splitLineToFitWidth"),(0,n.K2)(te,"splitLineToFitWidthRecursion"),(0,n.K2)(ee,"applyStyle");async function re(t,e,r,i,n=!1,a=(0,o.zj)()){const s=t.append("foreignObject");s.attr("width",`${Math.min(10*r,16384)}px`),s.attr("height",`${Math.min(10*r,16384)}px`);const l=s.append("xhtml:div"),h=(0,o.Wi)(e.label)?await(0,o.dj)(e.label.replace(o.Y2.lineBreakRegex,"\n"),a):(0,o.jZ)(e.label,a),c=e.isNode?"nodeLabel":"edgeLabel",d=l.append("span");d.html(h),ee(d,e.labelStyle),d.attr("class",`${c} ${i}`),ee(l,e.labelStyle),l.style("display","table-cell"),l.style("white-space","nowrap"),l.style("line-height","1.5"),r!==Number.POSITIVE_INFINITY&&(l.style("max-width",r+"px"),l.style("text-align","center")),l.attr("xmlns","http://www.w3.org/1999/xhtml"),n&&l.attr("class","labelBkg");let u=l.node().getBoundingClientRect();return u.width===r&&(l.style("display","table"),l.style("white-space","break-spaces"),l.style("width",r+"px"),u=l.node().getBoundingClientRect()),s.node()}function ie(t,e,r,i=!1){const o=t.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",e*r-.1+"em").attr("dy",r+"em");return i&&o.attr("text-anchor","middle"),o}function oe(t,e,r){const i=t.append("text"),o=ie(i,1,e);le(o,r);const n=o.node().getComputedTextLength();return i.remove(),n}function ne(t,e,r){const i=t.append("text"),o=ie(i,1,e);le(o,[{content:r,type:"normal"}]);const n=o.node()?.getBoundingClientRect();return n&&i.remove(),n}function ae(t,e,r,i=!1,o=!1){const a=e.append("g"),s=a.insert("rect").attr("class","background").attr("style","stroke: none"),l=a.append("text").attr("y","-10.1");o&&l.attr("text-anchor","middle");let h=0;for(const c of r){const e=(0,n.K2)(e=>oe(a,1.1,e)<=t,"checkWidth"),r=e(c)?[c]:Jt(c,e);for(const t of r){le(ie(l,h,1.1,o),t),h++}}if(i){const t=l.node().getBBox(),e=2;return s.attr("x",t.x-e).attr("y",t.y-e).attr("width",t.width+2*e).attr("height",t.height+2*e),a.node()}return l.node()}function se(t){return t.replace(/&(amp|lt|gt);/g,(t,e)=>{switch(e){case"amp":return"&";case"lt":return"<";case"gt":return">";default:return t}})}function le(t,e){t.text(""),e.forEach((e,r)=>{const i=t.append("tspan").attr("font-style","em"===e.type?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight","strong"===e.type?"bold":"normal");0===r?i.text(se(e.content)):i.text(" "+se(e.content))})}async function he(t,e={}){const r=[];t.replace(/(fa[bklrs]?):fa-([\w-]+)/g,(t,i,n)=>(r.push((async()=>{const r=`${i}:${n}`;return await jt(r)?await Wt(r,void 0,{class:"label-icon"}):`<i class='${(0,o.jZ)(t,e).replace(":"," ")}'></i>`})()),t));const i=await Promise.all(r);return t.replace(/(fa[bklrs]?):fa-([\w-]+)/g,()=>i.shift()??"")}(0,n.K2)(re,"addHtmlSpan"),(0,n.K2)(ie,"createTspan"),(0,n.K2)(oe,"computeWidthOfText"),(0,n.K2)(ne,"computeDimensionOfText"),(0,n.K2)(ae,"createFormattedText"),(0,n.K2)(se,"decodeHTMLEntities"),(0,n.K2)(le,"updateTextContentAndStyles"),(0,n.K2)(he,"replaceIconSubstring");var ce=(0,n.K2)(async(t,e="",{style:r="",isTitle:a=!1,classes:s="",useHtmlLabels:l=!0,markdown:h=!0,isNode:c=!0,width:d=200,addSvgBackground:u=!1}={},p)=>{if(n.Rm.debug("XYZ createText",e,r,a,s,l,c,"addSvgBackground: ",u),l){const n=h?Xt(e,p):Gt(e),a=await he((0,i.Sm)(n),p),l=e.replace(/\\\\/g,"\\"),g={isNode:c,label:(0,o.Wi)(e)?l:a,labelStyle:r.replace("fill:","color:")};return await re(t,g,d,s,u,p)}{const o=(0,i.Sm)(e.replace(/<br\s*\/?>/g,"<br/>")),n=ae(d,t,h?Yt(o.replace("<br>","<br/>"),p):Ut(o),!!e&&u,!c);if(c){/stroke:/.exec(r)&&(r=r.replace("stroke:","lineColor:"));const t=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");(0,w.Ltv)(n).attr("style",t)}else{const t=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/background:/g,"fill:");(0,w.Ltv)(n).select("rect").attr("style",t.replace(/background:/g,"fill:"));const e=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");(0,w.Ltv)(n).select("text").attr("style",e)}return a?(0,w.Ltv)(n).selectAll("tspan.text-outer-tspan").classed("title-row",!0):(0,w.Ltv)(n).selectAll("tspan.text-outer-tspan").classed("row",!0),n}},"createText")},8213(t,e,r){"use strict";r.d(e,{D:()=>a});var i=r(3706),o=r(797),n=r(451),a=(0,o.K2)(t=>{const{securityLevel:e}=(0,i.D7)();let r=(0,n.Ltv)("body");if("sandbox"===e){const e=(0,n.Ltv)(`#i${t}`),i=e.node()?.contentDocument??document;r=(0,n.Ltv)(i.body)}return r.select(`#${t}`)},"selectSvgElement")},3283(t,e,r){"use strict";r.d(e,{H:()=>ir,r:()=>rr});var i=r(797);function o(t){return null==t}function n(t){return"object"==typeof t&&null!==t}function a(t){return Array.isArray(t)?t:o(t)?[]:[t]}function s(t,e){var r,i,o,n;if(e)for(r=0,i=(n=Object.keys(e)).length;r<i;r+=1)t[o=n[r]]=e[o];return t}function l(t,e){var r,i="";for(r=0;r<e;r+=1)i+=t;return i}function h(t){return 0===t&&Number.NEGATIVE_INFINITY===1/t}(0,i.K2)(o,"isNothing"),(0,i.K2)(n,"isObject"),(0,i.K2)(a,"toArray"),(0,i.K2)(s,"extend"),(0,i.K2)(l,"repeat"),(0,i.K2)(h,"isNegativeZero");var c={isNothing:o,isObject:n,toArray:a,repeat:l,isNegativeZero:h,extend:s};function d(t,e){var r="",i=t.reason||"(unknown reason)";return t.mark?(t.mark.name&&(r+='in "'+t.mark.name+'" '),r+="("+(t.mark.line+1)+":"+(t.mark.column+1)+")",!e&&t.mark.snippet&&(r+="\n\n"+t.mark.snippet),i+" "+r):i}function u(t,e){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=e,this.message=d(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack||""}(0,i.K2)(d,"formatError"),(0,i.K2)(u,"YAMLException$1"),u.prototype=Object.create(Error.prototype),u.prototype.constructor=u,u.prototype.toString=(0,i.K2)(function(t){return this.name+": "+d(this,t)},"toString");var p=u;function g(t,e,r,i,o){var n="",a="",s=Math.floor(o/2)-1;return i-e>s&&(e=i-s+(n=" ... ").length),r-i>s&&(r=i+s-(a=" ...").length),{str:n+t.slice(e,r).replace(/\t/g,"\u2192")+a,pos:i-e+n.length}}function f(t,e){return c.repeat(" ",e-t.length)+t}function y(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),"number"!=typeof e.indent&&(e.indent=1),"number"!=typeof e.linesBefore&&(e.linesBefore=3),"number"!=typeof e.linesAfter&&(e.linesAfter=2);for(var r,i=/\r?\n|\r|\0/g,o=[0],n=[],a=-1;r=i.exec(t.buffer);)n.push(r.index),o.push(r.index+r[0].length),t.position<=r.index&&a<0&&(a=o.length-2);a<0&&(a=o.length-1);var s,l,h="",d=Math.min(t.line+e.linesAfter,n.length).toString().length,u=e.maxLength-(e.indent+d+3);for(s=1;s<=e.linesBefore&&!(a-s<0);s++)l=g(t.buffer,o[a-s],n[a-s],t.position-(o[a]-o[a-s]),u),h=c.repeat(" ",e.indent)+f((t.line-s+1).toString(),d)+" | "+l.str+"\n"+h;for(l=g(t.buffer,o[a],n[a],t.position,u),h+=c.repeat(" ",e.indent)+f((t.line+1).toString(),d)+" | "+l.str+"\n",h+=c.repeat("-",e.indent+d+3+l.pos)+"^\n",s=1;s<=e.linesAfter&&!(a+s>=n.length);s++)l=g(t.buffer,o[a+s],n[a+s],t.position-(o[a]-o[a+s]),u),h+=c.repeat(" ",e.indent)+f((t.line+s+1).toString(),d)+" | "+l.str+"\n";return h.replace(/\n$/,"")}(0,i.K2)(g,"getLine"),(0,i.K2)(f,"padStart"),(0,i.K2)(y,"makeSnippet");var m=y,C=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],x=["scalar","sequence","mapping"];function b(t){var e={};return null!==t&&Object.keys(t).forEach(function(r){t[r].forEach(function(t){e[String(t)]=r})}),e}function k(t,e){if(e=e||{},Object.keys(e).forEach(function(e){if(-1===C.indexOf(e))throw new p('Unknown option "'+e+'" is met in definition of "'+t+'" YAML type.')}),this.options=e,this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.representName=e.representName||null,this.defaultStyle=e.defaultStyle||null,this.multi=e.multi||!1,this.styleAliases=b(e.styleAliases||null),-1===x.indexOf(this.kind))throw new p('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}(0,i.K2)(b,"compileStyleAliases"),(0,i.K2)(k,"Type$1");var w=k;function T(t,e){var r=[];return t[e].forEach(function(t){var e=r.length;r.forEach(function(r,i){r.tag===t.tag&&r.kind===t.kind&&r.multi===t.multi&&(e=i)}),r[e]=t}),r}function S(){var t,e,r={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function o(t){t.multi?(r.multi[t.kind].push(t),r.multi.fallback.push(t)):r[t.kind][t.tag]=r.fallback[t.tag]=t}for((0,i.K2)(o,"collectType"),t=0,e=arguments.length;t<e;t+=1)arguments[t].forEach(o);return r}function v(t){return this.extend(t)}(0,i.K2)(T,"compileList"),(0,i.K2)(S,"compileMap"),(0,i.K2)(v,"Schema$1"),v.prototype.extend=(0,i.K2)(function(t){var e=[],r=[];if(t instanceof w)r.push(t);else if(Array.isArray(t))r=r.concat(t);else{if(!t||!Array.isArray(t.implicit)&&!Array.isArray(t.explicit))throw new p("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");t.implicit&&(e=e.concat(t.implicit)),t.explicit&&(r=r.concat(t.explicit))}e.forEach(function(t){if(!(t instanceof w))throw new p("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(t.loadKind&&"scalar"!==t.loadKind)throw new p("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(t.multi)throw new p("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),r.forEach(function(t){if(!(t instanceof w))throw new p("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var i=Object.create(v.prototype);return i.implicit=(this.implicit||[]).concat(e),i.explicit=(this.explicit||[]).concat(r),i.compiledImplicit=T(i,"implicit"),i.compiledExplicit=T(i,"explicit"),i.compiledTypeMap=S(i.compiledImplicit,i.compiledExplicit),i},"extend");var B=new v({explicit:[new w("tag:yaml.org,2002:str",{kind:"scalar",construct:(0,i.K2)(function(t){return null!==t?t:""},"construct")}),new w("tag:yaml.org,2002:seq",{kind:"sequence",construct:(0,i.K2)(function(t){return null!==t?t:[]},"construct")}),new w("tag:yaml.org,2002:map",{kind:"mapping",construct:(0,i.K2)(function(t){return null!==t?t:{}},"construct")})]});function _(t){if(null===t)return!0;var e=t.length;return 1===e&&"~"===t||4===e&&("null"===t||"Null"===t||"NULL"===t)}function A(){return null}function L(t){return null===t}(0,i.K2)(_,"resolveYamlNull"),(0,i.K2)(A,"constructYamlNull"),(0,i.K2)(L,"isNull");var F=new w("tag:yaml.org,2002:null",{kind:"scalar",resolve:_,construct:A,predicate:L,represent:{canonical:(0,i.K2)(function(){return"~"},"canonical"),lowercase:(0,i.K2)(function(){return"null"},"lowercase"),uppercase:(0,i.K2)(function(){return"NULL"},"uppercase"),camelcase:(0,i.K2)(function(){return"Null"},"camelcase"),empty:(0,i.K2)(function(){return""},"empty")},defaultStyle:"lowercase"});function M(t){if(null===t)return!1;var e=t.length;return 4===e&&("true"===t||"True"===t||"TRUE"===t)||5===e&&("false"===t||"False"===t||"FALSE"===t)}function E(t){return"true"===t||"True"===t||"TRUE"===t}function $(t){return"[object Boolean]"===Object.prototype.toString.call(t)}(0,i.K2)(M,"resolveYamlBoolean"),(0,i.K2)(E,"constructYamlBoolean"),(0,i.K2)($,"isBoolean");var O=new w("tag:yaml.org,2002:bool",{kind:"scalar",resolve:M,construct:E,predicate:$,represent:{lowercase:(0,i.K2)(function(t){return t?"true":"false"},"lowercase"),uppercase:(0,i.K2)(function(t){return t?"TRUE":"FALSE"},"uppercase"),camelcase:(0,i.K2)(function(t){return t?"True":"False"},"camelcase")},defaultStyle:"lowercase"});function D(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function I(t){return 48<=t&&t<=55}function P(t){return 48<=t&&t<=57}function q(t){if(null===t)return!1;var e,r=t.length,i=0,o=!1;if(!r)return!1;if("-"!==(e=t[i])&&"+"!==e||(e=t[++i]),"0"===e){if(i+1===r)return!0;if("b"===(e=t[++i])){for(i++;i<r;i++)if("_"!==(e=t[i])){if("0"!==e&&"1"!==e)return!1;o=!0}return o&&"_"!==e}if("x"===e){for(i++;i<r;i++)if("_"!==(e=t[i])){if(!D(t.charCodeAt(i)))return!1;o=!0}return o&&"_"!==e}if("o"===e){for(i++;i<r;i++)if("_"!==(e=t[i])){if(!I(t.charCodeAt(i)))return!1;o=!0}return o&&"_"!==e}}if("_"===e)return!1;for(;i<r;i++)if("_"!==(e=t[i])){if(!P(t.charCodeAt(i)))return!1;o=!0}return!(!o||"_"===e)}function R(t){var e,r=t,i=1;if(-1!==r.indexOf("_")&&(r=r.replace(/_/g,"")),"-"!==(e=r[0])&&"+"!==e||("-"===e&&(i=-1),e=(r=r.slice(1))[0]),"0"===r)return 0;if("0"===e){if("b"===r[1])return i*parseInt(r.slice(2),2);if("x"===r[1])return i*parseInt(r.slice(2),16);if("o"===r[1])return i*parseInt(r.slice(2),8)}return i*parseInt(r,10)}function z(t){return"[object Number]"===Object.prototype.toString.call(t)&&t%1==0&&!c.isNegativeZero(t)}(0,i.K2)(D,"isHexCode"),(0,i.K2)(I,"isOctCode"),(0,i.K2)(P,"isDecCode"),(0,i.K2)(q,"resolveYamlInteger"),(0,i.K2)(R,"constructYamlInteger"),(0,i.K2)(z,"isInteger");var K=new w("tag:yaml.org,2002:int",{kind:"scalar",resolve:q,construct:R,predicate:z,represent:{binary:(0,i.K2)(function(t){return t>=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},"binary"),octal:(0,i.K2)(function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},"octal"),decimal:(0,i.K2)(function(t){return t.toString(10)},"decimal"),hexadecimal:(0,i.K2)(function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)},"hexadecimal")},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),N=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function j(t){return null!==t&&!(!N.test(t)||"_"===t[t.length-1])}function W(t){var e,r;return r="-"===(e=t.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(e[0])>=0&&(e=e.slice(1)),".inf"===e?1===r?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===e?NaN:r*parseFloat(e,10)}(0,i.K2)(j,"resolveYamlFloat"),(0,i.K2)(W,"constructYamlFloat");var H=/^[-+]?[0-9]+e/;function U(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(c.isNegativeZero(t))return"-0.0";return r=t.toString(10),H.test(r)?r.replace("e",".e"):r}function Y(t){return"[object Number]"===Object.prototype.toString.call(t)&&(t%1!=0||c.isNegativeZero(t))}(0,i.K2)(U,"representYamlFloat"),(0,i.K2)(Y,"isFloat");var G=new w("tag:yaml.org,2002:float",{kind:"scalar",resolve:j,construct:W,predicate:Y,represent:U,defaultStyle:"lowercase"}),X=B.extend({implicit:[F,O,K,G]}),V=X,Z=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Q=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function J(t){return null!==t&&(null!==Z.exec(t)||null!==Q.exec(t))}function tt(t){var e,r,i,o,n,a,s,l,h=0,c=null;if(null===(e=Z.exec(t))&&(e=Q.exec(t)),null===e)throw new Error("Date resolve error");if(r=+e[1],i=+e[2]-1,o=+e[3],!e[4])return new Date(Date.UTC(r,i,o));if(n=+e[4],a=+e[5],s=+e[6],e[7]){for(h=e[7].slice(0,3);h.length<3;)h+="0";h=+h}return e[9]&&(c=6e4*(60*+e[10]+ +(e[11]||0)),"-"===e[9]&&(c=-c)),l=new Date(Date.UTC(r,i,o,n,a,s,h)),c&&l.setTime(l.getTime()-c),l}function et(t){return t.toISOString()}(0,i.K2)(J,"resolveYamlTimestamp"),(0,i.K2)(tt,"constructYamlTimestamp"),(0,i.K2)(et,"representYamlTimestamp");var rt=new w("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:J,construct:tt,instanceOf:Date,represent:et});function it(t){return"<<"===t||null===t}(0,i.K2)(it,"resolveYamlMerge");var ot=new w("tag:yaml.org,2002:merge",{kind:"scalar",resolve:it}),nt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";function at(t){if(null===t)return!1;var e,r,i=0,o=t.length,n=nt;for(r=0;r<o;r++)if(!((e=n.indexOf(t.charAt(r)))>64)){if(e<0)return!1;i+=6}return i%8==0}function st(t){var e,r,i=t.replace(/[\r\n=]/g,""),o=i.length,n=nt,a=0,s=[];for(e=0;e<o;e++)e%4==0&&e&&(s.push(a>>16&255),s.push(a>>8&255),s.push(255&a)),a=a<<6|n.indexOf(i.charAt(e));return 0===(r=o%4*6)?(s.push(a>>16&255),s.push(a>>8&255),s.push(255&a)):18===r?(s.push(a>>10&255),s.push(a>>2&255)):12===r&&s.push(a>>4&255),new Uint8Array(s)}function lt(t){var e,r,i="",o=0,n=t.length,a=nt;for(e=0;e<n;e++)e%3==0&&e&&(i+=a[o>>18&63],i+=a[o>>12&63],i+=a[o>>6&63],i+=a[63&o]),o=(o<<8)+t[e];return 0===(r=n%3)?(i+=a[o>>18&63],i+=a[o>>12&63],i+=a[o>>6&63],i+=a[63&o]):2===r?(i+=a[o>>10&63],i+=a[o>>4&63],i+=a[o<<2&63],i+=a[64]):1===r&&(i+=a[o>>2&63],i+=a[o<<4&63],i+=a[64],i+=a[64]),i}function ht(t){return"[object Uint8Array]"===Object.prototype.toString.call(t)}(0,i.K2)(at,"resolveYamlBinary"),(0,i.K2)(st,"constructYamlBinary"),(0,i.K2)(lt,"representYamlBinary"),(0,i.K2)(ht,"isBinary");var ct=new w("tag:yaml.org,2002:binary",{kind:"scalar",resolve:at,construct:st,predicate:ht,represent:lt}),dt=Object.prototype.hasOwnProperty,ut=Object.prototype.toString;function pt(t){if(null===t)return!0;var e,r,i,o,n,a=[],s=t;for(e=0,r=s.length;e<r;e+=1){if(i=s[e],n=!1,"[object Object]"!==ut.call(i))return!1;for(o in i)if(dt.call(i,o)){if(n)return!1;n=!0}if(!n)return!1;if(-1!==a.indexOf(o))return!1;a.push(o)}return!0}function gt(t){return null!==t?t:[]}(0,i.K2)(pt,"resolveYamlOmap"),(0,i.K2)(gt,"constructYamlOmap");var ft=new w("tag:yaml.org,2002:omap",{kind:"sequence",resolve:pt,construct:gt}),yt=Object.prototype.toString;function mt(t){if(null===t)return!0;var e,r,i,o,n,a=t;for(n=new Array(a.length),e=0,r=a.length;e<r;e+=1){if(i=a[e],"[object Object]"!==yt.call(i))return!1;if(1!==(o=Object.keys(i)).length)return!1;n[e]=[o[0],i[o[0]]]}return!0}function Ct(t){if(null===t)return[];var e,r,i,o,n,a=t;for(n=new Array(a.length),e=0,r=a.length;e<r;e+=1)i=a[e],o=Object.keys(i),n[e]=[o[0],i[o[0]]];return n}(0,i.K2)(mt,"resolveYamlPairs"),(0,i.K2)(Ct,"constructYamlPairs");var xt=new w("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:mt,construct:Ct}),bt=Object.prototype.hasOwnProperty;function kt(t){if(null===t)return!0;var e,r=t;for(e in r)if(bt.call(r,e)&&null!==r[e])return!1;return!0}function wt(t){return null!==t?t:{}}(0,i.K2)(kt,"resolveYamlSet"),(0,i.K2)(wt,"constructYamlSet");var Tt=new w("tag:yaml.org,2002:set",{kind:"mapping",resolve:kt,construct:wt}),St=V.extend({implicit:[rt,ot],explicit:[ct,ft,xt,Tt]}),vt=Object.prototype.hasOwnProperty,Bt=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,_t=/[\x85\u2028\u2029]/,At=/[,\[\]\{\}]/,Lt=/^(?:!|!!|![a-z\-]+!)$/i,Ft=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function Mt(t){return Object.prototype.toString.call(t)}function Et(t){return 10===t||13===t}function $t(t){return 9===t||32===t}function Ot(t){return 9===t||32===t||10===t||13===t}function Dt(t){return 44===t||91===t||93===t||123===t||125===t}function It(t){var e;return 48<=t&&t<=57?t-48:97<=(e=32|t)&&e<=102?e-97+10:-1}function Pt(t){return 120===t?2:117===t?4:85===t?8:0}function qt(t){return 48<=t&&t<=57?t-48:-1}function Rt(t){return 48===t?"\0":97===t?"\x07":98===t?"\b":116===t||9===t?"\t":110===t?"\n":118===t?"\v":102===t?"\f":114===t?"\r":101===t?"\x1b":32===t?" ":34===t?'"':47===t?"/":92===t?"\\":78===t?"\x85":95===t?"\xa0":76===t?"\u2028":80===t?"\u2029":""}function zt(t){return t<=65535?String.fromCharCode(t):String.fromCharCode(55296+(t-65536>>10),56320+(t-65536&1023))}function Kt(t,e,r){"__proto__"===e?Object.defineProperty(t,e,{configurable:!0,enumerable:!0,writable:!0,value:r}):t[e]=r}(0,i.K2)(Mt,"_class"),(0,i.K2)(Et,"is_EOL"),(0,i.K2)($t,"is_WHITE_SPACE"),(0,i.K2)(Ot,"is_WS_OR_EOL"),(0,i.K2)(Dt,"is_FLOW_INDICATOR"),(0,i.K2)(It,"fromHexCode"),(0,i.K2)(Pt,"escapedHexLen"),(0,i.K2)(qt,"fromDecimalCode"),(0,i.K2)(Rt,"simpleEscapeSequence"),(0,i.K2)(zt,"charFromCodepoint"),(0,i.K2)(Kt,"setProperty");var Nt,jt=new Array(256),Wt=new Array(256);for(Nt=0;Nt<256;Nt++)jt[Nt]=Rt(Nt)?1:0,Wt[Nt]=Rt(Nt);function Ht(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||St,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function Ut(t,e){var r={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return r.snippet=m(r),new p(e,r)}function Yt(t,e){throw Ut(t,e)}function Gt(t,e){t.onWarning&&t.onWarning.call(null,Ut(t,e))}(0,i.K2)(Ht,"State$1"),(0,i.K2)(Ut,"generateError"),(0,i.K2)(Yt,"throwError"),(0,i.K2)(Gt,"throwWarning");var Xt={YAML:(0,i.K2)(function(t,e,r){var i,o,n;null!==t.version&&Yt(t,"duplication of %YAML directive"),1!==r.length&&Yt(t,"YAML directive accepts exactly one argument"),null===(i=/^([0-9]+)\.([0-9]+)$/.exec(r[0]))&&Yt(t,"ill-formed argument of the YAML directive"),o=parseInt(i[1],10),n=parseInt(i[2],10),1!==o&&Yt(t,"unacceptable YAML version of the document"),t.version=r[0],t.checkLineBreaks=n<2,1!==n&&2!==n&&Gt(t,"unsupported YAML version of the document")},"handleYamlDirective"),TAG:(0,i.K2)(function(t,e,r){var i,o;2!==r.length&&Yt(t,"TAG directive accepts exactly two arguments"),i=r[0],o=r[1],Lt.test(i)||Yt(t,"ill-formed tag handle (first argument) of the TAG directive"),vt.call(t.tagMap,i)&&Yt(t,'there is a previously declared suffix for "'+i+'" tag handle'),Ft.test(o)||Yt(t,"ill-formed tag prefix (second argument) of the TAG directive");try{o=decodeURIComponent(o)}catch(n){Yt(t,"tag prefix is malformed: "+o)}t.tagMap[i]=o},"handleTagDirective")};function Vt(t,e,r,i){var o,n,a,s;if(e<r){if(s=t.input.slice(e,r),i)for(o=0,n=s.length;o<n;o+=1)9===(a=s.charCodeAt(o))||32<=a&&a<=1114111||Yt(t,"expected valid JSON character");else Bt.test(s)&&Yt(t,"the stream contains non-printable characters");t.result+=s}}function Zt(t,e,r,i){var o,n,a,s;for(c.isObject(r)||Yt(t,"cannot merge mappings; the provided source object is unacceptable"),a=0,s=(o=Object.keys(r)).length;a<s;a+=1)n=o[a],vt.call(e,n)||(Kt(e,n,r[n]),i[n]=!0)}function Qt(t,e,r,i,o,n,a,s,l){var h,c;if(Array.isArray(o))for(h=0,c=(o=Array.prototype.slice.call(o)).length;h<c;h+=1)Array.isArray(o[h])&&Yt(t,"nested arrays are not supported inside keys"),"object"==typeof o&&"[object Object]"===Mt(o[h])&&(o[h]="[object Object]");if("object"==typeof o&&"[object Object]"===Mt(o)&&(o="[object Object]"),o=String(o),null===e&&(e={}),"tag:yaml.org,2002:merge"===i)if(Array.isArray(n))for(h=0,c=n.length;h<c;h+=1)Zt(t,e,n[h],r);else Zt(t,e,n,r);else t.json||vt.call(r,o)||!vt.call(e,o)||(t.line=a||t.line,t.lineStart=s||t.lineStart,t.position=l||t.position,Yt(t,"duplicated mapping key")),Kt(e,o,n),delete r[o];return e}function Jt(t){var e;10===(e=t.input.charCodeAt(t.position))?t.position++:13===e?(t.position++,10===t.input.charCodeAt(t.position)&&t.position++):Yt(t,"a line break is expected"),t.line+=1,t.lineStart=t.position,t.firstTabInLine=-1}function te(t,e,r){for(var i=0,o=t.input.charCodeAt(t.position);0!==o;){for(;$t(o);)9===o&&-1===t.firstTabInLine&&(t.firstTabInLine=t.position),o=t.input.charCodeAt(++t.position);if(e&&35===o)do{o=t.input.charCodeAt(++t.position)}while(10!==o&&13!==o&&0!==o);if(!Et(o))break;for(Jt(t),o=t.input.charCodeAt(t.position),i++,t.lineIndent=0;32===o;)t.lineIndent++,o=t.input.charCodeAt(++t.position)}return-1!==r&&0!==i&&t.lineIndent<r&&Gt(t,"deficient indentation"),i}function ee(t){var e,r=t.position;return!(45!==(e=t.input.charCodeAt(r))&&46!==e||e!==t.input.charCodeAt(r+1)||e!==t.input.charCodeAt(r+2)||(r+=3,0!==(e=t.input.charCodeAt(r))&&!Ot(e)))}function re(t,e){1===e?t.result+=" ":e>1&&(t.result+=c.repeat("\n",e-1))}function ie(t,e,r){var i,o,n,a,s,l,h,c,d=t.kind,u=t.result;if(Ot(c=t.input.charCodeAt(t.position))||Dt(c)||35===c||38===c||42===c||33===c||124===c||62===c||39===c||34===c||37===c||64===c||96===c)return!1;if((63===c||45===c)&&(Ot(i=t.input.charCodeAt(t.position+1))||r&&Dt(i)))return!1;for(t.kind="scalar",t.result="",o=n=t.position,a=!1;0!==c;){if(58===c){if(Ot(i=t.input.charCodeAt(t.position+1))||r&&Dt(i))break}else if(35===c){if(Ot(t.input.charCodeAt(t.position-1)))break}else{if(t.position===t.lineStart&&ee(t)||r&&Dt(c))break;if(Et(c)){if(s=t.line,l=t.lineStart,h=t.lineIndent,te(t,!1,-1),t.lineIndent>=e){a=!0,c=t.input.charCodeAt(t.position);continue}t.position=n,t.line=s,t.lineStart=l,t.lineIndent=h;break}}a&&(Vt(t,o,n,!1),re(t,t.line-s),o=n=t.position,a=!1),$t(c)||(n=t.position+1),c=t.input.charCodeAt(++t.position)}return Vt(t,o,n,!1),!!t.result||(t.kind=d,t.result=u,!1)}function oe(t,e){var r,i,o;if(39!==(r=t.input.charCodeAt(t.position)))return!1;for(t.kind="scalar",t.result="",t.position++,i=o=t.position;0!==(r=t.input.charCodeAt(t.position));)if(39===r){if(Vt(t,i,t.position,!0),39!==(r=t.input.charCodeAt(++t.position)))return!0;i=t.position,t.position++,o=t.position}else Et(r)?(Vt(t,i,o,!0),re(t,te(t,!1,e)),i=o=t.position):t.position===t.lineStart&&ee(t)?Yt(t,"unexpected end of the document within a single quoted scalar"):(t.position++,o=t.position);Yt(t,"unexpected end of the stream within a single quoted scalar")}function ne(t,e){var r,i,o,n,a,s;if(34!==(s=t.input.charCodeAt(t.position)))return!1;for(t.kind="scalar",t.result="",t.position++,r=i=t.position;0!==(s=t.input.charCodeAt(t.position));){if(34===s)return Vt(t,r,t.position,!0),t.position++,!0;if(92===s){if(Vt(t,r,t.position,!0),Et(s=t.input.charCodeAt(++t.position)))te(t,!1,e);else if(s<256&&jt[s])t.result+=Wt[s],t.position++;else if((a=Pt(s))>0){for(o=a,n=0;o>0;o--)(a=It(s=t.input.charCodeAt(++t.position)))>=0?n=(n<<4)+a:Yt(t,"expected hexadecimal character");t.result+=zt(n),t.position++}else Yt(t,"unknown escape sequence");r=i=t.position}else Et(s)?(Vt(t,r,i,!0),re(t,te(t,!1,e)),r=i=t.position):t.position===t.lineStart&&ee(t)?Yt(t,"unexpected end of the document within a double quoted scalar"):(t.position++,i=t.position)}Yt(t,"unexpected end of the stream within a double quoted scalar")}function ae(t,e){var r,i,o,n,a,s,l,h,c,d,u,p,g=!0,f=t.tag,y=t.anchor,m=Object.create(null);if(91===(p=t.input.charCodeAt(t.position)))a=93,h=!1,n=[];else{if(123!==p)return!1;a=125,h=!0,n={}}for(null!==t.anchor&&(t.anchorMap[t.anchor]=n),p=t.input.charCodeAt(++t.position);0!==p;){if(te(t,!0,e),(p=t.input.charCodeAt(t.position))===a)return t.position++,t.tag=f,t.anchor=y,t.kind=h?"mapping":"sequence",t.result=n,!0;g?44===p&&Yt(t,"expected the node content, but found ','"):Yt(t,"missed comma between flow collection entries"),u=null,s=l=!1,63===p&&Ot(t.input.charCodeAt(t.position+1))&&(s=l=!0,t.position++,te(t,!0,e)),r=t.line,i=t.lineStart,o=t.position,pe(t,e,1,!1,!0),d=t.tag,c=t.result,te(t,!0,e),p=t.input.charCodeAt(t.position),!l&&t.line!==r||58!==p||(s=!0,p=t.input.charCodeAt(++t.position),te(t,!0,e),pe(t,e,1,!1,!0),u=t.result),h?Qt(t,n,m,d,c,u,r,i,o):s?n.push(Qt(t,null,m,d,c,u,r,i,o)):n.push(c),te(t,!0,e),44===(p=t.input.charCodeAt(t.position))?(g=!0,p=t.input.charCodeAt(++t.position)):g=!1}Yt(t,"unexpected end of the stream within a flow collection")}function se(t,e){var r,i,o,n,a=1,s=!1,l=!1,h=e,d=0,u=!1;if(124===(n=t.input.charCodeAt(t.position)))i=!1;else{if(62!==n)return!1;i=!0}for(t.kind="scalar",t.result="";0!==n;)if(43===(n=t.input.charCodeAt(++t.position))||45===n)1===a?a=43===n?3:2:Yt(t,"repeat of a chomping mode identifier");else{if(!((o=qt(n))>=0))break;0===o?Yt(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):l?Yt(t,"repeat of an indentation width identifier"):(h=e+o-1,l=!0)}if($t(n)){do{n=t.input.charCodeAt(++t.position)}while($t(n));if(35===n)do{n=t.input.charCodeAt(++t.position)}while(!Et(n)&&0!==n)}for(;0!==n;){for(Jt(t),t.lineIndent=0,n=t.input.charCodeAt(t.position);(!l||t.lineIndent<h)&&32===n;)t.lineIndent++,n=t.input.charCodeAt(++t.position);if(!l&&t.lineIndent>h&&(h=t.lineIndent),Et(n))d++;else{if(t.lineIndent<h){3===a?t.result+=c.repeat("\n",s?1+d:d):1===a&&s&&(t.result+="\n");break}for(i?$t(n)?(u=!0,t.result+=c.repeat("\n",s?1+d:d)):u?(u=!1,t.result+=c.repeat("\n",d+1)):0===d?s&&(t.result+=" "):t.result+=c.repeat("\n",d):t.result+=c.repeat("\n",s?1+d:d),s=!0,l=!0,d=0,r=t.position;!Et(n)&&0!==n;)n=t.input.charCodeAt(++t.position);Vt(t,r,t.position,!1)}}return!0}function le(t,e){var r,i,o=t.tag,n=t.anchor,a=[],s=!1;if(-1!==t.firstTabInLine)return!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=a),i=t.input.charCodeAt(t.position);0!==i&&(-1!==t.firstTabInLine&&(t.position=t.firstTabInLine,Yt(t,"tab characters must not be used in indentation")),45===i)&&Ot(t.input.charCodeAt(t.position+1));)if(s=!0,t.position++,te(t,!0,-1)&&t.lineIndent<=e)a.push(null),i=t.input.charCodeAt(t.position);else if(r=t.line,pe(t,e,3,!1,!0),a.push(t.result),te(t,!0,-1),i=t.input.charCodeAt(t.position),(t.line===r||t.lineIndent>e)&&0!==i)Yt(t,"bad indentation of a sequence entry");else if(t.lineIndent<e)break;return!!s&&(t.tag=o,t.anchor=n,t.kind="sequence",t.result=a,!0)}function he(t,e,r){var i,o,n,a,s,l,h,c=t.tag,d=t.anchor,u={},p=Object.create(null),g=null,f=null,y=null,m=!1,C=!1;if(-1!==t.firstTabInLine)return!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=u),h=t.input.charCodeAt(t.position);0!==h;){if(m||-1===t.firstTabInLine||(t.position=t.firstTabInLine,Yt(t,"tab characters must not be used in indentation")),i=t.input.charCodeAt(t.position+1),n=t.line,63!==h&&58!==h||!Ot(i)){if(a=t.line,s=t.lineStart,l=t.position,!pe(t,r,2,!1,!0))break;if(t.line===n){for(h=t.input.charCodeAt(t.position);$t(h);)h=t.input.charCodeAt(++t.position);if(58===h)Ot(h=t.input.charCodeAt(++t.position))||Yt(t,"a whitespace character is expected after the key-value separator within a block mapping"),m&&(Qt(t,u,p,g,f,null,a,s,l),g=f=y=null),C=!0,m=!1,o=!1,g=t.tag,f=t.result;else{if(!C)return t.tag=c,t.anchor=d,!0;Yt(t,"can not read an implicit mapping pair; a colon is missed")}}else{if(!C)return t.tag=c,t.anchor=d,!0;Yt(t,"can not read a block mapping entry; a multiline key may not be an implicit key")}}else 63===h?(m&&(Qt(t,u,p,g,f,null,a,s,l),g=f=y=null),C=!0,m=!0,o=!0):m?(m=!1,o=!0):Yt(t,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),t.position+=1,h=i;if((t.line===n||t.lineIndent>e)&&(m&&(a=t.line,s=t.lineStart,l=t.position),pe(t,e,4,!0,o)&&(m?f=t.result:y=t.result),m||(Qt(t,u,p,g,f,y,a,s,l),g=f=y=null),te(t,!0,-1),h=t.input.charCodeAt(t.position)),(t.line===n||t.lineIndent>e)&&0!==h)Yt(t,"bad indentation of a mapping entry");else if(t.lineIndent<e)break}return m&&Qt(t,u,p,g,f,null,a,s,l),C&&(t.tag=c,t.anchor=d,t.kind="mapping",t.result=u),C}function ce(t){var e,r,i,o,n=!1,a=!1;if(33!==(o=t.input.charCodeAt(t.position)))return!1;if(null!==t.tag&&Yt(t,"duplication of a tag property"),60===(o=t.input.charCodeAt(++t.position))?(n=!0,o=t.input.charCodeAt(++t.position)):33===o?(a=!0,r="!!",o=t.input.charCodeAt(++t.position)):r="!",e=t.position,n){do{o=t.input.charCodeAt(++t.position)}while(0!==o&&62!==o);t.position<t.length?(i=t.input.slice(e,t.position),o=t.input.charCodeAt(++t.position)):Yt(t,"unexpected end of the stream within a verbatim tag")}else{for(;0!==o&&!Ot(o);)33===o&&(a?Yt(t,"tag suffix cannot contain exclamation marks"):(r=t.input.slice(e-1,t.position+1),Lt.test(r)||Yt(t,"named tag handle cannot contain such characters"),a=!0,e=t.position+1)),o=t.input.charCodeAt(++t.position);i=t.input.slice(e,t.position),At.test(i)&&Yt(t,"tag suffix cannot contain flow indicator characters")}i&&!Ft.test(i)&&Yt(t,"tag name cannot contain such characters: "+i);try{i=decodeURIComponent(i)}catch(s){Yt(t,"tag name is malformed: "+i)}return n?t.tag=i:vt.call(t.tagMap,r)?t.tag=t.tagMap[r]+i:"!"===r?t.tag="!"+i:"!!"===r?t.tag="tag:yaml.org,2002:"+i:Yt(t,'undeclared tag handle "'+r+'"'),!0}function de(t){var e,r;if(38!==(r=t.input.charCodeAt(t.position)))return!1;for(null!==t.anchor&&Yt(t,"duplication of an anchor property"),r=t.input.charCodeAt(++t.position),e=t.position;0!==r&&!Ot(r)&&!Dt(r);)r=t.input.charCodeAt(++t.position);return t.position===e&&Yt(t,"name of an anchor node must contain at least one character"),t.anchor=t.input.slice(e,t.position),!0}function ue(t){var e,r,i;if(42!==(i=t.input.charCodeAt(t.position)))return!1;for(i=t.input.charCodeAt(++t.position),e=t.position;0!==i&&!Ot(i)&&!Dt(i);)i=t.input.charCodeAt(++t.position);return t.position===e&&Yt(t,"name of an alias node must contain at least one character"),r=t.input.slice(e,t.position),vt.call(t.anchorMap,r)||Yt(t,'unidentified alias "'+r+'"'),t.result=t.anchorMap[r],te(t,!0,-1),!0}function pe(t,e,r,i,o){var n,a,s,l,h,c,d,u,p,g=1,f=!1,y=!1;if(null!==t.listener&&t.listener("open",t),t.tag=null,t.anchor=null,t.kind=null,t.result=null,n=a=s=4===r||3===r,i&&te(t,!0,-1)&&(f=!0,t.lineIndent>e?g=1:t.lineIndent===e?g=0:t.lineIndent<e&&(g=-1)),1===g)for(;ce(t)||de(t);)te(t,!0,-1)?(f=!0,s=n,t.lineIndent>e?g=1:t.lineIndent===e?g=0:t.lineIndent<e&&(g=-1)):s=!1;if(s&&(s=f||o),1!==g&&4!==r||(u=1===r||2===r?e:e+1,p=t.position-t.lineStart,1===g?s&&(le(t,p)||he(t,p,u))||ae(t,u)?y=!0:(a&&se(t,u)||oe(t,u)||ne(t,u)?y=!0:ue(t)?(y=!0,null===t.tag&&null===t.anchor||Yt(t,"alias node should not have any properties")):ie(t,u,1===r)&&(y=!0,null===t.tag&&(t.tag="?")),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):0===g&&(y=s&&le(t,p))),null===t.tag)null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);else if("?"===t.tag){for(null!==t.result&&"scalar"!==t.kind&&Yt(t,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+t.kind+'"'),l=0,h=t.implicitTypes.length;l<h;l+=1)if((d=t.implicitTypes[l]).resolve(t.result)){t.result=d.construct(t.result),t.tag=d.tag,null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);break}}else if("!"!==t.tag){if(vt.call(t.typeMap[t.kind||"fallback"],t.tag))d=t.typeMap[t.kind||"fallback"][t.tag];else for(d=null,l=0,h=(c=t.typeMap.multi[t.kind||"fallback"]).length;l<h;l+=1)if(t.tag.slice(0,c[l].tag.length)===c[l].tag){d=c[l];break}d||Yt(t,"unknown tag !<"+t.tag+">"),null!==t.result&&d.kind!==t.kind&&Yt(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+d.kind+'", not "'+t.kind+'"'),d.resolve(t.result,t.tag)?(t.result=d.construct(t.result,t.tag),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):Yt(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return null!==t.listener&&t.listener("close",t),null!==t.tag||null!==t.anchor||y}function ge(t){var e,r,i,o,n=t.position,a=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);0!==(o=t.input.charCodeAt(t.position))&&(te(t,!0,-1),o=t.input.charCodeAt(t.position),!(t.lineIndent>0||37!==o));){for(a=!0,o=t.input.charCodeAt(++t.position),e=t.position;0!==o&&!Ot(o);)o=t.input.charCodeAt(++t.position);for(i=[],(r=t.input.slice(e,t.position)).length<1&&Yt(t,"directive name must not be less than one character in length");0!==o;){for(;$t(o);)o=t.input.charCodeAt(++t.position);if(35===o){do{o=t.input.charCodeAt(++t.position)}while(0!==o&&!Et(o));break}if(Et(o))break;for(e=t.position;0!==o&&!Ot(o);)o=t.input.charCodeAt(++t.position);i.push(t.input.slice(e,t.position))}0!==o&&Jt(t),vt.call(Xt,r)?Xt[r](t,r,i):Gt(t,'unknown document directive "'+r+'"')}te(t,!0,-1),0===t.lineIndent&&45===t.input.charCodeAt(t.position)&&45===t.input.charCodeAt(t.position+1)&&45===t.input.charCodeAt(t.position+2)?(t.position+=3,te(t,!0,-1)):a&&Yt(t,"directives end mark is expected"),pe(t,t.lineIndent-1,4,!1,!0),te(t,!0,-1),t.checkLineBreaks&&_t.test(t.input.slice(n,t.position))&&Gt(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&ee(t)?46===t.input.charCodeAt(t.position)&&(t.position+=3,te(t,!0,-1)):t.position<t.length-1&&Yt(t,"end of the stream or a document separator is expected")}function fe(t,e){e=e||{},0!==(t=String(t)).length&&(10!==t.charCodeAt(t.length-1)&&13!==t.charCodeAt(t.length-1)&&(t+="\n"),65279===t.charCodeAt(0)&&(t=t.slice(1)));var r=new Ht(t,e),i=t.indexOf("\0");for(-1!==i&&(r.position=i,Yt(r,"null byte is not allowed in input")),r.input+="\0";32===r.input.charCodeAt(r.position);)r.lineIndent+=1,r.position+=1;for(;r.position<r.length-1;)ge(r);return r.documents}function ye(t,e,r){null!==e&&"object"==typeof e&&void 0===r&&(r=e,e=null);var i=fe(t,r);if("function"!=typeof e)return i;for(var o=0,n=i.length;o<n;o+=1)e(i[o])}function me(t,e){var r=fe(t,e);if(0!==r.length){if(1===r.length)return r[0];throw new p("expected a single document in the stream, but found more")}}(0,i.K2)(Vt,"captureSegment"),(0,i.K2)(Zt,"mergeMappings"),(0,i.K2)(Qt,"storeMappingPair"),(0,i.K2)(Jt,"readLineBreak"),(0,i.K2)(te,"skipSeparationSpace"),(0,i.K2)(ee,"testDocumentSeparator"),(0,i.K2)(re,"writeFoldedLines"),(0,i.K2)(ie,"readPlainScalar"),(0,i.K2)(oe,"readSingleQuotedScalar"),(0,i.K2)(ne,"readDoubleQuotedScalar"),(0,i.K2)(ae,"readFlowCollection"),(0,i.K2)(se,"readBlockScalar"),(0,i.K2)(le,"readBlockSequence"),(0,i.K2)(he,"readBlockMapping"),(0,i.K2)(ce,"readTagProperty"),(0,i.K2)(de,"readAnchorProperty"),(0,i.K2)(ue,"readAlias"),(0,i.K2)(pe,"composeNode"),(0,i.K2)(ge,"readDocument"),(0,i.K2)(fe,"loadDocuments"),(0,i.K2)(ye,"loadAll$1"),(0,i.K2)(me,"load$1");var Ce={loadAll:ye,load:me},xe=Object.prototype.toString,be=Object.prototype.hasOwnProperty,ke=65279,we={0:"\\0",7:"\\a",8:"\\b",9:"\\t",10:"\\n",11:"\\v",12:"\\f",13:"\\r",27:"\\e",34:'\\"',92:"\\\\",133:"\\N",160:"\\_",8232:"\\L",8233:"\\P"},Te=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],Se=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;function ve(t,e){var r,i,o,n,a,s,l;if(null===e)return{};for(r={},o=0,n=(i=Object.keys(e)).length;o<n;o+=1)a=i[o],s=String(e[a]),"!!"===a.slice(0,2)&&(a="tag:yaml.org,2002:"+a.slice(2)),(l=t.compiledTypeMap.fallback[a])&&be.call(l.styleAliases,s)&&(s=l.styleAliases[s]),r[a]=s;return r}function Be(t){var e,r,i;if(e=t.toString(16).toUpperCase(),t<=255)r="x",i=2;else if(t<=65535)r="u",i=4;else{if(!(t<=4294967295))throw new p("code point within a string may not be greater than 0xFFFFFFFF");r="U",i=8}return"\\"+r+c.repeat("0",i-e.length)+e}(0,i.K2)(ve,"compileStyleMap"),(0,i.K2)(Be,"encodeHex");function _e(t){this.schema=t.schema||St,this.indent=Math.max(1,t.indent||2),this.noArrayIndent=t.noArrayIndent||!1,this.skipInvalid=t.skipInvalid||!1,this.flowLevel=c.isNothing(t.flowLevel)?-1:t.flowLevel,this.styleMap=ve(this.schema,t.styles||null),this.sortKeys=t.sortKeys||!1,this.lineWidth=t.lineWidth||80,this.noRefs=t.noRefs||!1,this.noCompatMode=t.noCompatMode||!1,this.condenseFlow=t.condenseFlow||!1,this.quotingType='"'===t.quotingType?2:1,this.forceQuotes=t.forceQuotes||!1,this.replacer="function"==typeof t.replacer?t.replacer:null,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function Ae(t,e){for(var r,i=c.repeat(" ",e),o=0,n=-1,a="",s=t.length;o<s;)-1===(n=t.indexOf("\n",o))?(r=t.slice(o),o=s):(r=t.slice(o,n+1),o=n+1),r.length&&"\n"!==r&&(a+=i),a+=r;return a}function Le(t,e){return"\n"+c.repeat(" ",t.indent*e)}function Fe(t,e){var r,i;for(r=0,i=t.implicitTypes.length;r<i;r+=1)if(t.implicitTypes[r].resolve(e))return!0;return!1}function Me(t){return 32===t||9===t}function Ee(t){return 32<=t&&t<=126||161<=t&&t<=55295&&8232!==t&&8233!==t||57344<=t&&t<=65533&&t!==ke||65536<=t&&t<=1114111}function $e(t){return Ee(t)&&t!==ke&&13!==t&&10!==t}function Oe(t,e,r){var i=$e(t),o=i&&!Me(t);return(r?i:i&&44!==t&&91!==t&&93!==t&&123!==t&&125!==t)&&35!==t&&!(58===e&&!o)||$e(e)&&!Me(e)&&35===t||58===e&&o}function De(t){return Ee(t)&&t!==ke&&!Me(t)&&45!==t&&63!==t&&58!==t&&44!==t&&91!==t&&93!==t&&123!==t&&125!==t&&35!==t&&38!==t&&42!==t&&33!==t&&124!==t&&61!==t&&62!==t&&39!==t&&34!==t&&37!==t&&64!==t&&96!==t}function Ie(t){return!Me(t)&&58!==t}function Pe(t,e){var r,i=t.charCodeAt(e);return i>=55296&&i<=56319&&e+1<t.length&&(r=t.charCodeAt(e+1))>=56320&&r<=57343?1024*(i-55296)+r-56320+65536:i}function qe(t){return/^\n* /.test(t)}(0,i.K2)(_e,"State"),(0,i.K2)(Ae,"indentString"),(0,i.K2)(Le,"generateNextLine"),(0,i.K2)(Fe,"testImplicitResolving"),(0,i.K2)(Me,"isWhitespace"),(0,i.K2)(Ee,"isPrintable"),(0,i.K2)($e,"isNsCharOrWhitespace"),(0,i.K2)(Oe,"isPlainSafe"),(0,i.K2)(De,"isPlainSafeFirst"),(0,i.K2)(Ie,"isPlainSafeLast"),(0,i.K2)(Pe,"codePointAt"),(0,i.K2)(qe,"needIndentIndicator");function Re(t,e,r,i,o,n,a,s){var l,h=0,c=null,d=!1,u=!1,p=-1!==i,g=-1,f=De(Pe(t,0))&&Ie(Pe(t,t.length-1));if(e||a)for(l=0;l<t.length;h>=65536?l+=2:l++){if(!Ee(h=Pe(t,l)))return 5;f=f&&Oe(h,c,s),c=h}else{for(l=0;l<t.length;h>=65536?l+=2:l++){if(10===(h=Pe(t,l)))d=!0,p&&(u=u||l-g-1>i&&" "!==t[g+1],g=l);else if(!Ee(h))return 5;f=f&&Oe(h,c,s),c=h}u=u||p&&l-g-1>i&&" "!==t[g+1]}return d||u?r>9&&qe(t)?5:a?2===n?5:2:u?4:3:!f||a||o(t)?2===n?5:2:1}function ze(t,e,r,o,n){t.dump=function(){if(0===e.length)return 2===t.quotingType?'""':"''";if(!t.noCompatMode&&(-1!==Te.indexOf(e)||Se.test(e)))return 2===t.quotingType?'"'+e+'"':"'"+e+"'";var a=t.indent*Math.max(1,r),s=-1===t.lineWidth?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-a),l=o||t.flowLevel>-1&&r>=t.flowLevel;function h(e){return Fe(t,e)}switch((0,i.K2)(h,"testAmbiguity"),Re(e,l,t.indent,s,h,t.quotingType,t.forceQuotes&&!o,n)){case 1:return e;case 2:return"'"+e.replace(/'/g,"''")+"'";case 3:return"|"+Ke(e,t.indent)+Ne(Ae(e,a));case 4:return">"+Ke(e,t.indent)+Ne(Ae(je(e,s),a));case 5:return'"'+He(e)+'"';default:throw new p("impossible error: invalid scalar style")}}()}function Ke(t,e){var r=qe(t)?String(e):"",i="\n"===t[t.length-1];return r+(i&&("\n"===t[t.length-2]||"\n"===t)?"+":i?"":"-")+"\n"}function Ne(t){return"\n"===t[t.length-1]?t.slice(0,-1):t}function je(t,e){for(var r,i,o,n=/(\n+)([^\n]*)/g,a=(r=-1!==(r=t.indexOf("\n"))?r:t.length,n.lastIndex=r,We(t.slice(0,r),e)),s="\n"===t[0]||" "===t[0];o=n.exec(t);){var l=o[1],h=o[2];i=" "===h[0],a+=l+(s||i||""===h?"":"\n")+We(h,e),s=i}return a}function We(t,e){if(""===t||" "===t[0])return t;for(var r,i,o=/ [^ ]/g,n=0,a=0,s=0,l="";r=o.exec(t);)(s=r.index)-n>e&&(i=a>n?a:s,l+="\n"+t.slice(n,i),n=i+1),a=s;return l+="\n",t.length-n>e&&a>n?l+=t.slice(n,a)+"\n"+t.slice(a+1):l+=t.slice(n),l.slice(1)}function He(t){for(var e,r="",i=0,o=0;o<t.length;i>=65536?o+=2:o++)i=Pe(t,o),!(e=we[i])&&Ee(i)?(r+=t[o],i>=65536&&(r+=t[o+1])):r+=e||Be(i);return r}function Ue(t,e,r){var i,o,n,a="",s=t.tag;for(i=0,o=r.length;i<o;i+=1)n=r[i],t.replacer&&(n=t.replacer.call(r,String(i),n)),(Ze(t,e,n,!1,!1)||void 0===n&&Ze(t,e,null,!1,!1))&&(""!==a&&(a+=","+(t.condenseFlow?"":" ")),a+=t.dump);t.tag=s,t.dump="["+a+"]"}function Ye(t,e,r,i){var o,n,a,s="",l=t.tag;for(o=0,n=r.length;o<n;o+=1)a=r[o],t.replacer&&(a=t.replacer.call(r,String(o),a)),(Ze(t,e+1,a,!0,!0,!1,!0)||void 0===a&&Ze(t,e+1,null,!0,!0,!1,!0))&&(i&&""===s||(s+=Le(t,e)),t.dump&&10===t.dump.charCodeAt(0)?s+="-":s+="- ",s+=t.dump);t.tag=l,t.dump=s||"[]"}function Ge(t,e,r){var i,o,n,a,s,l="",h=t.tag,c=Object.keys(r);for(i=0,o=c.length;i<o;i+=1)s="",""!==l&&(s+=", "),t.condenseFlow&&(s+='"'),a=r[n=c[i]],t.replacer&&(a=t.replacer.call(r,n,a)),Ze(t,e,n,!1,!1)&&(t.dump.length>1024&&(s+="? "),s+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),Ze(t,e,a,!1,!1)&&(l+=s+=t.dump));t.tag=h,t.dump="{"+l+"}"}function Xe(t,e,r,i){var o,n,a,s,l,h,c="",d=t.tag,u=Object.keys(r);if(!0===t.sortKeys)u.sort();else if("function"==typeof t.sortKeys)u.sort(t.sortKeys);else if(t.sortKeys)throw new p("sortKeys must be a boolean or a function");for(o=0,n=u.length;o<n;o+=1)h="",i&&""===c||(h+=Le(t,e)),s=r[a=u[o]],t.replacer&&(s=t.replacer.call(r,a,s)),Ze(t,e+1,a,!0,!0,!0)&&((l=null!==t.tag&&"?"!==t.tag||t.dump&&t.dump.length>1024)&&(t.dump&&10===t.dump.charCodeAt(0)?h+="?":h+="? "),h+=t.dump,l&&(h+=Le(t,e)),Ze(t,e+1,s,!0,l)&&(t.dump&&10===t.dump.charCodeAt(0)?h+=":":h+=": ",c+=h+=t.dump));t.tag=d,t.dump=c||"{}"}function Ve(t,e,r){var i,o,n,a,s,l;for(n=0,a=(o=r?t.explicitTypes:t.implicitTypes).length;n<a;n+=1)if(((s=o[n]).instanceOf||s.predicate)&&(!s.instanceOf||"object"==typeof e&&e instanceof s.instanceOf)&&(!s.predicate||s.predicate(e))){if(r?s.multi&&s.representName?t.tag=s.representName(e):t.tag=s.tag:t.tag="?",s.represent){if(l=t.styleMap[s.tag]||s.defaultStyle,"[object Function]"===xe.call(s.represent))i=s.represent(e,l);else{if(!be.call(s.represent,l))throw new p("!<"+s.tag+'> tag resolver accepts not "'+l+'" style');i=s.represent[l](e,l)}t.dump=i}return!0}return!1}function Ze(t,e,r,i,o,n,a){t.tag=null,t.dump=r,Ve(t,r,!1)||Ve(t,r,!0);var s,l=xe.call(t.dump),h=i;i&&(i=t.flowLevel<0||t.flowLevel>e);var c,d,u="[object Object]"===l||"[object Array]"===l;if(u&&(d=-1!==(c=t.duplicates.indexOf(r))),(null!==t.tag&&"?"!==t.tag||d||2!==t.indent&&e>0)&&(o=!1),d&&t.usedDuplicates[c])t.dump="*ref_"+c;else{if(u&&d&&!t.usedDuplicates[c]&&(t.usedDuplicates[c]=!0),"[object Object]"===l)i&&0!==Object.keys(t.dump).length?(Xe(t,e,t.dump,o),d&&(t.dump="&ref_"+c+t.dump)):(Ge(t,e,t.dump),d&&(t.dump="&ref_"+c+" "+t.dump));else if("[object Array]"===l)i&&0!==t.dump.length?(t.noArrayIndent&&!a&&e>0?Ye(t,e-1,t.dump,o):Ye(t,e,t.dump,o),d&&(t.dump="&ref_"+c+t.dump)):(Ue(t,e,t.dump),d&&(t.dump="&ref_"+c+" "+t.dump));else{if("[object String]"!==l){if("[object Undefined]"===l)return!1;if(t.skipInvalid)return!1;throw new p("unacceptable kind of an object to dump "+l)}"?"!==t.tag&&ze(t,t.dump,e,n,h)}null!==t.tag&&"?"!==t.tag&&(s=encodeURI("!"===t.tag[0]?t.tag.slice(1):t.tag).replace(/!/g,"%21"),s="!"===t.tag[0]?"!"+s:"tag:yaml.org,2002:"===s.slice(0,18)?"!!"+s.slice(18):"!<"+s+">",t.dump=s+" "+t.dump)}return!0}function Qe(t,e){var r,i,o=[],n=[];for(Je(t,o,n),r=0,i=n.length;r<i;r+=1)e.duplicates.push(o[n[r]]);e.usedDuplicates=new Array(i)}function Je(t,e,r){var i,o,n;if(null!==t&&"object"==typeof t)if(-1!==(o=e.indexOf(t)))-1===r.indexOf(o)&&r.push(o);else if(e.push(t),Array.isArray(t))for(o=0,n=t.length;o<n;o+=1)Je(t[o],e,r);else for(o=0,n=(i=Object.keys(t)).length;o<n;o+=1)Je(t[i[o]],e,r)}function tr(t,e){var r=new _e(e=e||{});r.noRefs||Qe(t,r);var i=t;return r.replacer&&(i=r.replacer.call({"":i},"",i)),Ze(r,0,i,!0,!0)?r.dump+"\n":""}(0,i.K2)(Re,"chooseScalarStyle"),(0,i.K2)(ze,"writeScalar"),(0,i.K2)(Ke,"blockHeader"),(0,i.K2)(Ne,"dropEndingNewline"),(0,i.K2)(je,"foldString"),(0,i.K2)(We,"foldLine"),(0,i.K2)(He,"escapeString"),(0,i.K2)(Ue,"writeFlowSequence"),(0,i.K2)(Ye,"writeBlockSequence"),(0,i.K2)(Ge,"writeFlowMapping"),(0,i.K2)(Xe,"writeBlockMapping"),(0,i.K2)(Ve,"detectType"),(0,i.K2)(Ze,"writeNode"),(0,i.K2)(Qe,"getDuplicateReferences"),(0,i.K2)(Je,"inspectNode"),(0,i.K2)(tr,"dump$1");function er(t,e){return function(){throw new Error("Function yaml."+t+" is removed in js-yaml 4. Use yaml."+e+" instead, which is now safe by default.")}}(0,i.K2)(er,"renamed");var rr=X,ir=Ce.load;er("safeLoad","load"),er("safeLoadAll","loadAll"),er("safeDump","dump")},3923(t,e,r){"use strict";r.r(e),r.d(e,{default:()=>cr});var i=r(8213),o=r(3283),n=r(3848),a=(r(6615),r(1334),r(273),r(5105),r(8013),r(5739)),s=r(8515),l=r(3706),h=r(797),c=r(513),d=r(451),u="comm",p="rule",g="decl",f="@keyframes",y="@layer",m=Math.abs,C=String.fromCharCode;Object.assign;function x(t){return t.trim()}function b(t,e,r){return t.replace(e,r)}function k(t,e){return 0|t.charCodeAt(e)}function w(t,e,r){return t.slice(e,r)}function T(t){return t.length}function S(t){return t.length}function v(t,e){return e.push(t),t}function B(t,e){for(var r="",i=0;i<t.length;i++)r+=e(t[i],i,t,e)||"";return r}function _(t,e,r,i){switch(t.type){case y:if(t.children.length)break;case"@import":case"@namespace":case g:return t.return=t.return||t.value;case u:return"";case f:return t.return=t.value+"{"+B(t.children,i)+"}";case p:if(!T(t.value=t.props.join(",")))return""}return T(r=B(t.children,i))?t.return=t.value+"{"+r+"}":""}var A=1,L=1,F=0,M=0,E=0,$="";function O(t,e,r,i,o,n,a,s){return{value:t,root:e,parent:r,type:i,props:o,children:n,line:A,column:L,length:a,return:"",siblings:s}}function D(){return E=M>0?k($,--M):0,L--,10===E&&(L=1,A--),E}function I(){return E=M<F?k($,M++):0,L++,10===E&&(L=1,A++),E}function P(){return k($,M)}function q(){return M}function R(t,e){return w($,t,e)}function z(t){switch(t){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function K(t){return A=L=1,F=T($=t),M=0,[]}function N(t){return $="",t}function j(t){return x(R(M-1,U(91===t?t+2:40===t?t+1:t)))}function W(t){for(;(E=P())&&E<33;)I();return z(t)>2||z(E)>3?"":" "}function H(t,e){for(;--e&&I()&&!(E<48||E>102||E>57&&E<65||E>70&&E<97););return R(t,q()+(e<6&&32==P()&&32==I()))}function U(t){for(;I();)switch(E){case t:return M;case 34:case 39:34!==t&&39!==t&&U(E);break;case 40:41===t&&U(t);break;case 92:I()}return M}function Y(t,e){for(;I()&&t+E!==57&&(t+E!==84||47!==P()););return"/*"+R(e,M-1)+"*"+C(47===t?t:I())}function G(t){for(;!z(P());)I();return R(t,M)}function X(t){return N(V("",null,null,null,[""],t=K(t),0,[0],t))}function V(t,e,r,i,o,n,a,s,l){for(var h=0,c=0,d=a,u=0,p=0,g=0,f=1,y=1,m=1,x=0,S=0,B="",_=o,A=n,L=i,F=B;y;)switch(g=S,S=I()){case 40:108!=g&&58==k(F,d-1)?(x++,F+="("):F+=j(S);break;case 41:x--,F+=")";break;case 34:case 39:case 91:F+=j(S);break;case 9:case 10:case 13:case 32:if(x>0){F+=C(S);break}F+=W(g);break;case 92:F+=H(q()-1,7);continue;case 47:switch(P()){case 42:case 47:v(Q(Y(I(),q()),e,r,l),l),5!=z(g||1)&&5!=z(P()||1)||!T(F)||" "===w(F,-1,void 0)||(F+=" ");break;default:F+="/"}break;case 123*f:s[h++]=T(F)*m;case 125*f:case 59:case 0:if(x>0&&S){F+=C(S);break}switch(S){case 0:case 125:y=0;case 59+c:-1==m&&(F=b(F,/\f/g,"")),p>0&&(T(F)-d||0===f)&&v(p>32?J(F+";",i,r,d-1,l):J(b(F," ","")+";",i,r,d-2,l),l);break;case 59:F+=";";default:if(v(L=Z(F,e,r,h,c,o,s,B,_=[],A=[],d,n),n),123===S)if(0===c)V(F,e,L,L,_,n,d,s,A);else{switch(u){case 99:if(110===k(F,3))break;case 108:if(97===k(F,2))break;default:c=0;case 100:case 109:case 115:}c?V(t,L,L,i&&v(Z(t,L,L,0,0,o,s,B,o,_=[],d,A),A),o,A,d,s,i?_:A):V(F,L,L,L,[""],A,0,s,A)}}h=c=p=0,f=m=1,B=F="",d=a;break;case 58:d=1+T(F),p=g;default:if(f<1)if(123==S)--f;else if(125==S&&0==f++&&125==D())continue;switch(F+=C(S),S*f){case 38:m=c>0?1:(F+="\f",-1);break;case 44:if(x>0)break;s[h++]=(T(F)-1)*m,m=1;break;case 64:45===P()&&(F+=j(I())),u=P(),c=d=T(B=F+=G(q())),S++;break;case 45:45===g&&2==T(F)&&(f=0)}}return n}function Z(t,e,r,i,o,n,a,s,l,h,c,d){for(var u=o-1,g=0===o?n:[""],f=S(g),y=0,C=0,k=0;y<i;++y)for(var T=0,v=w(t,u+1,u=m(C=a[y])),B=t;T<f;++T)(B=x(C>0?g[T]+" "+v:b(v,/&\f/g,g[T])))&&(l[k++]=B);return O(t,e,r,0===o?p:s,l,h,c,d)}function Q(t,e,r,i){return O(t,e,r,u,C(E),w(t,2,-2),0,i)}function J(t,e,r,i,o){return O(t,e,r,g,w(t,0,i),w(t,i+1,-1),i,o)}var tt=r(9418),et=r(4608),rt=r(3058),it=r(9663),ot=r(1461);function nt(t){if(null==t)return!0;if((0,rt.X)(t))return!!("function"==typeof t.splice||"string"==typeof t||(0,ot.P)(t)||(0,it.i)(t)||(0,et.N)(t))&&0===t.length;if("object"==typeof t){if(t instanceof Map||t instanceof Set)return 0===t.size;const e=Object.keys(t);return function(t){const e=t?.constructor;return t===("function"==typeof e?e.prototype:Object.prototype)}(t)?0===e.filter(t=>"constructor"!==t).length:0===e.length}return!0}var at={id:"c4",detector:(0,h.K2)(t=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(7005)]).then(r.bind(r,7005));return{id:"c4",diagram:t}},"loader")},st="flowchart",lt={id:st,detector:(0,h.K2)((t,e)=>"dagre-wrapper"!==e?.flowchart?.defaultRenderer&&"elk"!==e?.flowchart?.defaultRenderer&&/^\s*graph/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(4219)]).then(r.bind(r,4219));return{id:st,diagram:t}},"loader")},ht="flowchart-v2",ct={id:ht,detector:(0,h.K2)((t,e)=>"dagre-d3"!==e?.flowchart?.defaultRenderer&&("elk"===e?.flowchart?.defaultRenderer&&(e.layout="elk"),!(!/^\s*graph/.test(t)||"dagre-wrapper"!==e?.flowchart?.defaultRenderer)||/^\s*flowchart/.test(t)),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(4219)]).then(r.bind(r,4219));return{id:ht,diagram:t}},"loader")},dt={id:"er",detector:(0,h.K2)(t=>/^\s*erDiagram/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(253)]).then(r.bind(r,2634));return{id:"er",diagram:t}},"loader")},ut="gitGraph",pt={id:ut,detector:(0,h.K2)(t=>/^\s*gitGraph/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(1795)]).then(r.bind(r,1795));return{id:ut,diagram:t}},"loader")},gt="gantt",ft={id:gt,detector:(0,h.K2)(t=>/^\s*gantt/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await r.e(4045).then(r.bind(r,4045));return{id:gt,diagram:t}},"loader")},yt="info",mt={id:yt,detector:(0,h.K2)(t=>/^\s*info/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(786)]).then(r.bind(r,786));return{id:yt,diagram:t}},"loader")},Ct={id:"pie",detector:(0,h.K2)(t=>/^\s*pie/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(9301)]).then(r.bind(r,9301));return{id:"pie",diagram:t}},"loader")},xt="quadrantChart",bt={id:xt,detector:(0,h.K2)(t=>/^\s*quadrantChart/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await r.e(8646).then(r.bind(r,8646));return{id:xt,diagram:t}},"loader")},kt="xychart",wt={id:kt,detector:(0,h.K2)(t=>/^\s*xychart(-beta)?/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await r.e(5692).then(r.bind(r,5692));return{id:kt,diagram:t}},"loader")},Tt="requirement",St={id:Tt,detector:(0,h.K2)(t=>/^\s*requirement(Diagram)?/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(685)]).then(r.bind(r,685));return{id:Tt,diagram:t}},"loader")},vt="sequence",Bt={id:vt,detector:(0,h.K2)(t=>/^\s*sequenceDiagram/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(6246)]).then(r.bind(r,6246));return{id:vt,diagram:t}},"loader")},_t="class",At={id:_t,detector:(0,h.K2)((t,e)=>"dagre-wrapper"!==e?.class?.defaultRenderer&&/^\s*classDiagram/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(4787),r.e(8320)]).then(r.bind(r,8320));return{id:_t,diagram:t}},"loader")},Lt="classDiagram",Ft={id:Lt,detector:(0,h.K2)((t,e)=>!(!/^\s*classDiagram/.test(t)||"dagre-wrapper"!==e?.class?.defaultRenderer)||/^\s*classDiagram-v2/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(4787),r.e(2438)]).then(r.bind(r,2438));return{id:Lt,diagram:t}},"loader")},Mt="state",Et={id:Mt,detector:(0,h.K2)((t,e)=>"dagre-wrapper"!==e?.state?.defaultRenderer&&/^\s*stateDiagram/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(697),r.e(1301),r.e(1513),r.e(8363)]).then(r.bind(r,8363));return{id:Mt,diagram:t}},"loader")},$t="stateDiagram",Ot={id:$t,detector:(0,h.K2)((t,e)=>!!/^\s*stateDiagram-v2/.test(t)||!(!/^\s*stateDiagram/.test(t)||"dagre-wrapper"!==e?.state?.defaultRenderer),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(1513),r.e(743)]).then(r.bind(r,743));return{id:$t,diagram:t}},"loader")},Dt="journey",It={id:Dt,detector:(0,h.K2)(t=>/^\s*journey/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(4728)]).then(r.bind(r,4728));return{id:Dt,diagram:t}},"loader")},Pt={draw:(0,h.K2)((t,e,r)=>{h.Rm.debug("rendering svg for syntax error\n");const o=(0,i.D)(e),n=o.append("g");o.attr("viewBox","0 0 2412 512"),(0,l.a$)(o,100,512,!0),n.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),n.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),n.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),n.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),n.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),n.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),n.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),n.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${r}`)},"draw")},qt=Pt,Rt={db:{},renderer:Pt,parser:{parse:(0,h.K2)(()=>{},"parse")}},zt="flowchart-elk",Kt={id:zt,detector:(0,h.K2)((t,e={})=>!!(/^\s*flowchart-elk/.test(t)||/^\s*(flowchart|graph)/.test(t)&&"elk"===e?.flowchart?.defaultRenderer)&&(e.layout="elk",!0),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(4219)]).then(r.bind(r,4219));return{id:zt,diagram:t}},"loader")},Nt="timeline",jt={id:Nt,detector:(0,h.K2)(t=>/^\s*timeline/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await r.e(3049).then(r.bind(r,3049));return{id:Nt,diagram:t}},"loader")},Wt="mindmap",Ht={id:Wt,detector:(0,h.K2)(t=>/^\s*mindmap/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(5438)]).then(r.bind(r,5438));return{id:Wt,diagram:t}},"loader")},Ut="kanban",Yt={id:Ut,detector:(0,h.K2)(t=>/^\s*kanban/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(3723)]).then(r.bind(r,3723));return{id:Ut,diagram:t}},"loader")},Gt="sankey",Xt={id:Gt,detector:(0,h.K2)(t=>/^\s*sankey(-beta)?/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await r.e(536).then(r.bind(r,536));return{id:Gt,diagram:t}},"loader")},Vt="packet",Zt={id:Vt,detector:(0,h.K2)(t=>/^\s*packet(-beta)?/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(9299)]).then(r.bind(r,9299));return{id:Vt,diagram:t}},"loader")},Qt="radar",Jt={id:Qt,detector:(0,h.K2)(t=>/^\s*radar-beta/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(6678)]).then(r.bind(r,6678));return{id:Qt,diagram:t}},"loader")},te="block",ee={id:te,detector:(0,h.K2)(t=>/^\s*block(-beta)?/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(697),r.e(384)]).then(r.bind(r,384));return{id:te,diagram:t}},"loader")},re="treeView",ie={id:re,detector:(0,h.K2)(t=>/^\s*treeView-beta/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(3088)]).then(r.bind(r,3088));return{id:re,diagram:t}},"loader")},oe="architecture",ne={id:oe,detector:(0,h.K2)(t=>/^\s*architecture/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(165),r.e(9557)]).then(r.bind(r,9557));return{id:oe,diagram:t}},"loader")},ae="eventmodeling",se={id:ae,detector:(0,h.K2)(t=>/^\s*eventmodeling/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(1844)]).then(r.bind(r,1844));return{id:ae,diagram:t}},"loader")},le="ishikawa",he={id:le,detector:(0,h.K2)(t=>/^\s*ishikawa(-beta)?\b/i.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await r.e(399).then(r.bind(r,399));return{id:le,diagram:t}},"loader")},ce="venn",de={id:ce,detector:(0,h.K2)(t=>/^\s*venn-beta/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await r.e(3593).then(r.bind(r,3593));return{id:ce,diagram:t}},"loader")},ue="treemap",pe={id:ue,detector:(0,h.K2)(t=>/^\s*treemap/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(7059)]).then(r.bind(r,7059));return{id:ue,diagram:t}},"loader")},ge="wardley-beta",fe={id:ge,detector:(0,h.K2)(t=>/^\s*wardley-beta/i.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(2665)]).then(r.bind(r,2665));return{id:ge,diagram:t}},"loader")},ye=!1,me=(0,h.K2)(()=>{ye||(ye=!0,(0,l.Js)("error",Rt,t=>"error"===t.toLowerCase().trim()),(0,l.Js)("---",{db:{clear:(0,h.K2)(()=>{},"clear")},styles:{},renderer:{draw:(0,h.K2)(()=>{},"draw")},parser:{parse:(0,h.K2)(()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")},"parse")},init:(0,h.K2)(()=>null,"init")},t=>t.toLowerCase().trimStart().startsWith("---")),(0,l.Xd)(Kt,Ht,ne),(0,l.Xd)(at,Yt,Ft,At,dt,ft,mt,Ct,St,Bt,ct,lt,jt,pt,Ot,Et,It,bt,Xt,Zt,wt,ee,se,ie,Jt,he,pe,de,fe))},"addDiagrams"),Ce=(0,h.K2)(async()=>{h.Rm.debug("Loading registered diagrams");const t=(await Promise.allSettled(Object.entries(l.mW).map(async([t,{detector:e,loader:r}])=>{if(r)try{(0,l.Gs)(t)}catch{try{const{diagram:t,id:i}=await r();(0,l.Js)(i,t,e)}catch(i){throw h.Rm.error(`Failed to load external diagram with key ${t}. Removing from detectors.`),delete l.mW[t],i}}}))).filter(t=>"rejected"===t.status);if(t.length>0){h.Rm.error(`Failed to load ${t.length} external diagrams`);for(const e of t)h.Rm.error(e);throw new Error(`Failed to load ${t.length} external diagrams`)}},"loadRegisteredDiagrams");function xe(t,e){t.attr("role","graphics-document document"),""!==e&&t.attr("aria-roledescription",e)}function be(t,e,r,i){if(void 0!==t.insert){if(r){const e=`chart-desc-${i}`;t.attr("aria-describedby",e),t.insert("desc",":first-child").attr("id",e).text(r)}if(e){const r=`chart-title-${i}`;t.attr("aria-labelledby",r),t.insert("title",":first-child").attr("id",r).text(e)}}}(0,h.K2)(xe,"setA11yDiagramInfo"),(0,h.K2)(be,"addSVGa11yTitleDescription");var ke=class t{constructor(t,e,r,i,o){this.type=t,this.text=e,this.db=r,this.parser=i,this.renderer=o}static{(0,h.K2)(this,"Diagram")}static async fromText(e,r={}){const i=(0,l.zj)(),o=(0,l.Ch)(e,i);e=(0,s.C4)(e)+"\n";try{(0,l.Gs)(o)}catch{const t=(0,l.J$)(o);if(!t)throw new l.C0(`Diagram ${o} not found.`);const{id:e,diagram:r}=await t();(0,l.Js)(e,r)}const{db:n,parser:a,renderer:h,init:c}=(0,l.Gs)(o);return a.parser&&(a.parser.yy=n),n.clear?.(),c?.(i),r.title&&n.setDiagramTitle?.(r.title),await a.parse(e),new t(o,e,n,a,h)}async render(t,e){await this.renderer.draw(this.text,t,e,this)}getParser(){return this.parser}getType(){return this.type}},we=[],Te=(0,h.K2)(()=>{we.forEach(t=>{t()}),we=[]},"attachFunctions"),Se=(0,h.K2)(t=>t.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart(),"cleanupComments");function ve(t){const e=t.match(l.EJ);if(!e)return{text:t,metadata:{}};let r=(0,o.H)(e[1],{schema:o.r})??{};r="object"!=typeof r||Array.isArray(r)?{}:r;const i={};return r.displayMode&&(i.displayMode=r.displayMode.toString()),r.title&&(i.title=r.title.toString()),r.config&&(i.config=r.config),{text:t.slice(e[0].length),metadata:i}}(0,h.K2)(ve,"extractFrontMatter");var Be=(0,h.K2)(t=>t.replace(/\r\n?/g,"\n").replace(/<(\w+)([^>]*)>/g,(t,e,r)=>"<"+e+r.replace(/="([^"]*)"/g,"='$1'")+">"),"cleanupText"),_e=(0,h.K2)(t=>{const{text:e,metadata:r}=ve(t),{displayMode:i,title:o,config:n={}}=r;return i&&(n.gantt||(n.gantt={}),n.gantt.displayMode=i),{title:o,config:n,text:e}},"processFrontmatter"),Ae=(0,h.K2)(t=>{const e=s._K.detectInit(t)??{},r=s._K.detectDirective(t,"wrap");return Array.isArray(r)?e.wrap=r.some(({type:t})=>"wrap"===t):"wrap"===r?.type&&(e.wrap=!0),{text:(0,s.vU)(t),directive:e}},"processDirectives");function Le(t){const e=Be(t),r=_e(e),i=Ae(r.text),o=(0,s.$t)(r.config,i.directive);return{code:t=Se(i.text),title:r.title,config:o}}function Fe(t){const e=(new TextEncoder).encode(t),r=Array.from(e,t=>String.fromCodePoint(t)).join("");return btoa(r)}(0,h.K2)(Le,"preprocessDiagram"),(0,h.K2)(Fe,"toBase64");var Me=["foreignobject"],Ee=["dominant-baseline"];function $e(t){const e=Le(t);return(0,l.cL)(),(0,l.xA)(e.config??{}),e}async function Oe(t,e){me();try{const{code:e,config:r}=$e(t);return{diagramType:(await Ue(e)).type,config:r}}catch(r){if(e?.suppressErrors)return!1;throw r}}(0,h.K2)($e,"processAndSetConfigs"),(0,h.K2)(Oe,"parse");var De=(0,h.K2)((t,e,r=[])=>`.${t} ${e} ${(0,l.Df)(`{ ${r.join(" !important; ")} !important; }`)}`,"cssImportantStyles"),Ie=(0,h.K2)((t,e=new Map)=>{const r=new CSSStyleSheet;if(void 0!==t.fontFamily&&r.insertRule(`:root { --mermaid-font-family: ${t.fontFamily}}`,r.cssRules.length),void 0!==t.altFontFamily&&r.insertRule(`:root { --mermaid-alt-font-family: ${t.altFontFamily}}`,r.cssRules.length),e instanceof Map){const i=(0,l.E)(t)?["> *","span"]:["rect","polygon","ellipse","circle","path"];e.forEach(t=>{nt(t.styles)||i.forEach(e=>{r.insertRule(De(t.id,e,t.styles),r.cssRules.length)}),nt(t.textStyles)||r.insertRule(De(t.id,"tspan",(t?.textStyles||[]).map(t=>t.replace("color","fill"))),r.cssRules.length)})}let i="";if(void 0!==t.themeCSS)if("function"==typeof r.replaceSync){const e=new CSSStyleSheet;e.replaceSync(t.themeCSS),i=(0,l.KG)(e)+"\n"}else i+=`${t.themeCSS}\n`;return i+(0,l.KG)(r)},"createCssStyles"),Pe=(0,h.K2)((t,e)=>{return B(X(`${t}{${e}}`),(i=S(r=[(0,h.K2)(function(e,r,i,o){if("rule"===e.type&&Array.isArray(e.props)){if(e.parent&&e.parent.type===f)return;e.props=e.props.map(e=>e.startsWith(t)?e:`${t} ${e}`)}else e.type.startsWith("@")&&(["@media","@supports",y,"@scope","@container","@starting-style",f].includes(e.type)||(h.Rm.warn(`Removing unsupported at-rule ${e.type} from CSS`),e.type=u))},"addNamespace"),_]),function(t,e,o,n){for(var a="",s=0;s<i;s++)a+=r[s](t,e,o,n)||"";return a}));var r,i},"compileCSS"),qe=(0,h.K2)((t,e,r,i)=>{const o=Ie(t,r),n=(0,l.tM)(e,o,{...t.themeVariables,theme:t.theme,look:t.look},i);return Pe(i,n)},"createUserStyles"),Re=(0,h.K2)((t="",e,r)=>{let i=t;return r||e||(i=i.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),i=(0,s.Sm)(i),i=i.replace(/<br>/g,"<br/>"),i},"cleanUpSvgCode"),ze=(0,h.K2)((t="",e)=>`<iframe style="width:100%;height:${e?.viewBox?.baseVal?.height?e.viewBox.baseVal.height+"px":"100%"};border:0;margin:0;" src="data:text/html;charset=UTF-8;base64,${Fe(`<body style="margin:0">${t}</body>`)}" sandbox="allow-top-navigation-by-user-activation allow-popups">\n The "iframe" tag is not supported by your browser.\n</iframe>`,"putIntoIFrame"),Ke=(0,h.K2)((t,e,r,i,o)=>{const n=t.append("div");n.attr("id",r),i&&n.attr("style",i);const a=n.append("svg").attr("id",e).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg");return o&&a.attr("xmlns:xlink",o),a.append("g"),t},"appendDivSvgG");function Ne(t,e){return t.append("iframe").attr("id",e).attr("style","width: 100%; height: 100%;").attr("sandbox","")}(0,h.K2)(Ne,"sandboxedIframe");var je=(0,h.K2)((t,e,r,i)=>{t.getElementById(e)?.remove(),t.getElementById(r)?.remove(),t.getElementById(i)?.remove()},"removeExistingElements"),We=(0,h.K2)(async function(t,e,r){me();const i=$e(e);e=i.code;const o=(0,l.zj)();h.Rm.debug(o),e.length>(o?.maxTextSize??5e4)&&(e="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa");const n=`#${t}`,a="i"+t,s="#"+a,c="d"+t,u="#"+c,p=(0,h.K2)(()=>{const t=f?s:u,e=(0,d.Ltv)(t).node();e&&"remove"in e&&e.remove()},"removeTempElements");let g=(0,d.Ltv)(document.body);const f="sandbox"===o.securityLevel,y="loose"===o.securityLevel,m=o.fontFamily;if(void 0!==r){if(r&&(r.innerHTML=""),f){const t=Ne((0,d.Ltv)(r),a);g=(0,d.Ltv)(t.nodes()[0].contentDocument.body),g.node().style.margin="0"}else g=(0,d.Ltv)(r);Ke(g,t,c,`font-family: ${m}`,"http://www.w3.org/1999/xlink")}else{if(je(document,t,c,a),f){const t=Ne((0,d.Ltv)(document.body),a);g=(0,d.Ltv)(t.nodes()[0].contentDocument.body),g.node().style.margin="0"}else g=(0,d.Ltv)("body");Ke(g,t,c)}let C,x;try{C=await ke.fromText(e,{title:i.title})}catch(M){if(o.suppressErrorRendering)throw p(),M;C=await ke.fromText("error"),x=M}const b=g.select(u).node(),k=C.type,w=b.firstChild,T=w.firstChild,S=C.renderer.getClasses?.(e,C),v=qe(o,k,S,n),B=document.createElement("style");B.innerHTML=v,w.insertBefore(B,T);try{await C.renderer.draw(e,t,"11.15.0",C)}catch(E){throw o.suppressErrorRendering?p():qt.draw(e,t,"11.15.0"),E}const _=g.select(`${u} svg`),A=C.db.getAccTitle?.(),L=C.db.getAccDescription?.();Ye(k,_,A,L),g.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns","http://www.w3.org/1999/xhtml");let F=g.select(u).node().innerHTML;if(h.Rm.debug("config.arrowMarkerAbsolute",o.arrowMarkerAbsolute),F=Re(F,f,(0,l._3)(o.arrowMarkerAbsolute)),f){const t=g.select(u+" svg").node();F=ze(F,t)}else y||(F=tt.A.sanitize(F,{ADD_TAGS:Me,ADD_ATTR:Ee,HTML_INTEGRATION_POINTS:{foreignobject:!0}}));if(Te(),x)throw x;return p(),{diagramType:k,svg:F,bindFunctions:C.db.bindFunctions}},"render");function He(t={}){const e=(0,l.hH)({},t);e?.fontFamily&&!e.themeVariables?.fontFamily&&(e.themeVariables||(e.themeVariables={}),e.themeVariables.fontFamily=e.fontFamily),(0,l.wZ)(e),e?.theme&&e.theme in l.H$?e.themeVariables=l.H$[e.theme].getThemeVariables(e.themeVariables):e&&(e.themeVariables=l.H$.default.getThemeVariables(e.themeVariables));const r="object"==typeof e?(0,l.UU)(e):(0,l.Q2)();(0,h.He)(r.logLevel),me()}(0,h.K2)(He,"initialize");var Ue=(0,h.K2)((t,e={})=>{const{code:r}=Le(t);return ke.fromText(r,e)},"getDiagramFromText");function Ye(t,e,r,i){xe(e,t),be(e,r,i,e.attr("id"))}(0,h.K2)(Ye,"addA11yInfo");var Ge=Object.freeze({render:We,parse:Oe,getDiagramFromText:Ue,initialize:He,getConfig:l.zj,setConfig:l.Nk,getSiteConfig:l.Q2,updateSiteConfig:l.B6,reset:(0,h.K2)(()=>{(0,l.cL)()},"reset"),globalReset:(0,h.K2)(()=>{(0,l.cL)(l.sb)},"globalReset"),defaultConfig:l.sb});(0,h.He)((0,l.zj)().logLevel),(0,l.cL)((0,l.zj)());var Xe=(0,h.K2)((t,e,r)=>{h.Rm.warn(t),(0,s.dq)(t)?(r&&r(t.str,t.hash),e.push({...t,message:t.str,error:t})):(r&&r(t),t instanceof Error&&e.push({str:t.message,message:t.message,hash:t.name,error:t}))},"handleError"),Ve=(0,h.K2)(async function(t={querySelector:".mermaid"}){try{await Ze(t)}catch(e){if((0,s.dq)(e)&&h.Rm.error(e.str),hr.parseError&&hr.parseError(e),!t.suppressErrors)throw h.Rm.error("Use the suppressErrors option to suppress these errors"),e}},"run"),Ze=(0,h.K2)(async function({postRenderCallback:t,querySelector:e,nodes:r}={querySelector:".mermaid"}){const i=Ge.getConfig();let o;if(h.Rm.debug((t?"":"No ")+"Callback function found"),r)o=r;else{if(!e)throw new Error("Nodes and querySelector are both undefined");o=document.querySelectorAll(e)}h.Rm.debug(`Found ${o.length} diagrams`),void 0!==i?.startOnLoad&&(h.Rm.debug("Start On Load: "+i?.startOnLoad),Ge.updateSiteConfig({startOnLoad:i?.startOnLoad}));const n=new s._K.InitIDGenerator(i.deterministicIds,i.deterministicIDSeed);let a;const l=[];for(const u of Array.from(o)){if(h.Rm.info("Rendering diagram: "+u.id),u.getAttribute("data-processed"))continue;u.setAttribute("data-processed","true");const e=`mermaid-${n.next()}`;a=u.innerHTML,a=(0,c.T)(s._K.entityDecode(a)).trim().replace(/<br\s*\/?>/gi,"<br/>");const r=s._K.detectInit(a);r&&h.Rm.debug("Detected early reinit: ",r);try{const{svg:r,bindFunctions:i}=await sr(e,a,u);u.innerHTML=r,t&&await t(e),i&&i(u)}catch(d){Xe(d,l,hr.parseError)}}if(l.length>0)throw l[0]},"runThrowsErrors"),Qe=(0,h.K2)(function(t){Ge.initialize(t)},"initialize"),Je=(0,h.K2)(async function(t,e,r){h.Rm.warn("mermaid.init is deprecated. Please use run instead."),t&&Qe(t);const i={postRenderCallback:r,querySelector:".mermaid"};"string"==typeof e?i.querySelector=e:e&&(e instanceof HTMLElement?i.nodes=[e]:i.nodes=e),await Ve(i)},"init"),tr=(0,h.K2)(async(t,{lazyLoad:e=!0}={})=>{me(),(0,l.Xd)(...t),!1===e&&await Ce()},"registerExternalDiagrams"),er=(0,h.K2)(function(){if(hr.startOnLoad){const{startOnLoad:t}=Ge.getConfig();t&&hr.run().catch(t=>h.Rm.error("Mermaid failed to initialize",t))}},"contentLoaded");"undefined"!=typeof document&&window.addEventListener("load",er,!1);var rr=(0,h.K2)(function(t){hr.parseError=t},"setParseErrorHandler"),ir=[],or=!1,nr=(0,h.K2)(async()=>{if(!or){for(or=!0;ir.length>0;){const e=ir.shift();if(e)try{await e()}catch(t){h.Rm.error("Error executing queue",t)}}or=!1}},"executeQueue"),ar=(0,h.K2)(async(t,e)=>new Promise((r,i)=>{const o=(0,h.K2)(()=>new Promise((o,n)=>{Ge.parse(t,e).then(t=>{o(t),r(t)},t=>{h.Rm.error("Error parsing",t),hr.parseError?.(t),n(t),i(t)})}),"performCall");ir.push(o),nr().catch(i)}),"parse"),sr=(0,h.K2)((t,e,r)=>new Promise((i,o)=>{const n=(0,h.K2)(()=>new Promise((n,a)=>{Ge.render(t,e,r).then(t=>{n(t),i(t)},t=>{h.Rm.error("Error parsing",t),hr.parseError?.(t),a(t),o(t)})}),"performCall");ir.push(n),nr().catch(o)}),"render"),lr=(0,h.K2)(()=>Object.keys(l.mW).map(t=>({id:t})),"getRegisteredDiagramsMetadata"),hr={startOnLoad:!0,mermaidAPI:Ge,parse:ar,render:sr,init:Je,run:Ve,registerExternalDiagrams:tr,registerLayoutLoaders:n.sO,initialize:Qe,parseError:void 0,contentLoaded:er,setParseErrorHandler:rr,detectType:l.Ch,registerIconPacks:a.pC,getRegisteredDiagramsMetadata:lr},cr=hr}}]); \ No newline at end of file diff --git a/docs/build/assets/js/3923.5f9e9fdc.js.LICENSE.txt b/docs/build/assets/js/3923.5f9e9fdc.js.LICENSE.txt deleted file mode 100644 index 136637124..000000000 --- a/docs/build/assets/js/3923.5f9e9fdc.js.LICENSE.txt +++ /dev/null @@ -1 +0,0 @@ -/*! @license DOMPurify 3.4.2 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.2/LICENSE */ diff --git a/docs/build/assets/js/399.c76183a6.js b/docs/build/assets/js/399.c76183a6.js deleted file mode 100644 index 7cbfbb44c..000000000 --- a/docs/build/assets/js/399.c76183a6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[399],{399(t,i,e){e.d(i,{diagram:()=>C});var n=e(8213),s=e(8515),a=e(3706),r=e(797),h=e(2274),o=function(){var t=(0,r.K2)(function(t,i,e,n){for(e=e||{},n=t.length;n--;e[t[n]]=i);return e},"o"),i=[1,4],e=[1,14],n=[1,12],s=[1,13],a=[6,7,8],h=[1,20],o=[1,18],l=[1,19],c=[6,7,11],u=[1,6,13,14],d=[1,23],y=[1,24],p=[1,6,7,11,13,14],g={trace:(0,r.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ishikawa:4,spaceLines:5,SPACELINE:6,NL:7,ISHIKAWA:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,TEXT:14,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"ISHIKAWA",11:"EOF",13:"SPACELIST",14:"TEXT"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,1],[12,1],[12,1]],performAction:(0,r.K2)(function(t,i,e,n,s,a,r){var h=a.length-1;switch(s){case 6:case 7:return n;case 15:n.addNode(a[h-1].length,a[h].trim());break;case 16:n.addNode(0,a[h].trim())}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:i},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:i},{6:e,7:[1,10],9:9,12:11,13:n,14:s},t(a,[2,3]),{1:[2,2]},t(a,[2,4]),t(a,[2,5]),{1:[2,6],6:e,12:15,13:n,14:s},{6:e,9:16,12:11,13:n,14:s},{6:h,7:o,10:17,11:l},t(c,[2,18],{14:[1,21]}),t(c,[2,16]),t(c,[2,17]),{6:h,7:o,10:22,11:l},{1:[2,7],6:e,12:15,13:n,14:s},t(u,[2,14],{7:d,11:y}),t(p,[2,8]),t(p,[2,9]),t(p,[2,10]),t(c,[2,15]),t(u,[2,13],{7:d,11:y}),t(p,[2,11]),t(p,[2,12])],defaultActions:{2:[2,1],6:[2,2]},parseError:(0,r.K2)(function(t,i){if(!i.recoverable){var e=new Error(t);throw e.hash=i,e}this.trace(t)},"parseError"),parse:(0,r.K2)(function(t){var i=this,e=[0],n=[],s=[null],a=[],h=this.table,o="",l=0,c=0,u=0,d=a.slice.call(arguments,1),y=Object.create(this.lexer),p={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(p.yy[g]=this.yy[g]);y.setInput(t,p.yy),p.yy.lexer=y,p.yy.parser=this,void 0===y.yylloc&&(y.yylloc={});var f=y.yylloc;a.push(f);var k=y.options&&y.options.ranges;function m(){var t;return"number"!=typeof(t=n.pop()||y.lex()||1)&&(t instanceof Array&&(t=(n=t).pop()),t=i.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,r.K2)(function(t){e.length=e.length-2*t,s.length=s.length-t,a.length=a.length-t},"popStack"),(0,r.K2)(m,"lex");for(var w,x,b,_,v,S,K,$,I,E={};;){if(b=e[e.length-1],this.defaultActions[b]?_=this.defaultActions[b]:(null==w&&(w=m()),_=h[b]&&h[b][w]),void 0===_||!_.length||!_[0]){var A="";for(S in I=[],h[b])this.terminals_[S]&&S>2&&I.push("'"+this.terminals_[S]+"'");A=y.showPosition?"Parse error on line "+(l+1)+":\n"+y.showPosition()+"\nExpecting "+I.join(", ")+", got '"+(this.terminals_[w]||w)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==w?"end of input":"'"+(this.terminals_[w]||w)+"'"),this.parseError(A,{text:y.match,token:this.terminals_[w]||w,line:y.yylineno,loc:f,expected:I})}if(_[0]instanceof Array&&_.length>1)throw new Error("Parse Error: multiple actions possible at state: "+b+", token: "+w);switch(_[0]){case 1:e.push(w),s.push(y.yytext),a.push(y.yylloc),e.push(_[1]),w=null,x?(w=x,x=null):(c=y.yyleng,o=y.yytext,l=y.yylineno,f=y.yylloc,u>0&&u--);break;case 2:if(K=this.productions_[_[1]][1],E.$=s[s.length-K],E._$={first_line:a[a.length-(K||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(K||1)].first_column,last_column:a[a.length-1].last_column},k&&(E._$.range=[a[a.length-(K||1)].range[0],a[a.length-1].range[1]]),void 0!==(v=this.performAction.apply(E,[o,c,l,p.yy,_[1],s,a].concat(d))))return v;K&&(e=e.slice(0,-1*K*2),s=s.slice(0,-1*K),a=a.slice(0,-1*K)),e.push(this.productions_[_[1]][0]),s.push(E.$),a.push(E._$),$=h[e[e.length-2]][e[e.length-1]],e.push($);break;case 3:return!0}}return!0},"parse")},f=function(){return{EOF:1,parseError:(0,r.K2)(function(t,i){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,i)},"parseError"),setInput:(0,r.K2)(function(t,i){return this.yy=i||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,r.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,r.K2)(function(t){var i=t.length,e=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-i),this.offset-=i;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),e.length-1&&(this.yylineno-=e.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:e?(e.length===n.length?this.yylloc.first_column:0)+n[n.length-e.length].length-e[0].length:this.yylloc.first_column-i},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-i]),this.yyleng=this.yytext.length,this},"unput"),more:(0,r.K2)(function(){return this._more=!0,this},"more"),reject:(0,r.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,r.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,r.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,r.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,r.K2)(function(){var t=this.pastInput(),i=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+i+"^"},"showPosition"),test_match:(0,r.K2)(function(t,i){var e,n,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(n=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,i,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e)return e;if(this._backtrack){for(var a in s)this[a]=s[a];return!1}return!1},"test_match"),next:(0,r.K2)(function(){if(this.done)return this.EOF;var t,i,e,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),a=0;a<s.length;a++)if((e=this._input.match(this.rules[s[a]]))&&(!i||e[0].length>i[0].length)){if(i=e,n=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(e,s[a])))return t;if(this._backtrack){i=!1;continue}return!1}if(!this.options.flex)break}return i?!1!==(t=this.test_match(i,s[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,r.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,r.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,r.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,r.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,r.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,r.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,r.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,r.K2)(function(t,i,e,n){switch(e){case 0:case 3:return 6;case 1:case 2:return 8;case 4:return 7;case 5:return 13;case 6:return 14;case 7:return 11}},"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:ishikawa-beta\b)/i,/^(?:ishikawa\b)/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:[^\n]+)/i,/^(?:$)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7],inclusive:!0}}}}();function k(){this.yy={}}return g.lexer=f,(0,r.K2)(k,"Parser"),k.prototype=g,g.Parser=k,new k}();o.parser=o;var l=o,c=class{constructor(){this.stack=[],this.clear=this.clear.bind(this),this.addNode=this.addNode.bind(this),this.getRoot=this.getRoot.bind(this)}static{(0,r.K2)(this,"IshikawaDB")}clear(){this.root=void 0,this.stack=[],this.baseLevel=void 0,(0,a.IU)()}getRoot(){return this.root}addNode(t,i){const e=a.Y2.sanitizeText(i,(0,a.D7)());if(!this.root)return this.root={text:e,children:[]},this.stack=[{level:0,node:this.root}],void(0,a.ke)(e);this.baseLevel??=t;let n=t-this.baseLevel+1;for(n<=0&&(n=1);this.stack.length>1&&this.stack[this.stack.length-1].level>=n;)this.stack.pop();const s={text:e,children:[]};this.stack[this.stack.length-1].node.children.push(s),this.stack.push({level:n,node:s})}getAccTitle(){return(0,a.iN)()}setAccTitle(t){(0,a.SV)(t)}getAccDescription(){return(0,a.m7)()}setAccDescription(t){(0,a.EI)(t)}getDiagramTitle(){return(0,a.ab)()}setDiagramTitle(t){(0,a.ke)(t)}},u=250,d=82*Math.PI/180,y=Math.cos(d),p=Math.sin(d),g=(0,r.K2)((t,i,e)=>{const n=t.node().getBBox(),s=n.width+2*i,r=n.height+2*i;(0,a.a$)(t,r,s,e),t.attr("viewBox",`${n.x-i} ${n.y-i} ${s} ${r}`)},"applyPaddedViewBox"),f=(0,r.K2)((t,i,e,r)=>{const o=r.db.getRoot();if(!o)return;const l=(0,a.D7)(),{look:c,handDrawnSeed:d,themeVariables:y}=l,p=(0,s.I5)(l.fontSize)[0]??14,f="handDrawn"===c,w=o.children??[],x=l.ishikawa?.diagramPadding??20,b=l.ishikawa?.useMaxWidth??!1,v=(0,n.D)(i),S=v.append("g").attr("class","ishikawa"),K=f?h.A.svg(v.node()):void 0,$=K?{roughSvg:K,seed:d??0,lineColor:y?.lineColor??"#333",fillColor:y?.mainBkg??"#fff"}:void 0,E=`ishikawa-arrow-${i}`;f||S.append("defs").append("marker").attr("id",E).attr("viewBox","0 0 10 10").attr("refX",0).attr("refY",5).attr("markerWidth",6).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 Z").attr("class","ishikawa-arrow");let A=0,C=u;const L=f?void 0:I(S,A,C,A,C,"ishikawa-spine");if(m(S,A,C,o.text,p,$),!w.length)return f&&I(S,A,C,A,C,"ishikawa-spine",$),void g(v,x,b);A-=20;const M=w.filter((t,i)=>i%2==0),P=w.filter((t,i)=>i%2==1),T=k(M),B=k(P),D=T.total+B.total;let N=u,O=u;if(D>0){const t=500,i=75;N=Math.max(i,t*(T.total/D)),O=Math.max(i,t*(B.total/D))}const W=2*p;N=Math.max(N,T.max*W),O=Math.max(O,B.max*W),C=Math.max(N,u),L&&L.attr("y1",C).attr("y2",C),S.select(".ishikawa-head-group").attr("transform",`translate(0,${C})`);const j=Math.ceil(w.length/2);for(let n=0;n<j;n++){const t=S.append("g").attr("class","ishikawa-pair");for(const[i,e,s]of[[w[2*n],-1,N],[w[2*n+1],1,O]])i&&_(t,i,A,C,e,s,p,$);A=t.selectAll("text").nodes().reduce((t,i)=>Math.min(t,i.getBBox().x),1/0)}if(f)I(S,A,C,0,C,"ishikawa-spine",$);else{L.attr("x1",A);const t=`url(#${E})`;S.selectAll("line.ishikawa-branch, line.ishikawa-sub-branch").attr("marker-start",t)}g(v,x,b)},"draw"),k=(0,r.K2)(t=>{const i=(0,r.K2)(t=>t.children.reduce((t,e)=>t+1+i(e),0),"countDescendants");return t.reduce((t,e)=>{const n=i(e);return t.total+=n,t.max=Math.max(t.max,n),t},{total:0,max:0})},"sideStats"),m=(0,r.K2)((t,i,e,n,s,a)=>{const r=Math.max(6,Math.floor(110/(.6*s))),h=t.append("g").attr("class","ishikawa-head-group").attr("transform",`translate(${i},${e})`),o=K(h,S(n,r),0,0,"ishikawa-head-label","start",s),l=o.node().getBBox(),c=Math.max(60,l.width+6),u=Math.max(40,2*l.height+40),d=`M 0 ${-u/2} L 0 ${u/2} Q ${2.4*c} 0 0 ${-u/2} Z`;if(a){const t=a.roughSvg.path(d,{roughness:1.5,seed:a.seed,fill:a.fillColor,fillStyle:"hachure",fillWeight:2.5,hachureGap:5,stroke:a.lineColor,strokeWidth:2});h.insert(()=>t,":first-child").attr("class","ishikawa-head")}else h.insert("path",":first-child").attr("class","ishikawa-head").attr("d",d);o.attr("transform",`translate(${(c-l.width)/2-l.x+3},${-l.y-l.height/2})`)},"drawHead"),w=(0,r.K2)((t,i)=>{const e=[],n=[],s=(0,r.K2)((t,a,r)=>{const h=-1===i?[...t].reverse():t;for(const i of h){const t=e.length,h=i.children??[];e.push({depth:r,text:S(i.text,15),parentIndex:a,childCount:h.length}),r%2==0?(n.push(t),h.length&&s(h,t,r+1)):(h.length&&s(h,t,r+1),n.push(t))}},"walk");return s(t,-1,2),{entries:e,yOrder:n}},"flattenTree"),x=(0,r.K2)((t,i,e,n,s,a,r)=>{const h=t.append("g").attr("class","ishikawa-label-group"),o=K(h,i,e,n+11*s,"ishikawa-label cause","middle",a).node().getBBox();if(r){const t=r.roughSvg.rectangle(o.x-20,o.y-2,o.width+40,o.height+4,{roughness:1.5,seed:r.seed,fill:r.fillColor,fillStyle:"hachure",fillWeight:2.5,hachureGap:5,stroke:r.lineColor,strokeWidth:2});h.insert(()=>t,":first-child").attr("class","ishikawa-label-box")}else h.insert("rect",":first-child").attr("class","ishikawa-label-box").attr("x",o.x-20).attr("y",o.y-2).attr("width",o.width+40).attr("height",o.height+4)},"drawCauseLabel"),b=(0,r.K2)((t,i,e,n,s,a)=>{const r=Math.sqrt(n*n+s*s);if(0===r)return;const h=n/r,o=s/r,l=6*-o,c=6*h,u=`M ${i} ${e} L ${i-6*h*2+l} ${e-6*o*2+c} L ${i-6*h*2-l} ${e-6*o*2-c} Z`,d=a.roughSvg.path(u,{roughness:1,seed:a.seed,fill:a.lineColor,fillStyle:"solid",stroke:a.lineColor,strokeWidth:1});t.append(()=>d)},"drawArrowMarker"),_=(0,r.K2)((t,i,e,n,s,a,r,h)=>{const o=i.children??[],l=a*(o.length?1:.2),c=p*l*s,u=e+-y*l,d=n+c;if(I(t,e,n,u,d,"ishikawa-branch",h),h&&b(t,e,n,e-u,n-d,h),x(t,i.text,u,d,s,r,h),!o.length)return;const{entries:g,yOrder:f}=w(o,s),k=g.length,m=new Array(k);for(const[y,p]of f.entries())m[p]=n+c*((y+1)/(k+1));const _=new Map;_.set(-1,{x0:e,y0:n,x1:u,y1:d,childCount:o.length,childrenDrawn:0});const v=-y,S=p*s,E=s<0?"ishikawa-label up":"ishikawa-label down";for(const[y,p]of g.entries()){const i=m[y],e=_.get(p.parentIndex),n=t.append("g").attr("class","ishikawa-sub-group");let s=0,a=0,o=0;if(p.depth%2==0){const t=e.y1-e.y0;s=$(e.x0,e.x1,t?(i-e.y0)/t:.5),a=i,o=s-(p.childCount>0?60+5*p.childCount:30),I(n,s,i,o,i,"ishikawa-sub-branch",h),h&&b(n,s,i,1,0,h),K(n,p.text,o,i,"ishikawa-label align","end",r)}else{const t=e.childrenDrawn++;s=$(e.x0,e.x1,(e.childCount-t)/(e.childCount+1)),a=e.y0,o=s+v*((i-a)/S),I(n,s,a,o,i,"ishikawa-sub-branch",h),h&&b(n,s,a,s-o,a-i,h),K(n,p.text,o,i,E,"end",r)}p.childCount>0&&_.set(y,{x0:s,y0:a,x1:o,y1:i,childCount:p.childCount,childrenDrawn:0})}},"drawBranch"),v=(0,r.K2)(t=>t.split(/<br\s*\/?>|\n/),"splitLines"),S=(0,r.K2)((t,i)=>{if(t.length<=i)return t;const e=[];for(const n of t.split(/\s+/)){const t=e.length-1;t>=0&&e[t].length+1+n.length<=i?e[t]+=" "+n:e.push(n)}return e.join("\n")},"wrapText"),K=(0,r.K2)((t,i,e,n,s,a,r)=>{const h=v(i),o=1.05*r,l=t.append("text").attr("class",s).attr("text-anchor",a).attr("x",e).attr("y",n-(h.length-1)*o/2);for(const[c,u]of h.entries())l.append("tspan").attr("x",e).attr("dy",0===c?0:o).text(u);return l},"drawMultilineText"),$=(0,r.K2)((t,i,e)=>t+(i-t)*e,"lerp"),I=(0,r.K2)((t,i,e,n,s,a,r)=>{if(r){const h=r.roughSvg.line(i,e,n,s,{roughness:1.5,seed:r.seed,stroke:r.lineColor,strokeWidth:2});return void t.append(()=>h).attr("class",a)}return t.append("line").attr("class",a).attr("x1",i).attr("y1",e).attr("x2",n).attr("y2",s)},"drawLine"),E={draw:f},A=(0,r.K2)(t=>`\n.ishikawa .ishikawa-spine,\n.ishikawa .ishikawa-branch,\n.ishikawa .ishikawa-sub-branch {\n stroke: ${t.lineColor};\n stroke-width: 2;\n fill: none;\n}\n\n.ishikawa .ishikawa-sub-branch {\n stroke-width: 1;\n}\n\n.ishikawa .ishikawa-arrow {\n fill: ${t.lineColor};\n}\n\n.ishikawa .ishikawa-head {\n fill: ${t.mainBkg};\n stroke: ${t.lineColor};\n stroke-width: 2;\n}\n\n.ishikawa .ishikawa-label-box {\n fill: ${t.mainBkg};\n stroke: ${t.lineColor};\n stroke-width: 2;\n}\n\n.ishikawa text {\n font-family: ${t.fontFamily};\n font-size: ${t.fontSize};\n fill: ${t.textColor};\n}\n\n.ishikawa .ishikawa-head-label {\n font-weight: 600;\n text-anchor: middle;\n dominant-baseline: middle;\n font-size: 14px;\n}\n\n.ishikawa .ishikawa-label {\n text-anchor: end;\n}\n\n.ishikawa .ishikawa-label.cause {\n text-anchor: middle;\n dominant-baseline: middle;\n}\n\n.ishikawa .ishikawa-label.align {\n text-anchor: end;\n dominant-baseline: middle;\n}\n\n.ishikawa .ishikawa-label.up {\n dominant-baseline: baseline;\n}\n\n.ishikawa .ishikawa-label.down {\n dominant-baseline: hanging;\n}\n`,"getStyles"),C={parser:l,get db(){return new c},renderer:E,styles:A}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/3b3e214a.b3e3211e.js b/docs/build/assets/js/3b3e214a.b3e3211e.js deleted file mode 100644 index c29136a8f..000000000 --- a/docs/build/assets/js/3b3e214a.b3e3211e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[9366],{7961(e,n,s){s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>d,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"DESIGN-REFERENCES","title":"Doriath \u2014 Design References & Dashboard Wireframes","description":"1. Design Inspiration Sources","source":"@site/DESIGN-REFERENCES.md","sourceDirName":".","slug":"/DESIGN-REFERENCES","permalink":"/docs/DESIGN-REFERENCES","draft":false,"unlisted":false,"editUrl":"https://github.com/ConductionNL/doriath/tree/development/docs/DESIGN-REFERENCES.md","tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Doriath \u2014 Architecture & Data Model","permalink":"/docs/ARCHITECTURE"},"next":{"title":"Doriath \u2014 Feature Analysis & Product Strategy","permalink":"/docs/FEATURES"}}');var i=s(4848),t=s(8453);const d={},a="Doriath \u2014 Design References & Dashboard Wireframes",l={},c=[{value:"1. Design Inspiration Sources",id:"1-design-inspiration-sources",level:2},{value:"Lock Screen / Master Password Entry",id:"lock-screen--master-password-entry",level:3},{value:"Vault / Secret List",id:"vault--secret-list",level:3},{value:"Secret Detail View",id:"secret-detail-view",level:3},{value:"Sharing UI",id:"sharing-ui",level:3},{value:"Admin Settings / CA Management",id:"admin-settings--ca-management",level:3},{value:"Dashboard",id:"dashboard",level:3},{value:"2. Missing Features Identified from Design Patterns",id:"2-missing-features-identified-from-design-patterns",level:2},{value:"MVP Additions",id:"mvp-additions",level:3},{value:"V1 Additions",id:"v1-additions",level:3},{value:"Enterprise Additions",id:"enterprise-additions",level:3},{value:"3. Dashboard Wireframes",id:"3-dashboard-wireframes",level:2},{value:"3.1 Lock Screen",id:"31-lock-screen",level:3},{value:"3.2 Main Dashboard (Landing Page)",id:"32-main-dashboard-landing-page",level:3},{value:"3.3 Vault / Secret List View",id:"33-vault--secret-list-view",level:3},{value:"3.4 Secret Detail View",id:"34-secret-detail-view",level:3},{value:"3.5 Key Generator Modal",id:"35-key-generator-modal",level:3},{value:"3.6 Share Dialog",id:"36-share-dialog",level:3},{value:"3.7 Link Share Access Page (Public)",id:"37-link-share-access-page-public",level:3},{value:"3.8 Secret Request Fill-in Page (Public)",id:"38-secret-request-fill-in-page-public",level:3},{value:"3.9 Application Management (Admin View)",id:"39-application-management-admin-view",level:3},{value:"3.10 Admin Settings",id:"310-admin-settings",level:3},{value:"3.11 User Settings Dialog (NcAppSettingsDialog)",id:"311-user-settings-dialog-ncappsettingsdialog",level:3},{value:"3.12 Master Password Change",id:"312-master-password-change",level:3}];function o(e){const n={code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"doriath--design-references--dashboard-wireframes",children:"Doriath \u2014 Design References & Dashboard Wireframes"})}),"\n",(0,i.jsx)(n.h2,{id:"1-design-inspiration-sources",children:"1. Design Inspiration Sources"}),"\n",(0,i.jsx)(n.h3,{id:"lock-screen--master-password-entry",children:"Lock Screen / Master Password Entry"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Source"}),(0,i.jsx)(n.th,{children:"URL / Search"}),(0,i.jsx)(n.th,{children:"Key Patterns"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Bitwarden Web Vault"}),(0,i.jsx)(n.td,{children:"vault.bitwarden.com"}),(0,i.jsx)(n.td,{children:"Full-page lock with logo, single password field, strength indicator on setup"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"1Password Lock Screen"}),(0,i.jsx)(n.td,{children:"1password.com"}),(0,i.jsx)(n.td,{children:"Centered card, vault icon, password field with show/hide toggle"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"KeePassXC"}),(0,i.jsx)(n.td,{children:"keepassxc.org"}),(0,i.jsx)(n.td,{children:"Database unlock with key file option, password field, minimalist design"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:'Dribbble "vault lock screen"'}),(0,i.jsx)(n.td,{children:"Search Dribbble"}),(0,i.jsx)(n.td,{children:"Shield/lock icon, gradient backgrounds, centered form card"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"LastPass Vault"}),(0,i.jsx)(n.td,{children:"lastpass.com"}),(0,i.jsx)(n.td,{children:"Simple centered password entry with timeout message"})]})]})]}),"\n",(0,i.jsx)(n.h3,{id:"vault--secret-list",children:"Vault / Secret List"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Source"}),(0,i.jsx)(n.th,{children:"URL / Search"}),(0,i.jsx)(n.th,{children:"Key Patterns"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Bitwarden Web Vault"}),(0,i.jsx)(n.td,{children:"vault.bitwarden.com"}),(0,i.jsx)(n.td,{children:"Folder tree sidebar + secret list, type icons (login, card, note, identity), search bar at top"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"1Password"}),(0,i.jsx)(n.td,{children:"1password.com"}),(0,i.jsx)(n.td,{children:"Category sidebar, search-first navigation, item cards with favicons"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Passbolt"}),(0,i.jsx)(n.td,{children:"passbolt.com"}),(0,i.jsx)(n.td,{children:"Team-oriented list with sharing indicators, folder tree, filter bar"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"KeePassXC"}),(0,i.jsx)(n.td,{children:"keepassxc.org"}),(0,i.jsx)(n.td,{children:"Tree view (groups) + table view (entries), column-based with type icons"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Nextcloud Passwords"}),(0,i.jsx)(n.td,{children:"apps.nextcloud.com/apps/passwords"}),(0,i.jsx)(n.td,{children:"Folder navigation, tag filters, list view with copy-to-clipboard actions"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:'Dribbble "password manager UI"'}),(0,i.jsx)(n.td,{children:"Search Dribbble"}),(0,i.jsx)(n.td,{children:"Card-based layouts, favicon next to entries, copy buttons, strength indicators"})]})]})]}),"\n",(0,i.jsx)(n.h3,{id:"secret-detail-view",children:"Secret Detail View"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Source"}),(0,i.jsx)(n.th,{children:"URL / Search"}),(0,i.jsx)(n.th,{children:"Key Patterns"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Bitwarden Item View"}),(0,i.jsx)(n.td,{children:"vault.bitwarden.com"}),(0,i.jsx)(n.td,{children:"Field-by-field layout with copy buttons, password hidden by default, custom fields section"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"1Password Item Detail"}),(0,i.jsx)(n.td,{children:"1password.com"}),(0,i.jsx)(n.td,{children:"Card-based sections (credentials, website, notes), sidebar for metadata"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Passbolt Resource View"}),(0,i.jsx)(n.td,{children:"passbolt.com"}),(0,i.jsx)(n.td,{children:"Side panel detail with sharing tab, copy password button"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:'Dribbble "credential detail"'}),(0,i.jsx)(n.td,{children:"Search Dribbble"}),(0,i.jsx)(n.td,{children:"Clean field presentation with icons, show/hide toggles, copy actions"})]})]})]}),"\n",(0,i.jsx)(n.h3,{id:"sharing-ui",children:"Sharing UI"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Source"}),(0,i.jsx)(n.th,{children:"URL / Search"}),(0,i.jsx)(n.th,{children:"Key Patterns"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Bitwarden Organizations"}),(0,i.jsx)(n.td,{children:"vault.bitwarden.com"}),(0,i.jsx)(n.td,{children:"Collection-based sharing, member management"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Passbolt Sharing"}),(0,i.jsx)(n.td,{children:"passbolt.com"}),(0,i.jsx)(n.td,{children:"User/group picker, permission levels, share dialog"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"1Password Vault Sharing"}),(0,i.jsx)(n.td,{children:"1password.com"}),(0,i.jsx)(n.td,{children:"Vault membership, per-item sharing"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Nextcloud Files Sharing"}),(0,i.jsx)(n.td,{children:"Nextcloud"}),(0,i.jsx)(n.td,{children:"User/group autocomplete, link sharing with options, share sidebar tab"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:'Dribbble "share dialog"'}),(0,i.jsx)(n.td,{children:"Search Dribbble"}),(0,i.jsx)(n.td,{children:"User search autocomplete, sharing chips, permission dropdowns"})]})]})]}),"\n",(0,i.jsx)(n.h3,{id:"admin-settings--ca-management",children:"Admin Settings / CA Management"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Source"}),(0,i.jsx)(n.th,{children:"URL / Search"}),(0,i.jsx)(n.th,{children:"Key Patterns"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"HashiCorp Vault UI"}),(0,i.jsx)(n.td,{children:"vaultproject.io"}),(0,i.jsx)(n.td,{children:"PKI engine: CA chain visualization, certificate list, issue/revoke actions"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Nextcloud Admin Settings"}),(0,i.jsx)(n.td,{children:"Nextcloud"}),(0,i.jsx)(n.td,{children:"Section-based settings page, toggle switches, info cards"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"AWS Certificate Manager"}),(0,i.jsx)(n.td,{children:"AWS Console"}),(0,i.jsx)(n.td,{children:"Certificate status badges (issued, expired, revoked), chain visualization"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Let's Encrypt Dashboard"}),(0,i.jsx)(n.td,{children:"certbot.eff.org"}),(0,i.jsx)(n.td,{children:"Certificate status, expiry countdown, renewal actions"})]})]})]}),"\n",(0,i.jsx)(n.h3,{id:"dashboard",children:"Dashboard"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Source"}),(0,i.jsx)(n.th,{children:"URL / Search"}),(0,i.jsx)(n.th,{children:"Key Patterns"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Bitwarden Reports"}),(0,i.jsx)(n.td,{children:"vault.bitwarden.com"}),(0,i.jsx)(n.td,{children:"Password health: reused, weak, exposed counts with action items"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"1Password Watchtower"}),(0,i.jsx)(n.td,{children:"1password.com"}),(0,i.jsx)(n.td,{children:"Security score, vulnerable items count, breach alerts"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:'Dribbble "security dashboard"'}),(0,i.jsx)(n.td,{children:"Search Dribbble"}),(0,i.jsx)(n.td,{children:"Shield-based KPI cards, health scores, alert lists"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Nextcloud Dashboard"}),(0,i.jsx)(n.td,{children:"Nextcloud"}),(0,i.jsx)(n.td,{children:"Widget-based dashboard, card layout, status panels"})]})]})]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h2,{id:"2-missing-features-identified-from-design-patterns",children:"2. Missing Features Identified from Design Patterns"}),"\n",(0,i.jsx)(n.h3,{id:"mvp-additions",children:"MVP Additions"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Feature"}),(0,i.jsx)(n.th,{children:"Source Pattern"}),(0,i.jsx)(n.th,{children:"Justification"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Copy-to-clipboard on secret list items"}),(0,i.jsx)(n.td,{children:"Bitwarden, 1Password, Passwords app"}),(0,i.jsx)(n.td,{children:"Most-used action \u2014 copy password without opening detail view"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Show/hide toggle on password fields"}),(0,i.jsx)(n.td,{children:"All vault UIs"}),(0,i.jsx)(n.td,{children:"Standard pattern \u2014 passwords hidden by default with eye icon"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Favicon/icon next to secrets by URL"}),(0,i.jsx)(n.td,{children:"1Password, Bitwarden"}),(0,i.jsx)(n.td,{children:"Visual identification of which service a secret belongs to"})]})]})]}),"\n",(0,i.jsx)(n.h3,{id:"v1-additions",children:"V1 Additions"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Feature"}),(0,i.jsx)(n.th,{children:"Source Pattern"}),(0,i.jsx)(n.th,{children:"Justification"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Password health scoring per secret"}),(0,i.jsx)(n.td,{children:"Bitwarden Reports, 1Password Watchtower"}),(0,i.jsx)(n.td,{children:"Flag weak, reused, or old passwords"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Secret strength indicator in list view"}),(0,i.jsx)(n.td,{children:"Passbolt, Bitwarden"}),(0,i.jsx)(n.td,{children:"Color-coded strength badge next to each secret"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Vault search with keyboard shortcut (Ctrl+K)"}),(0,i.jsx)(n.td,{children:"1Password, many modern apps"}),(0,i.jsx)(n.td,{children:"Power-user quick access"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Dark mode support"}),(0,i.jsx)(n.td,{children:"All modern UIs"}),(0,i.jsx)(n.td,{children:"User preference; Nextcloud supports dark mode"})]})]})]}),"\n",(0,i.jsx)(n.h3,{id:"enterprise-additions",children:"Enterprise Additions"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Feature"}),(0,i.jsx)(n.th,{children:"Source Pattern"}),(0,i.jsx)(n.th,{children:"Justification"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Breach detection (HaveIBeenPwned)"}),(0,i.jsx)(n.td,{children:"1Password Watchtower, Bitwarden Reports"}),(0,i.jsx)(n.td,{children:"Proactive security alerts for compromised URLs"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Password age indicator"}),(0,i.jsx)(n.td,{children:"1Password, Bitwarden"}),(0,i.jsx)(n.td,{children:"Show how old each secret is; flag stale credentials"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Export to PDF (single secret)"}),(0,i.jsx)(n.td,{children:"KeePassXC"}),(0,i.jsx)(n.td,{children:"Print-friendly credential sheet for offline backup"})]})]})]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h2,{id:"3-dashboard-wireframes",children:"3. Dashboard Wireframes"}),"\n",(0,i.jsx)(n.h3,{id:"31-lock-screen",children:"3.1 Lock Screen"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 \u2502\n\u2502 \u2502\n\u2502 \u2502\n\u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 \ud83d\udd12 \u2502 \u2502\n\u2502 \u2502 DORIATH \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502\n\u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Enter your master \u2502 \u2502\n\u2502 \u2502 password to unlock \u2502 \u2502\n\u2502 \u2502 your vault \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 \u2502\n\u2502 \u2502 \u2502 \u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022 \ud83d\udc41 \u2502 \u2502 \u2502\n\u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Session timeout: \u2502 \u2502\n\u2502 \u2502 [Nextcloud session \u25be] \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 [ Unlock ] \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502\n\u2502 \u2502\n\u2502 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"First-time setup variant"})," \u2014 shown when user has no EncryptionSuite:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 \ud83d\udd12 \u2502 \u2502\n\u2502 \u2502 DORIATH \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502\n\u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Welcome to Doriath \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Choose a master \u2502 \u2502\n\u2502 \u2502 password for your vault \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 \u2502\n\u2502 \u2502 \u2502 \ud83d\udc41 \u2502 \u2502 \u2502\n\u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 \u2502\n\u2502 \u2502 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591 Strong \u2502 \u2502\n\u2502 \u2502 "Add a number or symbol \u2502 \u2502\n\u2502 \u2502 to make it stronger" \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Confirm: \u2502 \u2502\n\u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 \u2502\n\u2502 \u2502 \u2502 \ud83d\udc41 \u2502 \u2502 \u2502\n\u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \u26a0 If you forget your \u2502 \u2502\n\u2502 \u2502 master password, your \u2502 \u2502\n\u2502 \u2502 secrets cannot be \u2502 \u2502\n\u2502 \u2502 recovered. \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 [ Create Vault ] \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n'})}),"\n",(0,i.jsx)(n.h3,{id:"32-main-dashboard-landing-page",children:"3.2 Main Dashboard (Landing Page)"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 DORIATH [Search...] [\u2699] \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Dashboard\u2502 Vault \u2502 Apps \u2502 Shared \u2502 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 \u2502\n\u2502 \u26a0 Key migration in progress \u2014 12 secrets remaining [Resume \u2192] \u2502\n\u2502 \u2502\n\u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 SECRETS \u2502 \u2502 SHARED \u2502 \u2502 FOLDERS \u2502 \u2502 \u26a0 ATTENTION \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502 WITH ME \u2502 \u2502 \u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 47 \u2502 \u2502 8 \u2502 \u2502 5 \u2502 \u2502 2 \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502 \u2502 \u2502 \u2502 \u2502 compromised \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502\n\u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 Recently Accessed \u2502 \u2502 Sharing Activity \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \ud83d\udd11 GitHub API Token \u2502 \u2502 \u2022 Maria shared "DB pwd" \u2502 \u2502\n\u2502 \u2502 api_key \xb7 2 min ago \u2502 \u2502 with you \u2014 1 hour ago \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \ud83d\udd11 Production Database \u2502 \u2502 \u2022 You shared "SSH Key" \u2502 \u2502\n\u2502 \u2502 database \xb7 15 min ago \u2502 \u2502 with Jan \u2014 yesterday \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \ud83d\udd11 AWS Console \u2502 \u2502 \u2022 Request for "Vendor \u2502 \u2502\n\u2502 \u2502 login \xb7 1 hour ago \u2502 \u2502 API Key" fulfilled \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502 \u2014 2 days ago \u2502 \u2502\n\u2502 \u2502 \ud83d\udd11 VPN Credentials \u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 login \xb7 3 hours ago \u2502 \u2502 [View all \u2192] \u2502 \u2502\n\u2502 \u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502 \ud83d\udd11 Email Server \u2502 \u2502\n\u2502 \u2502 login \xb7 yesterday \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 [View all secrets \u2192] \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502\n\u2502 \u250c\u2500\u2500\u2500\u2500 Admin Only \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 \u2502\n\u2502 \u2502 \u2502 PENDING APPS \u2502 \u2502 CA HEALTH \u2502 \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502 \u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \u2502 3 pending \u2502 \u2502 \u25cf Healthy \u2502 \u2502 \u2502\n\u2502 \u2502 \u2502 [Review \u2192] \u2502 \u2502 Root: expires 2046-03-23 \u2502 \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502 \u2502 Intermediate: 2029-03-23 \u2502 \u2502 \u2502\n\u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 Suites signed: 24 \u2502 \u2502 \u2502\n\u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n'})}),"\n",(0,i.jsx)(n.h3,{id:"33-vault--secret-list-view",children:"3.3 Vault / Secret List View"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 DORIATH > Vault [\ud83d\udd0d Search secrets...] [\u2699]\u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Dashboard\u2502 Vault \u2502 Apps \u2502 Shared \u2502 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 \u2502\n\u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\u2502\n\u2502 \u2502 FOLDERS \u2502 \u2502 \u2502\u2502\n\u2502 \u2502 \u2502 \u2502 All Secrets (47) [+ New Secret] \u2502\u2502\n\u2502 \u2502 \ud83d\udcc1 All (47) \u2502 \u2502 \u2502\u2502\n\u2502 \u2502 \u2502 \u2502 \u250c\u2500 Filter: [All types \u25be] [All folders \u25be] \u2502\u2502\n\u2502 \u2502 \ud83d\udcc1 Work (12) \u2502 \u2502 \u2502 Sort: [Name \u25be] \u2502\u2502\n\u2502 \u2502 \u2514 \ud83d\udcc1 APIs (5) \u2502 \u2502 \u2502\u2502\n\u2502 \u2502 \u2514 \ud83d\udcc1 DBs (3) \u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\u2502\u2502\n\u2502 \u2502 \u2502 \u2502 \u2502Type\u2502 Name \u2502 URL \u2502Actions \u2502\u2502 \u2502\n\u2502 \u2502 \ud83d\udcc1 Personal(18)\u2502 \u2502 \u251c\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\u2502\u2502\n\u2502 \u2502 \u2514 \ud83d\udcc1 Email(4) \u2502 \u2502 \u2502 \ud83d\udd11 \u2502 AWS Console \u2502aws.com \u2502 \ud83d\udccb \ud83d\udc41 \u2502\u2502\u2502\n\u2502 \u2502 \u2514 \ud83d\udcc1 Social(6)\u2502 \u2502 \u2502 \ud83d\udd11 \u2502 Azure Portal \u2502azure.. \u2502 \ud83d\udccb \ud83d\udc41 \u2502\u2502\u2502\n\u2502 \u2502 \u2502 \u2502 \u2502 \ud83d\udd10 \u2502 GitHub API Token \u2502github..\u2502 \ud83d\udccb \ud83d\udc41 \u2502\u2502\u2502\n\u2502 \u2502 \ud83d\udcc1 Shared (8) \u2502 \u2502 \u2502 \ud83d\udd10 \u2502 GitLab Deploy Key \u2502gitlab..\u2502 \ud83d\udccb \ud83d\udc41 \u2502\u2502\u2502\n\u2502 \u2502 \u2502 \u2502 \u2502 \ud83d\udcdd \u2502 License Keys \u2502 \u2014 \u2502 \ud83d\udccb \ud83d\udc41 \u2502\u2502\u2502\n\u2502 \u2502 \ud83d\udcc1 Apps (9) \u2502 \u2502 \u2502 \ud83d\udd11 \u2502 Office 365 \u2502office..\u2502 \ud83d\udccb \ud83d\udc41 \u2502\u2502\u2502\n\u2502 \u2502 \u2502 \u2502 \u2502 \ud83d\uddc4 \u2502 Prod Database \u2502 \u2014 \u2502 \ud83d\udccb \ud83d\udc41 \u2502\u2502\u2502\n\u2502 \u2502 \u2502 \u2502 \u2502 \ud83d\udd11 \u2502 VPN Credentials \u2502 \u2014 \u2502 \ud83d\udccb \ud83d\udc41 \u2502\u2502\u2502\n\u2502 \u2502 [+ New folder] \u2502 \u2502 \u2502 \ud83d\udd12 \u2502 SSH Server Key \u2502 \u2014 \u2502 \ud83d\udccb \ud83d\udc41 \u2502\u2502\u2502\n\u2502 \u2502 \u2502 \u2502 \u2502 \ud83d\udcc4 \u2502 TLS Certificate \u2502 \u2014 \u2502 \ud83d\udccb \ud83d\udc41 \u2502\u2502\u2502\n\u2502 \u2502 \u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\u2502\u2502\n\u2502 \u2502 \u2502 \u2502 \u2502\u2502\n\u2502 \u2502 \u2502 \u2502 Showing 10 of 47 \xb7 Page 1 of 5 [< 1 2 >] \u2502\u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\u2502\n\u2502 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Type icons:"})}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Icon"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Color"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"\ud83d\udd11"}),(0,i.jsx)(n.td,{children:"login"}),(0,i.jsx)(n.td,{children:"Blue"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"\ud83d\udd10"}),(0,i.jsx)(n.td,{children:"api_key"}),(0,i.jsx)(n.td,{children:"Purple"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"\ud83d\udd12"}),(0,i.jsx)(n.td,{children:"ssh_key"}),(0,i.jsx)(n.td,{children:"Green"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"\ud83d\udcc4"}),(0,i.jsx)(n.td,{children:"certificate"}),(0,i.jsx)(n.td,{children:"Orange"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"\ud83d\udcdd"}),(0,i.jsx)(n.td,{children:"note"}),(0,i.jsx)(n.td,{children:"Gray"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"\ud83d\uddc4"}),(0,i.jsx)(n.td,{children:"database"}),(0,i.jsx)(n.td,{children:"Red"})]})]})]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Actions column:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"\ud83d\udccb = Copy password to clipboard (most-used action, single click)"}),"\n",(0,i.jsx)(n.li,{children:"\ud83d\udc41 = Open detail view"}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"34-secret-detail-view",children:"3.4 Secret Detail View"}),"\n",(0,i.jsxs)(n.p,{children:["Using ",(0,i.jsx)(n.strong,{children:"CnDetailPage + CnObjectSidebar"})," pattern:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 \u2190 Back to vault \ud83d\udd11 AWS Console Login [Edit] [Delete] \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 \u2502 \u2554\u2550\u2550\u2550 Sidebar \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557 \u2502\n\u2502 \u250c\u2500\u2500\u2500 Core Info \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 \u2551 Files | Notes | \u2551 \u2502\n\u2502 \u2502 \u2502 \u2502 \u2551 Tags | Audit \u2551 \u2502\n\u2502 \u2502 Type: \ud83d\udd11 Login \u2502 \u2502 \u2551 Trail \u2551 \u2502\n\u2502 \u2502 URL: console.aws.amazon.com \u2502 \u2502 \u2560\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2563 \u2502\n\u2502 \u2502 Folder: Work / APIs \u2502 \u2502 \u2551 \u2551 \u2502\n\u2502 \u2502 \u2502 \u2502 \u2551 \ud83d\udcdd "Remember to \u2551 \u2502\n\u2502 \u2502 Login: admin@company.nl \u2502 \u2502 \u2551 rotate this key \u2551 \u2502\n\u2502 \u2502 [\ud83d\udccb Copy] \u2502 \u2502 \u2551 quarterly" \u2551 \u2502\n\u2502 \u2502 \u2502 \u2502 \u2551 \u2014 Jan, Mar 15 \u2551 \u2502\n\u2502 \u2502 Password: \u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022 \u2502 \u2502 \u2551 \u2551 \u2502\n\u2502 \u2502 [\ud83d\udc41 Show] [\ud83d\udccb Copy] \u2502 \u2502 \u2551 \ud83d\udcdd "MFA seed is \u2551 \u2502\n\u2502 \u2502 \u2502 \u2502 \u2551 in additional \u2551 \u2502\n\u2502 \u2502 Additional fields: \u2502 \u2502 \u2551 fields" \u2551 \u2502\n\u2502 \u2502 MFA Seed: \u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022 [\ud83d\udccb] \u2502 \u2502 \u2551 \u2014 Maria, Mar 10 \u2551 \u2502\n\u2502 \u2502 Region: eu-west-1 [\ud83d\udccb] \u2502 \u2502 \u2551 \u2551 \u2502\n\u2502 \u2502 \u2502 \u2502 \u2551 [+ Add note] \u2551 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 \u2551 \u2551 \u2502\n\u2502 \u2502 \u255a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255d \u2502\n\u2502 \u250c\u2500\u2500\u2500 Sharing \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Shared with 3 users: \u2502 \u2502 \u2502\n\u2502 \u2502 \ud83d\udc64 Jan de Vries \u2502 \u2502 \u2502\n\u2502 \u2502 \ud83d\udc64 Maria Jansen \u2502 \u2502 \u2502\n\u2502 \u2502 \ud83d\udc64 Pieter Bakker \u2502 \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 [+ Share with user] \u2502 \u2502 \u2502\n\u2502 \u2502 [\ud83d\udd17 Create link share] \u2502 \u2502 \u2502\n\u2502 \u2502 [\ud83d\udce8 Create secret request] \u2502 \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 \u2502\n\u2502 \u2502 \u2502\n\u2502 \u250c\u2500\u2500\u2500 Encryption \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Suite: EncryptionSuite-abc123 \u2502 \u2502 \u2502\n\u2502 \u2502 Status: \u25cf Active \u2502 \u2502 \u2502\n\u2502 \u2502 Created: 2026-02-10 \u2502 \u2502 \u2502\n\u2502 \u2502 Updated: 2026-03-15 \u2502 \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n'})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Component hierarchy:"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'CnDetailPage (title="AWS Console Login", back-route={name:\'Secrets\'})\n\u251c\u2500 #header-actions \u2192 [Edit] [Delete]\n\u251c\u2500 #default \u2192 Card widgets\n\u2502 \u251c\u2500 CnDetailCard (title="Core Info")\n\u2502 \u2502 \u2514\u2500 Type, URL, folder, login (with copy), password (hidden + copy),\n\u2502 \u2502 additional fields (each with copy)\n\u2502 \u251c\u2500 CnDetailCard (title="Sharing")\n\u2502 \u2502 \u2514\u2500 Recipient list (owner only), share/link/request buttons\n\u2502 \u2514\u2500 CnDetailCard (title="Encryption")\n\u2502 \u2514\u2500 Suite ID, status badge, timestamps\n\u2514\u2500 CnObjectSidebar (object-type="doriath_secret", object-id, ...)\n \u251c\u2500 Tab: Files \u2014 attachments (e.g., key files, certificates)\n \u251c\u2500 Tab: Notes \u2014 team notes about this secret\n \u251c\u2500 Tab: Tags \u2014 categorization tags\n \u2514\u2500 Tab: Audit Trail \u2014 who accessed/modified this secret\n'})}),"\n",(0,i.jsx)(n.h3,{id:"35-key-generator-modal",children:"3.5 Key Generator Modal"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Generate Password [\u2715] \u2502\n\u2502 \u2502\n\u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 Xp7!kM2@nQ9$bR4w \u2502 \u2502\n\u2502 \u2502 [\ud83d\udccb] [\ud83d\udd04] \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 Strength: \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 Very Strong \u2502\n\u2502 \u2502\n\u2502 Length: [\u2500\u2500\u2500\u2500\u25cf\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500] 16 \u2502\n\u2502 \u2502\n\u2502 \u2611 Include special characters \u2502\n\u2502 (!@#$%^&*()-_=+[]{}|;:,.<>?/) \u2502\n\u2502 \u2502\n\u2502 Excluded characters: \u2502\n\u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 0Ol1I \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502\n\u2502 \u25b8 Advanced: regex override \u2502\n\u2502 \u2502\n\u2502 [Cancel] [Use This] \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n"})}),"\n",(0,i.jsx)(n.h3,{id:"36-share-dialog",children:"3.6 Share Dialog"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Share "AWS Console Login" [\u2715] \u2502\n\u2502 \u2502\n\u2502 \u250c\u2500\u2500\u2500 Share with User \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \ud83d\udd0d [Search users or groups...] \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Current shares: \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \ud83d\udc64 Jan de Vries [Revoke] \u2502 \u2502\n\u2502 \u2502 \ud83d\udc64 Maria Jansen [Revoke] \u2502 \u2502\n\u2502 \u2502 \ud83d\udc65 Team DevOps (3 users) [Revoke] \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502\n\u2502 \u250c\u2500\u2500\u2500 Link Shares \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Active links: 1 \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \ud83d\udd17 Link #1 \u2014 2/5 uses \u2502 \u2502\n\u2502 \u2502 Created: Mar 10 [Revoke] \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 [+ Create new link share] \u2502 \u2502\n\u2502 \u2502 Usage limit: [5 \u25be] \u2502 \u2502\n\u2502 \u2502 Expires: [Never \u25be] \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502\n\u2502 \u250c\u2500\u2500\u2500 Secret Requests \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \ud83d\udce8 Pending request (expires Apr 5)\u2502 \u2502\n\u2502 \u2502 Fields: username, password \u2502 \u2502\n\u2502 \u2502 [Copy link] [Revoke] \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 [+ Create new request] \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502\n\u2502 [Close] \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n'})}),"\n",(0,i.jsx)(n.h3,{id:"37-link-share-access-page-public",children:"3.7 Link Share Access Page (Public)"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 \u2502\n\u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 \ud83d\udd12 \u2502 \u2502\n\u2502 \u2502 DORIATH \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502\n\u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 A secret has been \u2502 \u2502\n\u2502 \u2502 shared with you \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Enter the password \u2502 \u2502\n\u2502 \u2502 provided by the sender \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 \u2502\n\u2502 \u2502 \u2502 \ud83d\udc41 \u2502 \u2502 \u2502\n\u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 [ Decrypt ] \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"After successful decryption:"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Shared Secret \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Name: AWS Console \u2502 \u2502\n\u2502 \u2502 Login: admin@co.nl \u2502 \u2502\n\u2502 \u2502 [\ud83d\udccb Copy] \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Password: \u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022 \u2502 \u2502\n\u2502 \u2502 [\ud83d\udc41] [\ud83d\udccb Copy] \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 URL: console.aws.com \u2502 \u2502\n\u2502 \u2502 [\ud83d\udccb Copy] \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \u26a0 This link has 3 \u2502 \u2502\n\u2502 \u2502 remaining uses \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n"})}),"\n",(0,i.jsx)(n.h3,{id:"38-secret-request-fill-in-page-public",children:"3.8 Secret Request Fill-in Page (Public)"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 \ud83d\udce8 \u2502 \u2502\n\u2502 \u2502 DORIATH \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502\n\u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Secret Request \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Someone has requested \u2502 \u2502\n\u2502 \u2502 the following fields: \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Username: \u2502 \u2502\n\u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Password: \u2502 \u2502\n\u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 \u2502\n\u2502 \u2502 \u2502 \ud83d\udc41 \u2502 \u2502 \u2502\n\u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \ud83d\udd12 Your submission \u2502 \u2502\n\u2502 \u2502 will be encrypted \u2502 \u2502\n\u2502 \u2502 immediately. The \u2502 \u2502\n\u2502 \u2502 requester cannot see \u2502 \u2502\n\u2502 \u2502 these values without \u2502 \u2502\n\u2502 \u2502 their master password. \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 [ Submit ] \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n"})}),"\n",(0,i.jsx)(n.h3,{id:"39-application-management-admin-view",children:"3.9 Application Management (Admin View)"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 DORIATH > Applications [+ Register App] [\u2699]\u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Dashboard\u2502 Vault \u2502 Apps \u2502 Shared \u2502 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 \u2502\n\u2502 \u250c\u2500\u2500\u2500\u2500 Pending Approval (3) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 \u2502\n\u2502 \u2502 \u2502 \ud83d\udfe1 N8N Workflow Engine external \u2502 \u2502 \u2502\n\u2502 \u2502 \u2502 Registered by: anonymous \xb7 Mar 28 \u2502 \u2502 \u2502\n\u2502 \u2502 \u2502 CSR: uploaded \u2713 \u2502 \u2502 \u2502\n\u2502 \u2502 \u2502 [Approve] [Reject] \u2502 \u2502 \u2502\n\u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 \u2502\n\u2502 \u2502 \u2502 \ud83d\udfe1 Monitoring Agent internal \u2502 \u2502 \u2502\n\u2502 \u2502 \u2502 Registered by: admin \xb7 Mar 27 \u2502 \u2502 \u2502\n\u2502 \u2502 \u2502 CSR: not uploaded \u2014 key pair will be generated \u2502 \u2502 \u2502\n\u2502 \u2502 \u2502 [Approve] [Reject] \u2502 \u2502 \u2502\n\u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502\n\u2502 \u250c\u2500\u2500\u2500\u2500 Active Applications (4) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 \u2502\n\u2502 \u2502 \u2502 \ud83d\udfe2 OpenConnector internal \u2502 \u2502 \u2502\n\u2502 \u2502 \u2502 Approved by: admin \xb7 Mar 15 \xb7 Secrets: 12 \u2502 \u2502 \u2502\n\u2502 \u2502 \u2502 Suite: \u25cf Active [View] [Delete] \u2502 \u2502 \u2502\n\u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 \u2502\n\u2502 \u2502 \u2502 \ud83d\udfe2 CI/CD Pipeline external \u2502 \u2502 \u2502\n\u2502 \u2502 \u2502 Approved by: admin \xb7 Mar 10 \xb7 Secrets: 5 \u2502 \u2502 \u2502\n\u2502 \u2502 \u2502 Suite: \u25cf Active (CSR) [View] [Delete] \u2502 \u2502 \u2502\n\u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n"})}),"\n",(0,i.jsx)(n.h3,{id:"310-admin-settings",children:"3.10 Admin Settings"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Administration > Doriath \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 \u2502\n\u2502 \u250c\u2500\u2500 CnVersionInfoCard \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 Doriath v0.1.0 [Check for \u2502 \u2502\n\u2502 \u2502 Encrypted secrets manager updates] \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502\n\u2502 \u250c\u2500\u2500 CnSettingsSection: Certificate Authority \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Status: \u25cf Healthy \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Root Certificate \u2502 \u2502\n\u2502 \u2502 Created: 2026-03-23 \xb7 Expires: 2046-03-23 \u2502 \u2502\n\u2502 \u2502 Fingerprint: SHA256:AB:CD:EF:12:34:... \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Intermediate Certificate (active) \u2502 \u2502\n\u2502 \u2502 Created: 2026-03-23 \xb7 Expires: 2029-03-23 \u2502 \u2502\n\u2502 \u2502 Suites signed: 24 \u2502 \u2502\n\u2502 \u2502 Auto-renew: \u2611 enabled \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 [Force Renew Intermediate] [View Certificate Chain] \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502\n\u2502 \u250c\u2500\u2500 CnSettingsSection: Master Password Policy \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Minimum length: [\u2500\u2500\u2500\u2500\u25cf\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500] 12 characters \u2502 \u2502\n\u2502 \u2502 (range: 12\u201320) \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Minimum strength: [Score 3 (Strong) \u25be] \u2502 \u2502\n\u2502 \u2502 Score 3 = resists online attacks \u2502 \u2502\n\u2502 \u2502 Score 4 = resists offline attacks \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Default session timeout: [Nextcloud session \u25be] \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502\n\u2502 \u250c\u2500\u2500 CnSettingsSection: Applications \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 3 pending \xb7 4 active \xb7 0 rejected \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 [Manage Applications \u2192] \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Component hierarchy:"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'CnVersionInfoCard (app-name="Doriath", app-version="0.1.0")\nCnSettingsSection (name="Certificate Authority", doc-url="...")\n \u2514\u2500 CA status display, certificate details, action buttons\nCnSettingsSection (name="Master Password Policy")\n \u2514\u2500 Length slider, score dropdown, session timeout dropdown\nCnSettingsSection (name="Applications")\n \u2514\u2500 Application count summary, link to management page\n'})}),"\n",(0,i.jsx)(n.h3,{id:"311-user-settings-dialog-ncappsettingsdialog",children:"3.11 User Settings Dialog (NcAppSettingsDialog)"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Doriath Settings [\u2715] \u2502\n\u2502 \u2502\n\u2502 \u250c\u2500\u2500\u2500 Security \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Session timeout: \u2502 \u2502\n\u2502 \u2502 [30 minutes \u25be] \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Options: \u2502 \u2502\n\u2502 \u2502 \u2022 Nextcloud session duration \u2502 \u2502\n\u2502 \u2502 \u2022 10 minutes \u2502 \u2502\n\u2502 \u2502 \u2022 30 minutes \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502\n\u2502 \u250c\u2500\u2500\u2500 Notifications \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \u2611 Secret shared with me \u2502 \u2502\n\u2502 \u2502 \u2611 Secret request fulfilled \u2502 \u2502\n\u2502 \u2502 \u2611 Group share additions \u2502 \u2502\n\u2502 \u2502 \u2611 Security alerts (compromised \u2502 \u2502\n\u2502 \u2502 secrets, suite revocation) \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502\n\u2502 \u250c\u2500\u2500\u2500 Display \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Default secret type: \u2502 \u2502\n\u2502 \u2502 [Login \u25be] \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Default vault view: \u2502 \u2502\n\u2502 \u2502 [List \u25be] \u2502 \u2502\n\u2502 \u2502 \u2022 List (flat) \u2502 \u2502\n\u2502 \u2502 \u2022 Folders (tree sidebar) \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Must use ",(0,i.jsx)(n.code,{children:"NcAppSettingsDialog"})," (NOT ",(0,i.jsx)(n.code,{children:"NcDialog"}),") with ",(0,i.jsx)(n.code,{children:"NcAppSettingsSection"})," for each group. See ",(0,i.jsx)(n.code,{children:"openspec/specs/nextcloud-app/spec.md"})," for the full pattern."]}),"\n",(0,i.jsx)(n.h3,{id:"312-master-password-change",children:"3.12 Master Password Change"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 DORIATH > Change Master Password \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 \u2502\n\u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Why are you changing your password? \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \u25cb Routine password change \u2502 \u2502\n\u2502 \u2502 Your encryption keys stay the same. \u2502 \u2502\n\u2502 \u2502 Only the wrapping password changes. \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 \u25cb My master password was compromised \u2502 \u2502\n\u2502 \u2502 \u26a0 This will generate new encryption keys \u2502 \u2502\n\u2502 \u2502 and migrate ALL your secrets. During \u2502 \u2502\n\u2502 \u2502 migration, your vault will be read-only. \u2502 \u2502\n\u2502 \u2502 Shared link shares will be revoked. \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502\n\u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Current password: \u2502 \u2502\n\u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 \u2502\n\u2502 \u2502 \u2502 \ud83d\udc41 \u2502 \u2502 \u2502\n\u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 New password: \u2502 \u2502\n\u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 \u2502\n\u2502 \u2502 \u2502 \ud83d\udc41 \u2502 \u2502 \u2502\n\u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 \u2502\n\u2502 \u2502 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591 Very Strong (score 4) \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 Confirm new password: \u2502 \u2502\n\u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 \u2502\n\u2502 \u2502 \u2502 \ud83d\udc41 \u2502 \u2502 \u2502\n\u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2502 [ Change Password ] \u2502 \u2502\n\u2502 \u2502 \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n"})})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(o,{...e})}):o(e)}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/4045.327cc9f2.js b/docs/build/assets/js/4045.327cc9f2.js deleted file mode 100644 index 6ecad82a3..000000000 --- a/docs/build/assets/js/4045.327cc9f2.js +++ /dev/null @@ -1 +0,0 @@ -(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[4045],{7375(t){t.exports=function(){"use strict";return function(t,e){var n=e.prototype,i=n.format;n.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return i.bind(this)(t);var s=this.$utils(),r=(t||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(t){switch(t){case"Q":return Math.ceil((e.$M+1)/3);case"Do":return n.ordinal(e.$D);case"gggg":return e.weekYear();case"GGGG":return e.isoWeekYear();case"wo":return n.ordinal(e.week(),"W");case"w":case"ww":return s.s(e.week(),"w"===t?1:2,"0");case"W":case"WW":return s.s(e.isoWeek(),"W"===t?1:2,"0");case"k":case"kk":return s.s(String(0===e.$H?24:e.$H),"k"===t?1:2,"0");case"X":return Math.floor(e.$d.getTime()/1e3);case"x":return e.$d.getTime();case"z":return"["+e.offsetName()+"]";case"zzz":return"["+e.offsetName("long")+"]";default:return t}});return i.bind(this)(r)}}}()},445(t){t.exports=function(){"use strict";var t={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},e=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\d/,i=/\d\d/,s=/\d\d?/,r=/\d*[^-_:/,()\s\d]+/,a={},o=function(t){return(t=+t)+(t>68?1900:2e3)},c=function(t){return function(e){this[t]=+e}},l=[/[+-]\d\d:?(\d\d)?|Z/,function(t){(this.zone||(this.zone={})).offset=function(t){if(!t)return 0;if("Z"===t)return 0;var e=t.match(/([+-]|\d\d)/g),n=60*e[1]+(+e[2]||0);return 0===n?0:"+"===e[0]?-n:n}(t)}],d=function(t){var e=a[t];return e&&(e.indexOf?e:e.s.concat(e.f))},u=function(t,e){var n,i=a.meridiem;if(i){for(var s=1;s<=24;s+=1)if(t.indexOf(i(s,0,e))>-1){n=s>12;break}}else n=t===(e?"pm":"PM");return n},h={A:[r,function(t){this.afternoon=u(t,!1)}],a:[r,function(t){this.afternoon=u(t,!0)}],Q:[n,function(t){this.month=3*(t-1)+1}],S:[n,function(t){this.milliseconds=100*+t}],SS:[i,function(t){this.milliseconds=10*+t}],SSS:[/\d{3}/,function(t){this.milliseconds=+t}],s:[s,c("seconds")],ss:[s,c("seconds")],m:[s,c("minutes")],mm:[s,c("minutes")],H:[s,c("hours")],h:[s,c("hours")],HH:[s,c("hours")],hh:[s,c("hours")],D:[s,c("day")],DD:[i,c("day")],Do:[r,function(t){var e=a.ordinal,n=t.match(/\d+/);if(this.day=n[0],e)for(var i=1;i<=31;i+=1)e(i).replace(/\[|\]/g,"")===t&&(this.day=i)}],w:[s,c("week")],ww:[i,c("week")],M:[s,c("month")],MM:[i,c("month")],MMM:[r,function(t){var e=d("months"),n=(d("monthsShort")||e.map(function(t){return t.slice(0,3)})).indexOf(t)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[r,function(t){var e=d("months").indexOf(t)+1;if(e<1)throw new Error;this.month=e%12||e}],Y:[/[+-]?\d+/,c("year")],YY:[i,function(t){this.year=o(t)}],YYYY:[/\d{4}/,c("year")],Z:l,ZZ:l};function f(n){var i,s;i=n,s=a&&a.formats;for(var r=(n=i.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(e,n,i){var r=i&&i.toUpperCase();return n||s[i]||t[i]||s[r].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(t,e,n){return e||n.slice(1)})})).match(e),o=r.length,c=0;c<o;c+=1){var l=r[c],d=h[l],u=d&&d[0],f=d&&d[1];r[c]=f?{regex:u,parser:f}:l.replace(/^\[|\]$/g,"")}return function(t){for(var e={},n=0,i=0;n<o;n+=1){var s=r[n];if("string"==typeof s)i+=s.length;else{var a=s.regex,c=s.parser,l=t.slice(i),d=a.exec(l)[0];c.call(e,d),t=t.replace(d,"")}}return function(t){var e=t.afternoon;if(void 0!==e){var n=t.hours;e?n<12&&(t.hours+=12):12===n&&(t.hours=0),delete t.afternoon}}(e),e}}return function(t,e,n){n.p.customParseFormat=!0,t&&t.parseTwoDigitYear&&(o=t.parseTwoDigitYear);var i=e.prototype,s=i.parse;i.parse=function(t){var e=t.date,i=t.utc,r=t.args;this.$u=i;var o=r[1];if("string"==typeof o){var c=!0===r[2],l=!0===r[3],d=c||l,u=r[2];l&&(u=r[2]),a=this.$locale(),!c&&u&&(a=n.Ls[u]),this.$d=function(t,e,n,i){try{if(["x","X"].indexOf(e)>-1)return new Date(("X"===e?1e3:1)*t);var s=f(e)(t),r=s.year,a=s.month,o=s.day,c=s.hours,l=s.minutes,d=s.seconds,u=s.milliseconds,h=s.zone,m=s.week,y=new Date,k=o||(r||a?1:y.getDate()),g=r||y.getFullYear(),p=0;r&&!a||(p=a>0?a-1:y.getMonth());var v,T=c||0,x=l||0,b=d||0,w=u||0;return h?new Date(Date.UTC(g,p,k,T,x,b,w+60*h.offset*1e3)):n?new Date(Date.UTC(g,p,k,T,x,b,w)):(v=new Date(g,p,k,T,x,b,w),m&&(v=i(v).week(m).toDate()),v)}catch(t){return new Date("")}}(e,o,i,n),this.init(),u&&!0!==u&&(this.$L=this.locale(u).$L),d&&e!=this.format(o)&&(this.$d=new Date("")),a={}}else if(o instanceof Array)for(var h=o.length,m=1;m<=h;m+=1){r[1]=o[m-1];var y=n.apply(this,r);if(y.isValid()){this.$d=y.$d,this.$L=y.$L,this.init();break}m===h&&(this.$d=new Date(""))}else s.call(this,t)}}}()},3522(t){t.exports=function(){"use strict";var t,e,n=1e3,i=6e4,s=36e5,r=864e5,a=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,o=31536e6,c=2628e6,l=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,d={years:o,months:c,days:r,hours:s,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},u=function(t){return t instanceof p},h=function(t,e,n){return new p(t,n,e.$l)},f=function(t){return e.p(t)+"s"},m=function(t){return t<0},y=function(t){return m(t)?Math.ceil(t):Math.floor(t)},k=function(t){return Math.abs(t)},g=function(t,e){return t?m(t)?{negative:!0,format:""+k(t)+e}:{negative:!1,format:""+t+e}:{negative:!1,format:""}},p=function(){function m(t,e,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),e)return h(t*d[f(e)],this);if("number"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if("object"==typeof t)return Object.keys(t).forEach(function(e){i.$d[f(e)]=t[e]}),this.calMilliseconds(),this;if("string"==typeof t){var s=t.match(l);if(s){var r=s.slice(2).map(function(t){return null!=t?Number(t):0});return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var k=m.prototype;return k.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce(function(e,n){return e+(t.$d[n]||0)*d[n]},0)},k.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=y(t/o),t%=o,this.$d.months=y(t/c),t%=c,this.$d.days=y(t/r),t%=r,this.$d.hours=y(t/s),t%=s,this.$d.minutes=y(t/i),t%=i,this.$d.seconds=y(t/n),t%=n,this.$d.milliseconds=t},k.toISOString=function(){var t=g(this.$d.years,"Y"),e=g(this.$d.months,"M"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=g(n,"D"),s=g(this.$d.hours,"H"),r=g(this.$d.minutes,"M"),a=this.$d.seconds||0;this.$d.milliseconds&&(a+=this.$d.milliseconds/1e3,a=Math.round(1e3*a)/1e3);var o=g(a,"S"),c=t.negative||e.negative||i.negative||s.negative||r.negative||o.negative,l=s.format||r.format||o.format?"T":"",d=(c?"-":"")+"P"+t.format+e.format+i.format+l+s.format+r.format+o.format;return"P"===d||"-P"===d?"P0D":d},k.toJSON=function(){return this.toISOString()},k.format=function(t){var n=t||"YYYY-MM-DDTHH:mm:ss",i={Y:this.$d.years,YY:e.s(this.$d.years,2,"0"),YYYY:e.s(this.$d.years,4,"0"),M:this.$d.months,MM:e.s(this.$d.months,2,"0"),D:this.$d.days,DD:e.s(this.$d.days,2,"0"),H:this.$d.hours,HH:e.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:e.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:e.s(this.$d.seconds,2,"0"),SSS:e.s(this.$d.milliseconds,3,"0")};return n.replace(a,function(t,e){return e||String(i[t])})},k.as=function(t){return this.$ms/d[f(t)]},k.get=function(t){var e=this.$ms,n=f(t);return"milliseconds"===n?e%=1e3:e="weeks"===n?y(e/d[n]):this.$d[n],e||0},k.add=function(t,e,n){var i;return i=e?t*d[f(e)]:u(t)?t.$ms:h(t,this).$ms,h(this.$ms+i*(n?-1:1),this)},k.subtract=function(t,e){return this.add(t,e,!0)},k.locale=function(t){var e=this.clone();return e.$l=t,e},k.clone=function(){return h(this.$ms,this)},k.humanize=function(e){return t().add(this.$ms,"ms").locale(this.$l).fromNow(!e)},k.valueOf=function(){return this.asMilliseconds()},k.milliseconds=function(){return this.get("milliseconds")},k.asMilliseconds=function(){return this.as("milliseconds")},k.seconds=function(){return this.get("seconds")},k.asSeconds=function(){return this.as("seconds")},k.minutes=function(){return this.get("minutes")},k.asMinutes=function(){return this.as("minutes")},k.hours=function(){return this.get("hours")},k.asHours=function(){return this.as("hours")},k.days=function(){return this.get("days")},k.asDays=function(){return this.as("days")},k.weeks=function(){return this.get("weeks")},k.asWeeks=function(){return this.as("weeks")},k.months=function(){return this.get("months")},k.asMonths=function(){return this.as("months")},k.years=function(){return this.get("years")},k.asYears=function(){return this.as("years")},m}(),v=function(t,e,n){return t.add(e.years()*n,"y").add(e.months()*n,"M").add(e.days()*n,"d").add(e.hours()*n,"h").add(e.minutes()*n,"m").add(e.seconds()*n,"s").add(e.milliseconds()*n,"ms")};return function(n,i,s){t=s,e=s().$utils(),s.duration=function(t,e){var n=s.locale();return h(t,{$l:n},e)},s.isDuration=u;var r=i.prototype.add,a=i.prototype.subtract;i.prototype.add=function(t,e){return u(t)?v(this,t,1):r.bind(this)(t,e)},i.prototype.subtract=function(t,e){return u(t)?v(this,t,-1):a.bind(this)(t,e)}}}()},8313(t){t.exports=function(){"use strict";var t="day";return function(e,n,i){var s=function(e){return e.add(4-e.isoWeekday(),t)},r=n.prototype;r.isoWeekYear=function(){return s(this).year()},r.isoWeek=function(e){if(!this.$utils().u(e))return this.add(7*(e-this.isoWeek()),t);var n,r,a,o=s(this),c=(n=this.isoWeekYear(),a=4-(r=(this.$u?i.utc:i)().year(n).startOf("year")).isoWeekday(),r.isoWeekday()>4&&(a+=7),r.add(a,t));return o.diff(c,"week")+1},r.isoWeekday=function(t){return this.$utils().u(t)?this.day()||7:this.day(this.day()%7?t:t-7)};var a=r.startOf;r.startOf=function(t,e){var n=this.$utils(),i=!!n.u(e)||e;return"isoweek"===n.p(t)?i?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):a.bind(this)(t,e)}}}()},4045(t,e,n){"use strict";n.d(e,{diagram:()=>Pt});var i=n(8515),s=n(3706),r=n(797),a=n(6750),o=n(4353),c=n(8313),l=n(445),d=n(7375),u=n(3522),h=n(451),f=function(){var t=(0,r.K2)(function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},"o"),e=[6,8,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,38,40],n=[1,26],i=[1,27],s=[1,28],a=[1,29],o=[1,30],c=[1,31],l=[1,32],d=[1,33],u=[1,34],h=[1,9],f=[1,10],m=[1,11],y=[1,12],k=[1,13],g=[1,14],p=[1,15],v=[1,16],T=[1,19],x=[1,20],b=[1,21],w=[1,22],$=[1,23],_=[1,25],D=[1,35],S={trace:(0,r.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,weekend:19,weekend_friday:20,weekend_saturday:21,dateFormat:22,inclusiveEndDates:23,topAxis:24,axisFormat:25,tickInterval:26,excludes:27,includes:28,todayMarker:29,title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,section:36,clickStatement:37,taskTxt:38,taskData:39,click:40,callbackname:41,callbackargs:42,href:43,clickStatementDebug:44,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",12:"weekday_monday",13:"weekday_tuesday",14:"weekday_wednesday",15:"weekday_thursday",16:"weekday_friday",17:"weekday_saturday",18:"weekday_sunday",20:"weekend_friday",21:"weekend_saturday",22:"dateFormat",23:"inclusiveEndDates",24:"topAxis",25:"axisFormat",26:"tickInterval",27:"excludes",28:"includes",29:"todayMarker",30:"title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"section",38:"taskTxt",39:"taskData",40:"click",41:"callbackname",42:"callbackargs",43:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[19,1],[19,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[37,2],[37,3],[37,3],[37,4],[37,3],[37,4],[37,2],[44,2],[44,3],[44,3],[44,4],[44,3],[44,4],[44,2]],performAction:(0,r.K2)(function(t,e,n,i,s,r,a){var o=r.length-1;switch(s){case 1:return r[o-1];case 2:case 6:case 7:this.$=[];break;case 3:r[o-1].push(r[o]),this.$=r[o-1];break;case 4:case 5:this.$=r[o];break;case 8:i.setWeekday("monday");break;case 9:i.setWeekday("tuesday");break;case 10:i.setWeekday("wednesday");break;case 11:i.setWeekday("thursday");break;case 12:i.setWeekday("friday");break;case 13:i.setWeekday("saturday");break;case 14:i.setWeekday("sunday");break;case 15:i.setWeekend("friday");break;case 16:i.setWeekend("saturday");break;case 17:i.setDateFormat(r[o].substr(11)),this.$=r[o].substr(11);break;case 18:i.enableInclusiveEndDates(),this.$=r[o].substr(18);break;case 19:i.TopAxis(),this.$=r[o].substr(8);break;case 20:i.setAxisFormat(r[o].substr(11)),this.$=r[o].substr(11);break;case 21:i.setTickInterval(r[o].substr(13)),this.$=r[o].substr(13);break;case 22:i.setExcludes(r[o].substr(9)),this.$=r[o].substr(9);break;case 23:i.setIncludes(r[o].substr(9)),this.$=r[o].substr(9);break;case 24:i.setTodayMarker(r[o].substr(12)),this.$=r[o].substr(12);break;case 27:i.setDiagramTitle(r[o].substr(6)),this.$=r[o].substr(6);break;case 28:this.$=r[o].trim(),i.setAccTitle(this.$);break;case 29:case 30:this.$=r[o].trim(),i.setAccDescription(this.$);break;case 31:i.addSection(r[o].substr(8)),this.$=r[o].substr(8);break;case 33:i.addTask(r[o-1],r[o]),this.$="task";break;case 34:this.$=r[o-1],i.setClickEvent(r[o-1],r[o],null);break;case 35:this.$=r[o-2],i.setClickEvent(r[o-2],r[o-1],r[o]);break;case 36:this.$=r[o-2],i.setClickEvent(r[o-2],r[o-1],null),i.setLink(r[o-2],r[o]);break;case 37:this.$=r[o-3],i.setClickEvent(r[o-3],r[o-2],r[o-1]),i.setLink(r[o-3],r[o]);break;case 38:this.$=r[o-2],i.setClickEvent(r[o-2],r[o],null),i.setLink(r[o-2],r[o-1]);break;case 39:this.$=r[o-3],i.setClickEvent(r[o-3],r[o-1],r[o]),i.setLink(r[o-3],r[o-2]);break;case 40:this.$=r[o-1],i.setLink(r[o-1],r[o]);break;case 41:case 47:this.$=r[o-1]+" "+r[o];break;case 42:case 43:case 45:this.$=r[o-2]+" "+r[o-1]+" "+r[o];break;case 44:case 46:this.$=r[o-3]+" "+r[o-2]+" "+r[o-1]+" "+r[o]}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:n,13:i,14:s,15:a,16:o,17:c,18:l,19:18,20:d,21:u,22:h,23:f,24:m,25:y,26:k,27:g,28:p,29:v,30:T,31:x,33:b,35:w,36:$,37:24,38:_,40:D},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:36,11:17,12:n,13:i,14:s,15:a,16:o,17:c,18:l,19:18,20:d,21:u,22:h,23:f,24:m,25:y,26:k,27:g,28:p,29:v,30:T,31:x,33:b,35:w,36:$,37:24,38:_,40:D},t(e,[2,5]),t(e,[2,6]),t(e,[2,17]),t(e,[2,18]),t(e,[2,19]),t(e,[2,20]),t(e,[2,21]),t(e,[2,22]),t(e,[2,23]),t(e,[2,24]),t(e,[2,25]),t(e,[2,26]),t(e,[2,27]),{32:[1,37]},{34:[1,38]},t(e,[2,30]),t(e,[2,31]),t(e,[2,32]),{39:[1,39]},t(e,[2,8]),t(e,[2,9]),t(e,[2,10]),t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),t(e,[2,15]),t(e,[2,16]),{41:[1,40],43:[1,41]},t(e,[2,4]),t(e,[2,28]),t(e,[2,29]),t(e,[2,33]),t(e,[2,34],{42:[1,42],43:[1,43]}),t(e,[2,40],{41:[1,44]}),t(e,[2,35],{43:[1,45]}),t(e,[2,36]),t(e,[2,38],{42:[1,46]}),t(e,[2,37]),t(e,[2,39])],defaultActions:{},parseError:(0,r.K2)(function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},"parseError"),parse:(0,r.K2)(function(t){var e=this,n=[0],i=[],s=[null],a=[],o=this.table,c="",l=0,d=0,u=0,h=a.slice.call(arguments,1),f=Object.create(this.lexer),m={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(m.yy[y]=this.yy[y]);f.setInput(t,m.yy),m.yy.lexer=f,m.yy.parser=this,void 0===f.yylloc&&(f.yylloc={});var k=f.yylloc;a.push(k);var g=f.options&&f.options.ranges;function p(){var t;return"number"!=typeof(t=i.pop()||f.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof m.yy.parseError?this.parseError=m.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,r.K2)(function(t){n.length=n.length-2*t,s.length=s.length-t,a.length=a.length-t},"popStack"),(0,r.K2)(p,"lex");for(var v,T,x,b,w,$,_,D,S,C={};;){if(x=n[n.length-1],this.defaultActions[x]?b=this.defaultActions[x]:(null==v&&(v=p()),b=o[x]&&o[x][v]),void 0===b||!b.length||!b[0]){var M="";for($ in S=[],o[x])this.terminals_[$]&&$>2&&S.push("'"+this.terminals_[$]+"'");M=f.showPosition?"Parse error on line "+(l+1)+":\n"+f.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[v]||v)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==v?"end of input":"'"+(this.terminals_[v]||v)+"'"),this.parseError(M,{text:f.match,token:this.terminals_[v]||v,line:f.yylineno,loc:k,expected:S})}if(b[0]instanceof Array&&b.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+v);switch(b[0]){case 1:n.push(v),s.push(f.yytext),a.push(f.yylloc),n.push(b[1]),v=null,T?(v=T,T=null):(d=f.yyleng,c=f.yytext,l=f.yylineno,k=f.yylloc,u>0&&u--);break;case 2:if(_=this.productions_[b[1]][1],C.$=s[s.length-_],C._$={first_line:a[a.length-(_||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(_||1)].first_column,last_column:a[a.length-1].last_column},g&&(C._$.range=[a[a.length-(_||1)].range[0],a[a.length-1].range[1]]),void 0!==(w=this.performAction.apply(C,[c,d,l,m.yy,b[1],s,a].concat(h))))return w;_&&(n=n.slice(0,-1*_*2),s=s.slice(0,-1*_),a=a.slice(0,-1*_)),n.push(this.productions_[b[1]][0]),s.push(C.$),a.push(C._$),D=o[n[n.length-2]][n[n.length-1]],n.push(D);break;case 3:return!0}}return!0},"parse")},C=function(){return{EOF:1,parseError:(0,r.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,r.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,r.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,r.K2)(function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,r.K2)(function(){return this._more=!0,this},"more"),reject:(0,r.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,r.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,r.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,r.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,r.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,r.K2)(function(t,e){var n,i,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1},"test_match"),next:(0,r.K2)(function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;r<s.length;r++)if((n=this._input.match(this.rules[s[r]]))&&(!e||n[0].length>e[0].length)){if(e=n,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,s[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,r.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,r.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,r.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,r.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,r.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,r.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,r.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,r.K2)(function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),"open_directive";case 1:return this.begin("acc_title"),31;case 2:return this.popState(),"acc_title_value";case 3:return this.begin("acc_descr"),33;case 4:return this.popState(),"acc_descr_value";case 5:this.begin("acc_descr_multiline");break;case 6:case 15:case 18:case 21:case 24:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:case 9:case 10:case 12:case 13:break;case 11:return 10;case 14:this.begin("href");break;case 16:return 43;case 17:this.begin("callbackname");break;case 19:this.popState(),this.begin("callbackargs");break;case 20:return 41;case 22:return 42;case 23:this.begin("click");break;case 25:return 40;case 26:return 4;case 27:return 22;case 28:return 23;case 29:return 24;case 30:return 25;case 31:return 26;case 32:return 28;case 33:return 27;case 34:return 29;case 35:return 12;case 36:return 13;case 37:return 14;case 38:return 15;case 39:return 16;case 40:return 17;case 41:return 18;case 42:return 20;case 43:return 21;case 44:return"date";case 45:return 30;case 46:return"accDescription";case 47:return 36;case 48:return 38;case 49:return 39;case 50:return":";case 51:return 6;case 52:return"INVALID"}},"anonymous"),rules:[/^(?:%%\{)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:weekday\s+monday\b)/i,/^(?:weekday\s+tuesday\b)/i,/^(?:weekday\s+wednesday\b)/i,/^(?:weekday\s+thursday\b)/i,/^(?:weekday\s+friday\b)/i,/^(?:weekday\s+saturday\b)/i,/^(?:weekday\s+sunday\b)/i,/^(?:weekend\s+friday\b)/i,/^(?:weekend\s+saturday\b)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^\n]+)/i,/^(?:[^:\n]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},callbackargs:{rules:[21,22],inclusive:!1},callbackname:{rules:[18,19,20],inclusive:!1},href:{rules:[15,16],inclusive:!1},click:{rules:[24,25],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,17,23,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],inclusive:!0}}}}();function M(){this.yy={}}return S.lexer=C,(0,r.K2)(M,"Parser"),M.prototype=S,S.Parser=M,new M}();f.parser=f;var m=f;o.extend(c),o.extend(l),o.extend(d);var y,k,g={friday:5,saturday:6},p="",v="",T=void 0,x="",b=[],w=[],$=new Map,_=[],D=[],S="",C="",M=["active","done","crit","milestone","vert"],K=[],E="",Y=!1,L=!1,A="sunday",O="saturday",I=0,F=(0,r.K2)(function(){_=[],D=[],S="",K=[],kt=0,y=void 0,k=void 0,Tt=[],p="",v="",C="",T=void 0,x="",b=[],w=[],Y=!1,L=!1,I=0,$=new Map,E="",(0,s.IU)(),A="sunday",O="saturday"},"clear"),W=(0,r.K2)(function(t){E=t},"setDiagramId"),P=(0,r.K2)(function(t){v=t},"setAxisFormat"),H=(0,r.K2)(function(){return v},"getAxisFormat"),N=(0,r.K2)(function(t){T=t},"setTickInterval"),B=(0,r.K2)(function(){return T},"getTickInterval"),z=(0,r.K2)(function(t){x=t},"setTodayMarker"),R=(0,r.K2)(function(){return x},"getTodayMarker"),G=(0,r.K2)(function(t){p=t},"setDateFormat"),j=(0,r.K2)(function(){Y=!0},"enableInclusiveEndDates"),U=(0,r.K2)(function(){return Y},"endDatesAreInclusive"),V=(0,r.K2)(function(){L=!0},"enableTopAxis"),Z=(0,r.K2)(function(){return L},"topAxisEnabled"),X=(0,r.K2)(function(t){C=t},"setDisplayMode"),q=(0,r.K2)(function(){return C},"getDisplayMode"),Q=(0,r.K2)(function(){return p},"getDateFormat"),J=(0,r.K2)(function(t){b=t.toLowerCase().split(/[\s,]+/)},"setIncludes"),tt=(0,r.K2)(function(){return b},"getIncludes"),et=(0,r.K2)(function(t){w=t.toLowerCase().split(/[\s,]+/)},"setExcludes"),nt=(0,r.K2)(function(){return w},"getExcludes"),it=(0,r.K2)(function(){return $},"getLinks"),st=(0,r.K2)(function(t){S=t,_.push(t)},"addSection"),rt=(0,r.K2)(function(){return _},"getSections"),at=(0,r.K2)(function(){let t=_t();let e=0;for(;!t&&e<10;)t=_t(),e++;return D=Tt},"getTasks"),ot=(0,r.K2)(function(t,e,n,i){const s=t.format(e.trim()),r=t.format("YYYY-MM-DD");return!i.includes(s)&&!i.includes(r)&&(!(!n.includes("weekends")||t.isoWeekday()!==g[O]&&t.isoWeekday()!==g[O]+1)||(!!n.includes(t.format("dddd").toLowerCase())||(n.includes(s)||n.includes(r))))},"isInvalidDate"),ct=(0,r.K2)(function(t){A=t},"setWeekday"),lt=(0,r.K2)(function(){return A},"getWeekday"),dt=(0,r.K2)(function(t){O=t},"setWeekend"),ut=(0,r.K2)(function(t,e,n,i){if(!n.length||t.manualEndTime)return;let s,r;s=t.startTime instanceof Date?o(t.startTime):o(t.startTime,e,!0),s=s.add(1,"d"),r=t.endTime instanceof Date?o(t.endTime):o(t.endTime,e,!0);const[a,c]=ht(s,r,e,n,i);t.endTime=a.toDate(),t.renderEndTime=c},"checkTaskDates"),ht=(0,r.K2)(function(t,e,n,i,s){let r=!1,a=null;const o=e.add(1e4,"d");for(;t<=e;){if(r||(a=e.toDate()),r=ot(t,n,i,s),r&&(e=e.add(1,"d"))>o)throw new Error("Failed to find a valid date that was not excluded by `excludes` after 10,000 iterations.");t=t.add(1,"d")}return[e,a]},"fixTaskDates"),ft=(0,r.K2)(function(t,e,n){n=n.trim();if((0,r.K2)(t=>{const e=t.trim();return"x"===e||"X"===e},"isTimestampFormat")(e)&&/^\d+$/.test(n))return new Date(Number(n));const i=/^after\s+(?<ids>[\d\w- ]+)/.exec(n);if(null!==i){let t=null;for(const n of i.groups.ids.split(" ")){let e=wt(n);void 0!==e&&(!t||e.endTime>t.endTime)&&(t=e)}if(t)return t.endTime;const e=new Date;return e.setHours(0,0,0,0),e}let s=o(n,e.trim(),!0);if(s.isValid())return s.toDate();{r.Rm.debug("Invalid date:"+n),r.Rm.debug("With date format:"+e.trim());const t=new Date(n);if(void 0===t||isNaN(t.getTime())||t.getFullYear()<-1e4||t.getFullYear()>1e4)throw new Error("Invalid date:"+n);return t}},"getStartDate"),mt=(0,r.K2)(function(t){const e=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(t.trim());return null!==e?[Number.parseFloat(e[1]),e[2]]:[NaN,"ms"]},"parseDuration"),yt=(0,r.K2)(function(t,e,n,i=!1){n=n.trim();const s=/^until\s+(?<ids>[\d\w- ]+)/.exec(n);if(null!==s){let t=null;for(const n of s.groups.ids.split(" ")){let e=wt(n);void 0!==e&&(!t||e.startTime<t.startTime)&&(t=e)}if(t)return t.startTime;const e=new Date;return e.setHours(0,0,0,0),e}let r=o(n,e.trim(),!0);if(r.isValid())return i&&(r=r.add(1,"d")),r.toDate();let a=o(t);const[c,l]=mt(n);if(!Number.isNaN(c)){const t=a.add(c,l);t.isValid()&&(a=t)}return a.toDate()},"getEndDate"),kt=0,gt=(0,r.K2)(function(t){return void 0===t?"task"+(kt+=1):t},"parseId"),pt=(0,r.K2)(function(t,e){let n;n=":"===e.substr(0,1)?e.substr(1,e.length):e;const i=n.split(","),s={};Lt(i,s,M);for(let a=0;a<i.length;a++)i[a]=i[a].trim();let r="";switch(i.length){case 1:s.id=gt(),s.startTime=t.endTime,r=i[0];break;case 2:s.id=gt(),s.startTime=ft(void 0,p,i[0]),r=i[1];break;case 3:s.id=gt(i[0]),s.startTime=ft(void 0,p,i[1]),r=i[2]}return r&&(s.endTime=yt(s.startTime,p,r,Y),s.manualEndTime=o(r,"YYYY-MM-DD",!0).isValid(),ut(s,p,w,b)),s},"compileData"),vt=(0,r.K2)(function(t,e){let n;n=":"===e.substr(0,1)?e.substr(1,e.length):e;const i=n.split(","),s={};Lt(i,s,M);for(let r=0;r<i.length;r++)i[r]=i[r].trim();switch(i.length){case 1:s.id=gt(),s.startTime={type:"prevTaskEnd",id:t},s.endTime={data:i[0]};break;case 2:s.id=gt(),s.startTime={type:"getStartDate",startData:i[0]},s.endTime={data:i[1]};break;case 3:s.id=gt(i[0]),s.startTime={type:"getStartDate",startData:i[1]},s.endTime={data:i[2]}}return s},"parseData"),Tt=[],xt={},bt=(0,r.K2)(function(t,e){const n={section:S,type:S,processed:!1,manualEndTime:!1,renderEndTime:null,raw:{data:e},task:t,classes:[]},i=vt(k,e);n.raw.startTime=i.startTime,n.raw.endTime=i.endTime,n.id=i.id,n.prevTaskId=k,n.active=i.active,n.done=i.done,n.crit=i.crit,n.milestone=i.milestone,n.vert=i.vert,n.order=I,I++;const s=Tt.push(n);k=n.id,xt[n.id]=s-1},"addTask"),wt=(0,r.K2)(function(t){const e=xt[t];return Tt[e]},"findTaskById"),$t=(0,r.K2)(function(t,e){const n={section:S,type:S,description:t,task:t,classes:[]},i=pt(y,e);n.startTime=i.startTime,n.endTime=i.endTime,n.id=i.id,n.active=i.active,n.done=i.done,n.crit=i.crit,n.milestone=i.milestone,n.vert=i.vert,y=n,D.push(n)},"addTaskOrg"),_t=(0,r.K2)(function(){const t=(0,r.K2)(function(t){const e=Tt[t];let n="";switch(Tt[t].raw.startTime.type){case"prevTaskEnd":{const t=wt(e.prevTaskId);e.startTime=t.endTime;break}case"getStartDate":n=ft(void 0,p,Tt[t].raw.startTime.startData),n&&(Tt[t].startTime=n)}return Tt[t].startTime&&(Tt[t].endTime=yt(Tt[t].startTime,p,Tt[t].raw.endTime.data,Y),Tt[t].endTime&&(Tt[t].processed=!0,Tt[t].manualEndTime=o(Tt[t].raw.endTime.data,"YYYY-MM-DD",!0).isValid(),ut(Tt[t],p,w,b))),Tt[t].processed},"compileTask");let e=!0;for(const[n,i]of Tt.entries())t(n),e=e&&i.processed;return e},"compileTasks"),Dt=(0,r.K2)(function(t,e){let n=e;"loose"!==(0,s.D7)().securityLevel&&(n=(0,a.J)(e)),t.split(",").forEach(function(t){void 0!==wt(t)&&(Mt(t,()=>{window.open(n,"_self")}),$.set(t,n))}),St(t,"clickable")},"setLink"),St=(0,r.K2)(function(t,e){t.split(",").forEach(function(t){let n=wt(t);void 0!==n&&n.classes.push(e)})},"setClass"),Ct=(0,r.K2)(function(t,e,n){if("loose"!==(0,s.D7)().securityLevel)return;if(void 0===e)return;let r=[];if("string"==typeof n){r=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let t=0;t<r.length;t++){let e=r[t].trim();e.startsWith('"')&&e.endsWith('"')&&(e=e.substr(1,e.length-2)),r[t]=e}}0===r.length&&r.push(t),void 0!==wt(t)&&Mt(t,()=>{i._K.runFunc(e,...r)})},"setClickFun"),Mt=(0,r.K2)(function(t,e){K.push(function(){const n=E?`${E}-${t}`:t,i=document.querySelector(`[id="${n}"]`);null!==i&&i.addEventListener("click",function(){e()})},function(){const n=E?`${E}-${t}`:t,i=document.querySelector(`[id="${n}-text"]`);null!==i&&i.addEventListener("click",function(){e()})})},"pushFun"),Kt=(0,r.K2)(function(t,e,n){t.split(",").forEach(function(t){Ct(t,e,n)}),St(t,"clickable")},"setClickEvent"),Et=(0,r.K2)(function(t){K.forEach(function(e){e(t)})},"bindFunctions"),Yt={getConfig:(0,r.K2)(()=>(0,s.D7)().gantt,"getConfig"),clear:F,setDateFormat:G,getDateFormat:Q,enableInclusiveEndDates:j,endDatesAreInclusive:U,enableTopAxis:V,topAxisEnabled:Z,setAxisFormat:P,getAxisFormat:H,setTickInterval:N,getTickInterval:B,setTodayMarker:z,getTodayMarker:R,setAccTitle:s.SV,getAccTitle:s.iN,setDiagramTitle:s.ke,getDiagramTitle:s.ab,setDiagramId:W,setDisplayMode:X,getDisplayMode:q,setAccDescription:s.EI,getAccDescription:s.m7,addSection:st,getSections:rt,getTasks:at,addTask:bt,findTaskById:wt,addTaskOrg:$t,setIncludes:J,getIncludes:tt,setExcludes:et,getExcludes:nt,setClickEvent:Kt,setLink:Dt,getLinks:it,bindFunctions:Et,parseDuration:mt,isInvalidDate:ot,setWeekday:ct,getWeekday:lt,setWeekend:dt};function Lt(t,e,n){let i=!0;for(;i;)i=!1,n.forEach(function(n){const s=new RegExp("^\\s*"+n+"\\s*$");t[0].match(s)&&(e[n]=!0,t.shift(1),i=!0)})}(0,r.K2)(Lt,"getTaskTags"),o.extend(u);var At,Ot=(0,r.K2)(function(){r.Rm.debug("Something is calling, setConf, remove the call")},"setConf"),It={monday:h.ABi,tuesday:h.PGu,wednesday:h.GuW,thursday:h.Mol,friday:h.TUC,saturday:h.rGn,sunday:h.YPH},Ft=(0,r.K2)((t,e)=>{let n=[...t].map(()=>-1/0),i=[...t].sort((t,e)=>t.startTime-e.startTime||t.order-e.order),s=0;for(const r of i)for(let t=0;t<n.length;t++)if(r.startTime>=n[t]){n[t]=r.endTime,r.order=t+e,t>s&&(s=t);break}return s},"getMaxIntersections"),Wt=1e4,Pt={parser:m,db:Yt,renderer:{setConf:Ot,draw:(0,r.K2)(function(t,e,n,i){const a=(0,s.D7)().gantt;i.db.setDiagramId(e);const c=(0,s.D7)().securityLevel;let l;"sandbox"===c&&(l=(0,h.Ltv)("#i"+e));const d="sandbox"===c?(0,h.Ltv)(l.nodes()[0].contentDocument.body):(0,h.Ltv)("body"),u="sandbox"===c?l.nodes()[0].contentDocument:document,f=u.getElementById(e);void 0===(At=f.parentElement.offsetWidth)&&(At=1200),void 0!==a.useWidth&&(At=a.useWidth);const m=i.db.getTasks();let y=[];for(const s of m)y.push(s.type);y=C(y);const k={};let g=2*a.topPadding;if("compact"===i.db.getDisplayMode()||"compact"===a.displayMode){const t={};for(const n of m)void 0===t[n.section]?t[n.section]=[n]:t[n.section].push(n);let e=0;for(const n of Object.keys(t)){const i=Ft(t[n],e)+1;e+=i,g+=i*(a.barHeight+a.barGap),k[n]=i}}else{g+=m.length*(a.barHeight+a.barGap);for(const t of y)k[t]=m.filter(e=>e.type===t).length}f.setAttribute("viewBox","0 0 "+At+" "+g);const p=d.select(`[id="${e}"]`),v=(0,h.w7C)().domain([(0,h.jkA)(m,function(t){return t.startTime}),(0,h.T9B)(m,function(t){return t.endTime})]).rangeRound([0,At-a.leftPadding-a.rightPadding]);function T(t,e){const n=t.startTime,i=e.startTime;let s=0;return n>i?s=1:n<i&&(s=-1),s}function x(t,e,n){const s=a.barHeight,r=s+a.barGap,o=a.topPadding,c=a.leftPadding,l=(0,h.m4Y)().domain([0,y.length]).range(["#00B9FA","#F95002"]).interpolate(h.bEH);w(r,o,c,e,n,t,i.db.getExcludes(),i.db.getIncludes()),_(c,o,e,n),b(t,r,o,c,s,l,e),D(r,o),S(c,o,e,n)}function b(t,n,r,o,c,l,d){t.sort((t,e)=>t.vert===e.vert?0:t.vert?1:-1);const u=[...new Set(t.map(t=>t.order))].map(e=>t.find(t=>t.order===e));p.append("g").selectAll("rect").data(u).enter().append("rect").attr("x",0).attr("y",function(t,e){return t.order*n+r-2}).attr("width",function(){return d-a.rightPadding/2}).attr("height",n).attr("class",function(t){for(const[e,n]of y.entries())if(t.type===n)return"section section"+e%a.numberSectionStyles;return"section section0"}).enter();const f=p.append("g").selectAll("rect").data(t).enter(),k=i.db.getLinks();f.append("rect").attr("id",function(t){return e+"-"+t.id}).attr("rx",3).attr("ry",3).attr("x",function(t){return t.milestone?v(t.startTime)+o+.5*(v(t.endTime)-v(t.startTime))-.5*c:v(t.startTime)+o}).attr("y",function(t,e){return e=t.order,t.vert?a.gridLineStartPadding:e*n+r}).attr("width",function(t){return t.milestone?c:t.vert?.08*c:v(t.renderEndTime||t.endTime)-v(t.startTime)}).attr("height",function(t){return t.vert?m.length*(a.barHeight+a.barGap)+2*a.barHeight:c}).attr("transform-origin",function(t,e){return e=t.order,(v(t.startTime)+o+.5*(v(t.endTime)-v(t.startTime))).toString()+"px "+(e*n+r+.5*c).toString()+"px"}).attr("class",function(t){let e="";t.classes.length>0&&(e=t.classes.join(" "));let n=0;for(const[s,r]of y.entries())t.type===r&&(n=s%a.numberSectionStyles);let i="";return t.active?t.crit?i+=" activeCrit":i=" active":t.done?i=t.crit?" doneCrit":" done":t.crit&&(i+=" crit"),0===i.length&&(i=" task"),t.milestone&&(i=" milestone "+i),t.vert&&(i=" vert "+i),i+=n,i+=" "+e,"task"+i}),f.append("text").attr("id",function(t){return e+"-"+t.id+"-text"}).text(function(t){return t.task}).attr("font-size",a.fontSize).attr("x",function(t){let e=v(t.startTime),n=v(t.renderEndTime||t.endTime);if(t.milestone&&(e+=.5*(v(t.endTime)-v(t.startTime))-.5*c,n=e+c),t.vert)return v(t.startTime)+o;const i=this.getBBox().width;return i>n-e?n+i+1.5*a.leftPadding>d?e+o-5:n+o+5:(n-e)/2+e+o}).attr("y",function(t,e){return t.vert?a.gridLineStartPadding+m.length*(a.barHeight+a.barGap)+60:t.order*n+a.barHeight/2+(a.fontSize/2-2)+r}).attr("text-height",c).attr("class",function(t){const e=v(t.startTime);let n=v(t.endTime);t.milestone&&(n=e+c);const i=this.getBBox().width;let s="";t.classes.length>0&&(s=t.classes.join(" "));let r=0;for(const[c,l]of y.entries())t.type===l&&(r=c%a.numberSectionStyles);let o="";return t.active&&(o=t.crit?"activeCritText"+r:"activeText"+r),t.done?o=t.crit?o+" doneCritText"+r:o+" doneText"+r:t.crit&&(o=o+" critText"+r),t.milestone&&(o+=" milestoneText"),t.vert&&(o+=" vertText"),i>n-e?n+i+1.5*a.leftPadding>d?s+" taskTextOutsideLeft taskTextOutside"+r+" "+o:s+" taskTextOutsideRight taskTextOutside"+r+" "+o+" width-"+i:s+" taskText taskText"+r+" "+o+" width-"+i});if("sandbox"===(0,s.D7)().securityLevel){let t;t=(0,h.Ltv)("#i"+e);const n=t.nodes()[0].contentDocument;f.filter(function(t){return k.has(t.id)}).each(function(t){var i=n.querySelector("#"+CSS.escape(e+"-"+t.id)),s=n.querySelector("#"+CSS.escape(e+"-"+t.id+"-text"));const r=i.parentNode;var a=n.createElement("a");a.setAttribute("xlink:href",k.get(t.id)),a.setAttribute("target","_top"),r.appendChild(a),a.appendChild(i),a.appendChild(s)})}}function w(t,n,s,c,l,d,u,h){if(0===u.length&&0===h.length)return;let f,m;for(const{startTime:e,endTime:i}of d)(void 0===f||e<f)&&(f=e),(void 0===m||i>m)&&(m=i);if(!f||!m)return;if(o(m).diff(o(f),"year")>5)return void r.Rm.warn("The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.");const y=i.db.getDateFormat(),k=[];let g=null,T=o(f);for(;T.valueOf()<=m;)i.db.isInvalidDate(T,y,u,h)?g?g.end=T:g={start:T,end:T}:g&&(k.push(g),g=null),T=T.add(1,"d");p.append("g").selectAll("rect").data(k).enter().append("rect").attr("id",t=>e+"-exclude-"+t.start.format("YYYY-MM-DD")).attr("x",t=>v(t.start.startOf("day"))+s).attr("y",a.gridLineStartPadding).attr("width",t=>v(t.end.endOf("day"))-v(t.start.startOf("day"))).attr("height",l-n-a.gridLineStartPadding).attr("transform-origin",function(e,n){return(v(e.start)+s+.5*(v(e.end)-v(e.start))).toString()+"px "+(n*t+.5*l).toString()+"px"}).attr("class","exclude-range")}function $(t,e,n,i){if(n<=0||t>e)return 1/0;const s=e-t,r=o.duration({[i??"day"]:n}).asMilliseconds();return r<=0?1/0:Math.ceil(s/r)}function _(t,e,n,s){const o=i.db.getDateFormat(),c=i.db.getAxisFormat();let l;l=c||("D"===o?"%d":a.axisFormat??"%Y-%m-%d");let d=(0,h.l78)(v).tickSize(-s+e+a.gridLineStartPadding).tickFormat((0,h.DCK)(l));const u=/^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec(i.db.getTickInterval()||a.tickInterval);if(null!==u){const t=parseInt(u[1],10);if(isNaN(t)||t<=0)r.Rm.warn(`Invalid tick interval value: "${u[1]}". Skipping custom tick interval.`);else{const e=u[2],n=i.db.getWeekday()||a.weekday,s=v.domain(),o=$(s[0],s[1],t,e);if(o>Wt)r.Rm.warn(`The tick interval "${t}${e}" would generate ${o} ticks, which exceeds the maximum allowed (10000). This may indicate an invalid date or time range. Skipping custom tick interval.`);else switch(e){case"millisecond":d.ticks(h.t6C.every(t));break;case"second":d.ticks(h.ucG.every(t));break;case"minute":d.ticks(h.wXd.every(t));break;case"hour":d.ticks(h.Agd.every(t));break;case"day":d.ticks(h.UAC.every(t));break;case"week":d.ticks(It[n].every(t));break;case"month":d.ticks(h.Ui6.every(t))}}}if(p.append("g").attr("class","grid").attr("transform","translate("+t+", "+(s-50)+")").call(d).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),i.db.topAxisEnabled()||a.topAxis){let n=(0,h.tlR)(v).tickSize(-s+e+a.gridLineStartPadding).tickFormat((0,h.DCK)(l));if(null!==u){const t=parseInt(u[1],10);if(isNaN(t)||t<=0)r.Rm.warn(`Invalid tick interval value: "${u[1]}". Skipping custom tick interval.`);else{const e=u[2],s=i.db.getWeekday()||a.weekday,r=v.domain();if($(r[0],r[1],t,e)<=Wt)switch(e){case"millisecond":n.ticks(h.t6C.every(t));break;case"second":n.ticks(h.ucG.every(t));break;case"minute":n.ticks(h.wXd.every(t));break;case"hour":n.ticks(h.Agd.every(t));break;case"day":n.ticks(h.UAC.every(t));break;case"week":n.ticks(It[s].every(t));break;case"month":n.ticks(h.Ui6.every(t))}}}p.append("g").attr("class","grid").attr("transform","translate("+t+", "+e+")").call(n).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}function D(t,e){let n=0;const i=Object.keys(k).map(t=>[t,k[t]]);p.append("g").selectAll("text").data(i).enter().append(function(t){const e=t[0].split(s.Y2.lineBreakRegex),n=-(e.length-1)/2,i=u.createElementNS("http://www.w3.org/2000/svg","text");i.setAttribute("dy",n+"em");for(const[s,r]of e.entries()){const t=u.createElementNS("http://www.w3.org/2000/svg","tspan");t.setAttribute("alignment-baseline","central"),t.setAttribute("x","10"),s>0&&t.setAttribute("dy","1em"),t.textContent=r,i.appendChild(t)}return i}).attr("x",10).attr("y",function(s,r){if(!(r>0))return s[1]*t/2+e;for(let a=0;a<r;a++)return n+=i[r-1][1],s[1]*t/2+n*t+e}).attr("font-size",a.sectionFontSize).attr("class",function(t){for(const[e,n]of y.entries())if(t[0]===n)return"sectionTitle sectionTitle"+e%a.numberSectionStyles;return"sectionTitle"})}function S(t,e,n,s){const r=i.db.getTodayMarker();if("off"===r)return;const o=p.append("g").attr("class","today"),c=new Date,l=o.append("line");l.attr("x1",v(c)+t).attr("x2",v(c)+t).attr("y1",a.titleTopMargin).attr("y2",s-a.titleTopMargin).attr("class","today"),""!==r&&l.attr("style",r.replace(/,/g,";"))}function C(t){const e={},n=[];for(let i=0,s=t.length;i<s;++i)Object.prototype.hasOwnProperty.call(e,t[i])||(e[t[i]]=!0,n.push(t[i]));return n}(0,r.K2)(T,"taskCompare"),m.sort(T),x(m,At,g),(0,s.a$)(p,g,At,a.useMaxWidth),p.append("text").text(i.db.getDiagramTitle()).attr("x",At/2).attr("y",a.titleTopMargin).attr("class","titleText"),(0,r.K2)(x,"makeGantt"),(0,r.K2)(b,"drawRects"),(0,r.K2)(w,"drawExcludeDays"),(0,r.K2)($,"getEstimatedTickCount"),(0,r.K2)(_,"makeGrid"),(0,r.K2)(D,"vertLabels"),(0,r.K2)(S,"drawToday"),(0,r.K2)(C,"checkUnique")},"draw")},styles:(0,r.K2)(t=>`\n .mermaid-main-font {\n font-family: ${t.fontFamily};\n }\n\n .exclude-range {\n fill: ${t.excludeBkgColor};\n }\n\n .section {\n stroke: none;\n opacity: 0.2;\n }\n\n .section0 {\n fill: ${t.sectionBkgColor};\n }\n\n .section2 {\n fill: ${t.sectionBkgColor2};\n }\n\n .section1,\n .section3 {\n fill: ${t.altSectionBkgColor};\n opacity: 0.2;\n }\n\n .sectionTitle0 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle1 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle2 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle3 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle {\n text-anchor: start;\n font-family: ${t.fontFamily};\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ${t.gridColor};\n opacity: 0.8;\n shape-rendering: crispEdges;\n }\n\n .grid .tick text {\n font-family: ${t.fontFamily};\n fill: ${t.textColor};\n }\n\n .grid path {\n stroke-width: 0;\n }\n\n\n /* Today line */\n\n .today {\n fill: none;\n stroke: ${t.todayLineColor};\n stroke-width: 2px;\n }\n\n\n /* Task styling */\n\n /* Default task */\n\n .task {\n stroke-width: 2;\n }\n\n .taskText {\n text-anchor: middle;\n font-family: ${t.fontFamily};\n }\n\n .taskTextOutsideRight {\n fill: ${t.taskTextDarkColor};\n text-anchor: start;\n font-family: ${t.fontFamily};\n }\n\n .taskTextOutsideLeft {\n fill: ${t.taskTextDarkColor};\n text-anchor: end;\n }\n\n\n /* Special case clickable */\n\n .task.clickable {\n cursor: pointer;\n }\n\n .taskText.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n\n /* Specific task settings for the sections*/\n\n .taskText0,\n .taskText1,\n .taskText2,\n .taskText3 {\n fill: ${t.taskTextColor};\n }\n\n .task0,\n .task1,\n .task2,\n .task3 {\n fill: ${t.taskBkgColor};\n stroke: ${t.taskBorderColor};\n }\n\n .taskTextOutside0,\n .taskTextOutside2\n {\n fill: ${t.taskTextOutsideColor};\n }\n\n .taskTextOutside1,\n .taskTextOutside3 {\n fill: ${t.taskTextOutsideColor};\n }\n\n\n /* Active task */\n\n .active0,\n .active1,\n .active2,\n .active3 {\n fill: ${t.activeTaskBkgColor};\n stroke: ${t.activeTaskBorderColor};\n }\n\n .activeText0,\n .activeText1,\n .activeText2,\n .activeText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n\n /* Completed task */\n\n .done0,\n .done1,\n .done2,\n .done3 {\n stroke: ${t.doneTaskBorderColor};\n fill: ${t.doneTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneText0,\n .doneText1,\n .doneText2,\n .doneText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n /* Done task text displayed outside the bar sits against the diagram background,\n not against the done-task bar, so it must use the outside/contrast color. */\n .doneText0.taskTextOutsideLeft,\n .doneText0.taskTextOutsideRight,\n .doneText1.taskTextOutsideLeft,\n .doneText1.taskTextOutsideRight,\n .doneText2.taskTextOutsideLeft,\n .doneText2.taskTextOutsideRight,\n .doneText3.taskTextOutsideLeft,\n .doneText3.taskTextOutsideRight {\n fill: ${t.taskTextOutsideColor} !important;\n }\n\n\n /* Tasks on the critical line */\n\n .crit0,\n .crit1,\n .crit2,\n .crit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.critBkgColor};\n stroke-width: 2;\n }\n\n .activeCrit0,\n .activeCrit1,\n .activeCrit2,\n .activeCrit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.activeTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneCrit0,\n .doneCrit1,\n .doneCrit2,\n .doneCrit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.doneTaskBkgColor};\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges;\n }\n\n .milestone {\n transform: rotate(45deg) scale(0.8,0.8);\n }\n\n .milestoneText {\n font-style: italic;\n }\n .doneCritText0,\n .doneCritText1,\n .doneCritText2,\n .doneCritText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n /* Done-crit task text outside the bar \u2014 same reasoning as doneText above. */\n .doneCritText0.taskTextOutsideLeft,\n .doneCritText0.taskTextOutsideRight,\n .doneCritText1.taskTextOutsideLeft,\n .doneCritText1.taskTextOutsideRight,\n .doneCritText2.taskTextOutsideLeft,\n .doneCritText2.taskTextOutsideRight,\n .doneCritText3.taskTextOutsideLeft,\n .doneCritText3.taskTextOutsideRight {\n fill: ${t.taskTextOutsideColor} !important;\n }\n\n .vert {\n stroke: ${t.vertLineColor};\n }\n\n .vertText {\n font-size: 15px;\n text-anchor: middle;\n fill: ${t.vertLineColor} !important;\n }\n\n .activeCritText0,\n .activeCritText1,\n .activeCritText2,\n .activeCritText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n .titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.titleColor||t.textColor};\n font-family: ${t.fontFamily};\n }\n`,"getStyles")}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/4081bc5c.cbc1d1e5.js b/docs/build/assets/js/4081bc5c.cbc1d1e5.js deleted file mode 100644 index 980c1da1a..000000000 --- a/docs/build/assets/js/4081bc5c.cbc1d1e5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[931],{8968(e,s,a){a.d(s,{Ay:()=>o});a(6540);const n={grid:"grid_JFHO",group:"group_Nfvo",item:"item_phlc",itemLink:"itemLink_HeDt",label:"label_MAb0",h:"h_tlk1",beta:"beta_BGXC",soon:"soon_WxqE",tip:"tip_ojjV",legend:"legend_X6Dh",legendItem:"legendItem_PTOk"};var t=a(4848);const l={stable:"",beta:n.beta,soon:n.soon};function i({label:e,tip:s,status:a="stable",href:i,className:r}){const o=[n.h,l[a]].filter(Boolean).join(" "),c=(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:o,"aria-hidden":"true"}),(0,t.jsx)("span",{className:n.label,children:e}),s&&(0,t.jsx)("span",{className:n.tip,children:s})]});if(i){const a=/^https?:\/\//.test(i);return(0,t.jsx)("a",{className:[n.item,n.itemLink,r].filter(Boolean).join(" "),href:i,title:s||e,...a?{target:"_blank",rel:"noopener noreferrer"}:{},children:c})}return(0,t.jsx)("div",{className:[n.item,r].filter(Boolean).join(" "),tabIndex:0,title:s||e,children:c})}function r({label:e,className:s}){return(0,t.jsx)("h4",{className:[n.group,s].filter(Boolean).join(" "),children:e})}function o({items:e,legend:s=!1,children:a,className:l}){return(0,t.jsxs)("div",{className:l,children:[s&&(0,t.jsx)(c,{}),(0,t.jsx)("div",{className:n.grid,children:e?e.map((e,s)=>e.group?(0,t.jsx)(r,{label:e.group},s):(0,t.jsx)(i,{...e},s)):a})]})}function c(){return(0,t.jsxs)("div",{className:n.legend,children:[(0,t.jsxs)("span",{className:n.legendItem,children:[(0,t.jsx)("span",{className:n.h,"aria-hidden":"true"}),"Stable"]}),(0,t.jsxs)("span",{className:n.legendItem,children:[(0,t.jsx)("span",{className:[n.h,n.beta].join(" "),"aria-hidden":"true"}),"Beta"]}),(0,t.jsxs)("span",{className:n.legendItem,children:[(0,t.jsx)("span",{className:[n.h,n.soon].join(" "),"aria-hidden":"true"}),"Coming soon"]})]})}},832(e,s,a){a.r(s),a.d(s,{default:()=>i});a(6540);var n=a(1827),t=a(8968),l=a(4848);function i({data:e}){const{features:s=[],title:a="Features",intro:i=null}=e||{},r=s.map(e=>({label:e.title||e.slug,tip:e.summary||"",status:"stable",href:e.docsUrl||void 0}));return(0,l.jsx)(n.A,{title:a,description:i||"Capabilities shipped in this app, sourced from openspec/specs/.",children:(0,l.jsxs)("main",{className:"container margin-vert--lg",children:[(0,l.jsx)("h1",{children:a}),i&&(0,l.jsx)("p",{children:i}),0===r.length?(0,l.jsx)("p",{children:"No features documented yet."}):(0,l.jsx)(t.Ay,{items:r,legend:!0})]})})}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/4219.077e2f86.js b/docs/build/assets/js/4219.077e2f86.js deleted file mode 100644 index 893268a96..000000000 --- a/docs/build/assets/js/4219.077e2f86.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[4219],{5937(t,e,s){s.d(e,{A:()=>r});var i=s(2453),n=s(4886);const r=(t,e)=>i.A.lang.round(n.A.parse(t)[e])},4219(t,e,s){s.d(e,{diagram:()=>x});var i=s(2501),n=s(3283),r=s(8343),a=s(9625),u=s(4345),o=s(3848),l=(s(6615),s(1334),s(273)),c=(s(5105),s(8013),s(5739),s(8515)),h=s(3706),d=s(797),p=s(451),g=s(9418),A=s(3201),b=s(5937),y=class{constructor(){this.vertexCounter=0,this.config=(0,h.D7)(),this.diagramId="",this.vertices=new Map,this.edges=[],this.classes=new Map,this.subGraphs=[],this.subGraphLookup=new Map,this.tooltips=new Map,this.subCount=0,this.firstGraphFlag=!0,this.secCount=-1,this.posCrossRef=[],this.funs=[],this.setAccTitle=h.SV,this.setAccDescription=h.EI,this.setDiagramTitle=h.ke,this.getAccTitle=h.iN,this.getAccDescription=h.m7,this.getDiagramTitle=h.ab,this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen("gen-2")}static{(0,d.K2)(this,"FlowDB")}sanitizeText(t){return h.Y2.sanitizeText(t,this.config)}sanitizeNodeLabelType(t){switch(t){case"markdown":case"string":case"text":return t;default:return"markdown"}}setDiagramId(t){this.diagramId=t}lookUpDomId(t){for(const e of this.vertices.values())if(e.id===t)return this.diagramId?`${this.diagramId}-${e.domId}`:e.domId;return this.diagramId?`${this.diagramId}-${t}`:t}addVertex(t,e,s,i,r,a,u={},o){if(!t||0===t.trim().length)return;let c;if(void 0!==o){let t;t=o.includes("\n")?o+"\n":"{\n"+o+"\n}",c=(0,n.H)(t,{schema:n.r})}const p=this.edges.find(e=>e.id===t);if(p){const t=c;return void 0!==t?.animate&&(p.animate=t.animate),void 0!==t?.animation&&(p.animation=t.animation),void(void 0!==t?.curve&&(p.interpolate=t.curve))}let g,A=this.vertices.get(t);if(void 0===A&&(void 0===e&&void 0===s&&null!=i&&d.Rm.warn(`Style applied to unknown node "${t}". This may indicate a typo. The node will be created automatically.`),A={id:t,labelType:"text",domId:"flowchart-"+t+"-"+this.vertexCounter,styles:[],classes:[]},this.vertices.set(t,A)),this.vertexCounter++,void 0!==e?(this.config=(0,h.D7)(),g=this.sanitizeText(e.text.trim()),A.labelType=e.type,g.startsWith('"')&&g.endsWith('"')&&(g=g.substring(1,g.length-1)),A.text=g):void 0===A.text&&(A.text=t),void 0!==s&&(A.type=s),null!=i&&i.forEach(t=>{A.styles.push(t)}),null!=r&&r.forEach(t=>{A.classes.push(t)}),void 0!==a&&(A.dir=a),void 0===A.props?A.props=u:void 0!==u&&Object.assign(A.props,u),void 0!==c){if(c.shape){if(c.shape!==c.shape.toLowerCase()||c.shape.includes("_"))throw new Error(`No such shape: ${c.shape}. Shape names should be lowercase.`);if(!(0,l.aP)(c.shape))throw new Error(`No such shape: ${c.shape}.`);A.type=c?.shape}c?.label&&(A.text=c?.label,A.labelType=this.sanitizeNodeLabelType(c?.labelType)),c?.icon&&(A.icon=c?.icon,c.label?.trim()||A.text!==t||(A.text="")),c?.form&&(A.form=c?.form),c?.pos&&(A.pos=c?.pos),c?.img&&(A.img=c?.img,c.label?.trim()||A.text!==t||(A.text="")),c?.constraint&&(A.constraint=c.constraint),c.w&&(A.assetWidth=Number(c.w)),c.h&&(A.assetHeight=Number(c.h))}}addSingleLink(t,e,s,i){const n={start:t,end:e,type:void 0,text:"",labelType:"text",classes:[],isUserDefinedId:!1,interpolate:this.edges.defaultInterpolate};d.Rm.info("abc78 Got edge...",n);const r=s.text;if(void 0!==r&&(n.text=this.sanitizeText(r.text.trim()),n.text.startsWith('"')&&n.text.endsWith('"')&&(n.text=n.text.substring(1,n.text.length-1)),n.labelType=this.sanitizeNodeLabelType(r.type)),void 0!==s&&(n.type=s.type,n.stroke=s.stroke,n.length=s.length>10?10:s.length),i&&!this.edges.some(t=>t.id===i))n.id=i,n.isUserDefinedId=!0;else{const t=this.edges.filter(t=>t.start===n.start&&t.end===n.end);0===t.length?n.id=(0,c.rY)(n.start,n.end,{counter:0,prefix:"L"}):n.id=(0,c.rY)(n.start,n.end,{counter:t.length+1,prefix:"L"})}if(!(this.edges.length<(this.config.maxEdges??500)))throw new Error(`Edge limit exceeded. ${this.edges.length} edges found, but the limit is ${this.config.maxEdges}.\n\nInitialize mermaid with maxEdges set to a higher number to allow more edges.\nYou cannot set this config via configuration inside the diagram as it is a secure config.\nYou have to call mermaid.initialize.`);d.Rm.info("Pushing edge..."),this.edges.push(n)}isLinkData(t){return null!==t&&"object"==typeof t&&"id"in t&&"string"==typeof t.id}addLink(t,e,s){const i=this.isLinkData(s)?s.id.replace("@",""):void 0;d.Rm.info("addLink",t,e,i);for(const n of t)for(const r of e){const a=n===t[t.length-1],u=r===e[0];a&&u?this.addSingleLink(n,r,s,i):this.addSingleLink(n,r,s,void 0)}}updateLinkInterpolate(t,e){t.forEach(t=>{"default"===t?this.edges.defaultInterpolate=e:this.edges[t].interpolate=e})}updateLink(t,e){t.forEach(t=>{if("number"==typeof t&&t>=this.edges.length)throw new Error(`The index ${t} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${this.edges.length-1}. (Help: Ensure that the index is within the range of existing edges.)`);"default"===t?this.edges.defaultStyle=e:(this.edges[t].style=e,(this.edges[t]?.style?.length??0)>0&&!this.edges[t]?.style?.some(t=>t?.startsWith("fill"))&&this.edges[t]?.style?.push("fill:none"))})}addClass(t,e){const s=e.join().replace(/\\,/g,"\xa7\xa7\xa7").replace(/,/g,";").replace(/\xa7\xa7\xa7/g,",").split(";");t.split(",").forEach(t=>{let e=this.classes.get(t);void 0===e&&(e={id:t,styles:[],textStyles:[]},this.classes.set(t,e)),null!=s&&s.forEach(t=>{if(/color/.exec(t)){const s=t.replace("fill","bgFill");e.textStyles.push(s)}e.styles.push(t)})})}setDirection(t){this.direction=t.trim(),/.*</.exec(this.direction)&&(this.direction="RL"),/.*\^/.exec(this.direction)&&(this.direction="BT"),/.*>/.exec(this.direction)&&(this.direction="LR"),/.*v/.exec(this.direction)&&(this.direction="TB"),"TD"===this.direction&&(this.direction="TB")}setClass(t,e){for(const s of t.split(",")){const t=this.vertices.get(s);t&&t.classes.push(e);const i=this.edges.find(t=>t.id===s);i&&i.classes.push(e);const n=this.subGraphLookup.get(s);n&&n.classes.push(e)}}setTooltip(t,e){if(void 0!==e){e=this.sanitizeText(e);for(const s of t.split(","))this.tooltips.set("gen-1"===this.version?this.lookUpDomId(s):s,e)}}setClickFun(t,e,s){if("loose"!==(0,h.D7)().securityLevel)return;if(void 0===e)return;let i=[];if("string"==typeof s){i=s.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let t=0;t<i.length;t++){let e=i[t].trim();e.startsWith('"')&&e.endsWith('"')&&(e=e.substr(1,e.length-2)),i[t]=e}}0===i.length&&i.push(t);const n=this.vertices.get(t);n&&(n.haveCallback=!0,this.funs.push(()=>{const s=this.lookUpDomId(t),n=document.querySelector(`[id="${s}"]`);null!==n&&n.addEventListener("click",()=>{c._K.runFunc(e,...i)},!1)}))}setLink(t,e,s){t.split(",").forEach(t=>{const i=this.vertices.get(t);void 0!==i&&(i.link=c._K.formatUrl(e,this.config),i.linkTarget=s)}),this.setClass(t,"clickable")}getTooltip(t){return this.tooltips.get(t)}setClickEvent(t,e,s){t.split(",").forEach(t=>{this.setClickFun(t,e,s)}),this.setClass(t,"clickable")}bindFunctions(t){this.funs.forEach(e=>{e(t)})}getDirection(){return this.direction?.trim()}getVertices(){return this.vertices}getEdges(){return this.edges}getClasses(){return this.classes}setupToolTips(t){const e=(0,r.Ck)();(0,p.Ltv)(t).select("svg").selectAll("g.node").on("mouseover",t=>{const s=(0,p.Ltv)(t.currentTarget),i=s.attr("title");if(null===i)return;const n=t.currentTarget?.getBoundingClientRect();e.transition().duration(200).style("opacity",".9"),e.text(s.attr("title")).style("left",window.scrollX+n.left+(n.right-n.left)/2+"px").style("top",window.scrollY+n.bottom+"px"),e.html(g.A.sanitize(i)),s.classed("hover",!0)}).on("mouseout",t=>{e.transition().duration(500).style("opacity",0);(0,p.Ltv)(t.currentTarget).classed("hover",!1)})}clear(t="gen-2"){this.vertices=new Map,this.classes=new Map,this.edges=[],this.funs=[this.setupToolTips.bind(this)],this.diagramId="",this.subGraphs=[],this.subGraphLookup=new Map,this.subCount=0,this.tooltips=new Map,this.firstGraphFlag=!0,this.version=t,this.config=(0,h.D7)(),(0,h.IU)()}setGen(t){this.version=t||"gen-2"}defaultStyle(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"}addSubGraph(t,e,s){let i=t.text.trim(),n=s.text;t===s&&/\s/.exec(s.text)&&(i=void 0);const r=(0,d.K2)(t=>{const e={boolean:{},number:{},string:{}},s=[];let i;return{nodeList:t.filter(function(t){const n=typeof t;return t.stmt&&"dir"===t.stmt?(i=t.value,!1):""!==t.trim()&&(n in e?!e[n].hasOwnProperty(t)&&(e[n][t]=!0):!s.includes(t)&&s.push(t))}),dir:i}},"uniq")(e.flat()),a=r.nodeList;let u=r.dir;const o=(0,h.D7)().flowchart??{};if(u=u??(o.inheritDir?this.getDirection()??(0,h.D7)().direction??void 0:void 0),"gen-1"===this.version)for(let c=0;c<a.length;c++)a[c]=this.lookUpDomId(a[c]);i=i??"subGraph"+this.subCount,n=n||"",n=this.sanitizeText(n),this.subCount=this.subCount+1;const l={id:i,nodes:a,title:n.trim(),classes:[],dir:u,labelType:this.sanitizeNodeLabelType(s?.type)};return d.Rm.info("Adding",l.id,l.nodes,l.dir),l.nodes=this.makeUniq(l,this.subGraphs).nodes,this.subGraphs.push(l),this.subGraphLookup.set(i,l),i}getPosForId(t){for(const[e,s]of this.subGraphs.entries())if(s.id===t)return e;return-1}indexNodes2(t,e){const s=this.subGraphs[e].nodes;if(this.secCount=this.secCount+1,this.secCount>2e3)return{result:!1,count:0};if(this.posCrossRef[this.secCount]=e,this.subGraphs[e].id===t)return{result:!0,count:0};let i=0,n=1;for(;i<s.length;){const e=this.getPosForId(s[i]);if(e>=0){const s=this.indexNodes2(t,e);if(s.result)return{result:!0,count:n+s.count};n+=s.count}i+=1}return{result:!1,count:n}}getDepthFirstPos(t){return this.posCrossRef[t]}indexNodes(){this.secCount=-1,this.subGraphs.length>0&&this.indexNodes2("none",this.subGraphs.length-1)}getSubGraphs(){return this.subGraphs}firstGraph(){return!!this.firstGraphFlag&&(this.firstGraphFlag=!1,!0)}destructStartLink(t){let e=t.trim(),s="arrow_open";switch(e[0]){case"<":s="arrow_point",e=e.slice(1);break;case"x":s="arrow_cross",e=e.slice(1);break;case"o":s="arrow_circle",e=e.slice(1)}let i="normal";return e.includes("=")&&(i="thick"),e.includes(".")&&(i="dotted"),{type:s,stroke:i}}countChar(t,e){const s=e.length;let i=0;for(let n=0;n<s;++n)e[n]===t&&++i;return i}destructEndLink(t){const e=t.trim();let s=e.slice(0,-1),i="arrow_open";switch(e.slice(-1)){case"x":i="arrow_cross",e.startsWith("x")&&(i="double_"+i,s=s.slice(1));break;case">":i="arrow_point",e.startsWith("<")&&(i="double_"+i,s=s.slice(1));break;case"o":i="arrow_circle",e.startsWith("o")&&(i="double_"+i,s=s.slice(1))}let n="normal",r=s.length-1;s.startsWith("=")&&(n="thick"),s.startsWith("~")&&(n="invisible");const a=this.countChar(".",s);return a&&(n="dotted",r=a),{type:i,stroke:n,length:r}}destructLink(t,e){const s=this.destructEndLink(t);let i;if(e){if(i=this.destructStartLink(e),i.stroke!==s.stroke)return{type:"INVALID",stroke:"INVALID"};if("arrow_open"===i.type)i.type=s.type;else{if(i.type!==s.type)return{type:"INVALID",stroke:"INVALID"};i.type="double_"+i.type}return"double_arrow"===i.type&&(i.type="double_arrow_point"),i.length=s.length,i}return s}exists(t,e){for(const s of t)if(s.nodes.includes(e))return!0;return!1}makeUniq(t,e){const s=[];return t.nodes.forEach((i,n)=>{this.exists(e,i)||s.push(t.nodes[n])}),{nodes:s}}getTypeFromVertex(t){if(t.img)return"imageSquare";if(t.icon)return"circle"===t.form?"iconCircle":"square"===t.form?"iconSquare":"rounded"===t.form?"iconRounded":"icon";switch(t.type){case"square":case void 0:return"squareRect";case"round":return"roundedRect";case"ellipse":return"ellipse";default:return t.type}}findNode(t,e){return t.find(t=>t.id===e)}destructEdgeType(t){let e="none",s="arrow_point";switch(t){case"arrow_point":case"arrow_circle":case"arrow_cross":s=t;break;case"double_arrow_point":case"double_arrow_circle":case"double_arrow_cross":e=t.replace("double_",""),s=e}return{arrowTypeStart:e,arrowTypeEnd:s}}addNodeFromVertex(t,e,s,i,n,r){const a=s.get(t.id),u=i.get(t.id)??!1,o=this.findNode(e,t.id);if(o)o.cssStyles=t.styles,o.cssCompiledStyles=this.getCompiledStyles(t.classes),o.cssClasses=t.classes.join(" ");else{const s={id:t.id,label:t.text,labelType:t.labelType,labelStyle:"",parentId:a,padding:n.flowchart?.padding||8,cssStyles:t.styles,cssCompiledStyles:this.getCompiledStyles(["default","node",...t.classes]),cssClasses:"default "+t.classes.join(" "),dir:t.dir,domId:t.domId,look:r,link:t.link,linkTarget:t.linkTarget,tooltip:this.getTooltip(t.id),icon:t.icon,pos:t.pos,img:t.img,assetWidth:t.assetWidth,assetHeight:t.assetHeight,constraint:t.constraint};u?e.push({...s,isGroup:!0,shape:"rect"}):e.push({...s,isGroup:!1,shape:this.getTypeFromVertex(t)})}}getCompiledStyles(t){let e=[];for(const s of t){const t=this.classes.get(s);t?.styles&&(e=[...e,...t.styles??[]].map(t=>t.trim())),t?.textStyles&&(e=[...e,...t.textStyles??[]].map(t=>t.trim()))}return e}getData(){const t=(0,h.D7)(),e=[],s=[],i=this.getSubGraphs(),n=new Map,r=new Map;for(let u=i.length-1;u>=0;u--){const t=i[u];t.nodes.length>0&&r.set(t.id,!0);for(const e of t.nodes)n.set(e,t.id)}for(let u=i.length-1;u>=0;u--){const s=i[u];e.push({id:s.id,label:s.title,labelStyle:"",labelType:s.labelType,parentId:n.get(s.id),padding:8,cssCompiledStyles:this.getCompiledStyles(s.classes),cssClasses:s.classes.join(" "),shape:"rect",dir:s.dir,isGroup:!0,look:t.look})}this.getVertices().forEach(s=>{this.addNodeFromVertex(s,e,n,r,t,t.look||"classic")});const a=this.getEdges();return a.forEach((e,i)=>{const{arrowTypeStart:n,arrowTypeEnd:r}=this.destructEdgeType(e.type),u=[...a.defaultStyle??[]];e.style&&u.push(...e.style);const o={id:(0,c.rY)(e.start,e.end,{counter:i,prefix:"L"},e.id),isUserDefinedId:e.isUserDefinedId,start:e.start,end:e.end,type:e.type??"normal",label:e.text,labelType:e.labelType,labelpos:"c",thickness:e.stroke,minlen:e.length,classes:"invisible"===e?.stroke?"":"edge-thickness-normal edge-pattern-solid flowchart-link",arrowTypeStart:"invisible"===e?.stroke||"arrow_open"===e?.type?"none":n,arrowTypeEnd:"invisible"===e?.stroke||"arrow_open"===e?.type?"none":r,arrowheadStyle:"fill: #333",cssCompiledStyles:this.getCompiledStyles(e.classes),labelStyle:u,style:u,pattern:e.stroke,look:t.look,animate:e.animate,animation:e.animation,curve:e.interpolate||this.edges.defaultInterpolate||t.flowchart?.curve};s.push(o)}),{nodes:e,edges:s,other:{},config:t}}defaultConfig(){return h.ME.flowchart}},k={getClasses:(0,d.K2)(function(t,e){return e.db.getClasses()},"getClasses"),draw:(0,d.K2)(async function(t,e,s,i){d.Rm.info("REF0:"),d.Rm.info("Drawing state diagram (v2)",e);const{securityLevel:n,flowchart:r,layout:l}=(0,h.D7)();i.db.setDiagramId(e),d.Rm.debug("Before getData: ");const p=i.db.getData();d.Rm.debug("Data: ",p);const g=(0,a.A)(e,n),A=i.db.getDirection();p.type=i.type,p.layoutAlgorithm=(0,o.q7)(l),"dagre"===p.layoutAlgorithm&&"elk"===l&&d.Rm.warn("flowchart-elk was moved to an external package in Mermaid v11. Please refer [release notes](https://github.com/mermaid-js/mermaid/releases/tag/v11.0.0) for more details. This diagram will be rendered using `dagre` layout as a fallback."),p.direction=A,p.nodeSpacing=r?.nodeSpacing||50,p.rankSpacing=r?.rankSpacing||50,p.markers=["point","circle","cross"],p.diagramId=e,d.Rm.debug("REF1:",p),await(0,o.XX)(p,g);const b=p.config.flowchart?.diagramPadding??8;c._K.insertTitle(g,"flowchartTitleText",r?.titleTopMargin||0,i.db.getDiagramTitle()),(0,u.P)(g,b,"flowchart",r?.useMaxWidth||!1)},"draw")},f=function(){var t=(0,d.K2)(function(t,e,s,i){for(s=s||{},i=t.length;i--;s[t[i]]=e);return s},"o"),e=[1,4],s=[1,3],i=[1,5],n=[1,8,9,10,11,27,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],r=[2,2],a=[1,13],u=[1,14],o=[1,15],l=[1,16],c=[1,23],h=[1,25],p=[1,26],g=[1,27],A=[1,50],b=[1,49],y=[1,29],k=[1,30],f=[1,31],m=[1,32],E=[1,33],D=[1,45],C=[1,47],T=[1,43],x=[1,48],F=[1,44],S=[1,51],_=[1,46],B=[1,52],v=[1,53],L=[1,34],w=[1,35],$=[1,36],I=[1,37],R=[1,38],N=[1,58],P=[1,8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],G=[1,62],K=[1,61],O=[1,63],M=[8,9,11,75,77,78],U=[1,79],V=[1,92],W=[1,97],z=[1,96],Y=[1,93],j=[1,89],X=[1,95],H=[1,91],q=[1,98],Q=[1,94],Z=[1,99],J=[1,90],tt=[8,9,10,11,40,75,77,78],et=[8,9,10,11,40,46,75,77,78],st=[8,9,10,11,29,40,44,46,48,50,52,54,56,58,60,63,65,67,68,70,75,77,78,89,102,105,106,109,111,114,115,116],it=[8,9,11,44,60,75,77,78,89,102,105,106,109,111,114,115,116],nt=[44,60,89,102,105,106,109,111,114,115,116],rt=[1,122],at=[1,123],ut=[1,125],ot=[1,124],lt=[44,60,62,74,89,102,105,106,109,111,114,115,116],ct=[1,134],ht=[1,148],dt=[1,149],pt=[1,150],gt=[1,151],At=[1,136],bt=[1,138],yt=[1,142],kt=[1,143],ft=[1,144],mt=[1,145],Et=[1,146],Dt=[1,147],Ct=[1,152],Tt=[1,153],xt=[1,132],Ft=[1,133],St=[1,140],_t=[1,135],Bt=[1,139],vt=[1,137],Lt=[8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],wt=[1,155],$t=[1,157],It=[8,9,11],Rt=[8,9,10,11,14,44,60,89,105,106,109,111,114,115,116],Nt=[1,177],Pt=[1,173],Gt=[1,174],Kt=[1,178],Ot=[1,175],Mt=[1,176],Ut=[77,116,119],Vt=[8,9,10,11,12,14,27,29,32,44,60,75,84,85,86,87,88,89,90,105,109,111,114,115,116],Wt=[10,106],zt=[31,49,51,53,55,57,62,64,66,67,69,71,116,117,118],Yt=[1,248],jt=[1,246],Xt=[1,250],Ht=[1,244],qt=[1,245],Qt=[1,247],Zt=[1,249],Jt=[1,251],te=[1,269],ee=[8,9,11,106],se=[8,9,10,11,60,84,105,106,109,110,111,112],ie={trace:(0,d.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,graphConfig:4,document:5,line:6,statement:7,SEMI:8,NEWLINE:9,SPACE:10,EOF:11,GRAPH:12,NODIR:13,DIR:14,FirstStmtSeparator:15,ending:16,endToken:17,spaceList:18,spaceListNewline:19,vertexStatement:20,separator:21,styleStatement:22,linkStyleStatement:23,classDefStatement:24,classStatement:25,clickStatement:26,subgraph:27,textNoTags:28,SQS:29,text:30,SQE:31,end:32,direction:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,shapeData:39,SHAPE_DATA:40,link:41,node:42,styledVertex:43,AMP:44,vertex:45,STYLE_SEPARATOR:46,idString:47,DOUBLECIRCLESTART:48,DOUBLECIRCLEEND:49,PS:50,PE:51,"(-":52,"-)":53,STADIUMSTART:54,STADIUMEND:55,SUBROUTINESTART:56,SUBROUTINEEND:57,VERTEX_WITH_PROPS_START:58,"NODE_STRING[field]":59,COLON:60,"NODE_STRING[value]":61,PIPE:62,CYLINDERSTART:63,CYLINDEREND:64,DIAMOND_START:65,DIAMOND_STOP:66,TAGEND:67,TRAPSTART:68,TRAPEND:69,INVTRAPSTART:70,INVTRAPEND:71,linkStatement:72,arrowText:73,TESTSTR:74,START_LINK:75,edgeText:76,LINK:77,LINK_ID:78,edgeTextToken:79,STR:80,MD_STR:81,textToken:82,keywords:83,STYLE:84,LINKSTYLE:85,CLASSDEF:86,CLASS:87,CLICK:88,DOWN:89,UP:90,textNoTagsToken:91,stylesOpt:92,"idString[vertex]":93,"idString[class]":94,CALLBACKNAME:95,CALLBACKARGS:96,HREF:97,LINK_TARGET:98,"STR[link]":99,"STR[tooltip]":100,alphaNum:101,DEFAULT:102,numList:103,INTERPOLATE:104,NUM:105,COMMA:106,style:107,styleComponent:108,NODE_STRING:109,UNIT:110,BRKT:111,PCT:112,idStringToken:113,MINUS:114,MULT:115,UNICODE_TEXT:116,TEXT:117,TAGSTART:118,EDGE_TEXT:119,alphaNumToken:120,direction_tb:121,direction_bt:122,direction_rl:123,direction_lr:124,direction_td:125,$accept:0,$end:1},terminals_:{2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"NODIR",14:"DIR",27:"subgraph",29:"SQS",31:"SQE",32:"end",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",40:"SHAPE_DATA",44:"AMP",46:"STYLE_SEPARATOR",48:"DOUBLECIRCLESTART",49:"DOUBLECIRCLEEND",50:"PS",51:"PE",52:"(-",53:"-)",54:"STADIUMSTART",55:"STADIUMEND",56:"SUBROUTINESTART",57:"SUBROUTINEEND",58:"VERTEX_WITH_PROPS_START",59:"NODE_STRING[field]",60:"COLON",61:"NODE_STRING[value]",62:"PIPE",63:"CYLINDERSTART",64:"CYLINDEREND",65:"DIAMOND_START",66:"DIAMOND_STOP",67:"TAGEND",68:"TRAPSTART",69:"TRAPEND",70:"INVTRAPSTART",71:"INVTRAPEND",74:"TESTSTR",75:"START_LINK",77:"LINK",78:"LINK_ID",80:"STR",81:"MD_STR",84:"STYLE",85:"LINKSTYLE",86:"CLASSDEF",87:"CLASS",88:"CLICK",89:"DOWN",90:"UP",93:"idString[vertex]",94:"idString[class]",95:"CALLBACKNAME",96:"CALLBACKARGS",97:"HREF",98:"LINK_TARGET",99:"STR[link]",100:"STR[tooltip]",102:"DEFAULT",104:"INTERPOLATE",105:"NUM",106:"COMMA",109:"NODE_STRING",110:"UNIT",111:"BRKT",112:"PCT",114:"MINUS",115:"MULT",116:"UNICODE_TEXT",117:"TEXT",118:"TAGSTART",119:"EDGE_TEXT",121:"direction_tb",122:"direction_bt",123:"direction_rl",124:"direction_lr",125:"direction_td"},productions_:[0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,2],[4,3],[16,2],[16,1],[17,1],[17,1],[17,1],[15,1],[15,1],[15,2],[19,2],[19,2],[19,1],[19,1],[18,2],[18,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[7,1],[7,2],[7,2],[7,1],[21,1],[21,1],[21,1],[39,2],[39,1],[20,4],[20,3],[20,4],[20,2],[20,2],[20,1],[42,1],[42,6],[42,5],[43,1],[43,3],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,8],[45,4],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,4],[45,4],[45,1],[41,2],[41,3],[41,3],[41,1],[41,3],[41,4],[76,1],[76,2],[76,1],[76,1],[72,1],[72,2],[73,3],[30,1],[30,2],[30,1],[30,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[28,1],[28,2],[28,1],[28,1],[24,5],[25,5],[26,2],[26,4],[26,3],[26,5],[26,3],[26,5],[26,5],[26,7],[26,2],[26,4],[26,2],[26,4],[26,4],[26,6],[22,5],[23,5],[23,5],[23,9],[23,9],[23,7],[23,7],[103,1],[103,3],[92,1],[92,3],[107,1],[107,2],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[82,1],[82,1],[82,1],[82,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[79,1],[79,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[47,1],[47,2],[101,1],[101,2],[33,1],[33,1],[33,1],[33,1],[33,1]],performAction:(0,d.K2)(function(t,e,s,i,n,r,a){var u=r.length-1;switch(n){case 2:case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 3:(!Array.isArray(r[u])||r[u].length>0)&&r[u-1].push(r[u]),this.$=r[u-1];break;case 4:case 183:case 44:case 54:case 76:case 181:this.$=r[u];break;case 11:i.setDirection("TB"),this.$="TB";break;case 12:i.setDirection(r[u-1]),this.$=r[u-1];break;case 27:this.$=r[u-1].nodes;break;case 33:this.$=i.addSubGraph(r[u-6],r[u-1],r[u-4]);break;case 34:this.$=i.addSubGraph(r[u-3],r[u-1],r[u-3]);break;case 35:this.$=i.addSubGraph(void 0,r[u-1],void 0);break;case 37:this.$=r[u].trim(),i.setAccTitle(this.$);break;case 38:case 39:this.$=r[u].trim(),i.setAccDescription(this.$);break;case 43:case 133:this.$=r[u-1]+r[u];break;case 45:i.addVertex(r[u-1][r[u-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,r[u]),i.addLink(r[u-3].stmt,r[u-1],r[u-2]),this.$={stmt:r[u-1],nodes:r[u-1].concat(r[u-3].nodes)};break;case 46:i.addLink(r[u-2].stmt,r[u],r[u-1]),this.$={stmt:r[u],nodes:r[u].concat(r[u-2].nodes)};break;case 47:i.addLink(r[u-3].stmt,r[u-1],r[u-2]),this.$={stmt:r[u-1],nodes:r[u-1].concat(r[u-3].nodes)};break;case 48:this.$={stmt:r[u-1],nodes:r[u-1]};break;case 49:i.addVertex(r[u-1][r[u-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,r[u]),this.$={stmt:r[u-1],nodes:r[u-1],shapeData:r[u]};break;case 50:this.$={stmt:r[u],nodes:r[u]};break;case 51:case 128:case 130:this.$=[r[u]];break;case 52:i.addVertex(r[u-5][r[u-5].length-1],void 0,void 0,void 0,void 0,void 0,void 0,r[u-4]),this.$=r[u-5].concat(r[u]);break;case 53:this.$=r[u-4].concat(r[u]);break;case 55:this.$=r[u-2],i.setClass(r[u-2],r[u]);break;case 56:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"square");break;case 57:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"doublecircle");break;case 58:this.$=r[u-5],i.addVertex(r[u-5],r[u-2],"circle");break;case 59:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"ellipse");break;case 60:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"stadium");break;case 61:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"subroutine");break;case 62:this.$=r[u-7],i.addVertex(r[u-7],r[u-1],"rect",void 0,void 0,void 0,Object.fromEntries([[r[u-5],r[u-3]]]));break;case 63:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"cylinder");break;case 64:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"round");break;case 65:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"diamond");break;case 66:this.$=r[u-5],i.addVertex(r[u-5],r[u-2],"hexagon");break;case 67:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"odd");break;case 68:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"trapezoid");break;case 69:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"inv_trapezoid");break;case 70:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"lean_right");break;case 71:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"lean_left");break;case 72:this.$=r[u],i.addVertex(r[u]);break;case 73:r[u-1].text=r[u],this.$=r[u-1];break;case 74:case 75:r[u-2].text=r[u-1],this.$=r[u-2];break;case 77:var o=i.destructLink(r[u],r[u-2]);this.$={type:o.type,stroke:o.stroke,length:o.length,text:r[u-1]};break;case 78:o=i.destructLink(r[u],r[u-2]);this.$={type:o.type,stroke:o.stroke,length:o.length,text:r[u-1],id:r[u-3]};break;case 79:case 86:case 101:case 103:this.$={text:r[u],type:"text"};break;case 80:case 87:case 102:this.$={text:r[u-1].text+""+r[u],type:r[u-1].type};break;case 81:case 88:this.$={text:r[u],type:"string"};break;case 82:case 89:case 104:this.$={text:r[u],type:"markdown"};break;case 83:o=i.destructLink(r[u]);this.$={type:o.type,stroke:o.stroke,length:o.length};break;case 84:o=i.destructLink(r[u]);this.$={type:o.type,stroke:o.stroke,length:o.length,id:r[u-1]};break;case 85:this.$=r[u-1];break;case 105:this.$=r[u-4],i.addClass(r[u-2],r[u]);break;case 106:this.$=r[u-4],i.setClass(r[u-2],r[u]);break;case 107:case 115:this.$=r[u-1],i.setClickEvent(r[u-1],r[u]);break;case 108:case 116:this.$=r[u-3],i.setClickEvent(r[u-3],r[u-2]),i.setTooltip(r[u-3],r[u]);break;case 109:this.$=r[u-2],i.setClickEvent(r[u-2],r[u-1],r[u]);break;case 110:this.$=r[u-4],i.setClickEvent(r[u-4],r[u-3],r[u-2]),i.setTooltip(r[u-4],r[u]);break;case 111:this.$=r[u-2],i.setLink(r[u-2],r[u]);break;case 112:this.$=r[u-4],i.setLink(r[u-4],r[u-2]),i.setTooltip(r[u-4],r[u]);break;case 113:this.$=r[u-4],i.setLink(r[u-4],r[u-2],r[u]);break;case 114:this.$=r[u-6],i.setLink(r[u-6],r[u-4],r[u]),i.setTooltip(r[u-6],r[u-2]);break;case 117:this.$=r[u-1],i.setLink(r[u-1],r[u]);break;case 118:this.$=r[u-3],i.setLink(r[u-3],r[u-2]),i.setTooltip(r[u-3],r[u]);break;case 119:this.$=r[u-3],i.setLink(r[u-3],r[u-2],r[u]);break;case 120:this.$=r[u-5],i.setLink(r[u-5],r[u-4],r[u]),i.setTooltip(r[u-5],r[u-2]);break;case 121:this.$=r[u-4],i.addVertex(r[u-2],void 0,void 0,r[u]);break;case 122:this.$=r[u-4],i.updateLink([r[u-2]],r[u]);break;case 123:this.$=r[u-4],i.updateLink(r[u-2],r[u]);break;case 124:this.$=r[u-8],i.updateLinkInterpolate([r[u-6]],r[u-2]),i.updateLink([r[u-6]],r[u]);break;case 125:this.$=r[u-8],i.updateLinkInterpolate(r[u-6],r[u-2]),i.updateLink(r[u-6],r[u]);break;case 126:this.$=r[u-6],i.updateLinkInterpolate([r[u-4]],r[u]);break;case 127:this.$=r[u-6],i.updateLinkInterpolate(r[u-4],r[u]);break;case 129:case 131:r[u-2].push(r[u]),this.$=r[u-2];break;case 182:case 184:this.$=r[u-1]+""+r[u];break;case 185:this.$={stmt:"dir",value:"TB"};break;case 186:this.$={stmt:"dir",value:"BT"};break;case 187:this.$={stmt:"dir",value:"RL"};break;case 188:this.$={stmt:"dir",value:"LR"};break;case 189:this.$={stmt:"dir",value:"TD"}}},"anonymous"),table:[{3:1,4:2,9:e,10:s,12:i},{1:[3]},t(n,r,{5:6}),{4:7,9:e,10:s,12:i},{4:8,9:e,10:s,12:i},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:a,9:u,10:o,11:l,20:17,22:18,23:19,24:20,25:21,26:22,27:c,33:24,34:h,36:p,38:g,42:28,43:39,44:A,45:40,47:41,60:b,84:y,85:k,86:f,87:m,88:E,89:D,102:C,105:T,106:x,109:F,111:S,113:42,114:_,115:B,116:v,121:L,122:w,123:$,124:I,125:R},t(n,[2,9]),t(n,[2,10]),t(n,[2,11]),{8:[1,55],9:[1,56],10:N,15:54,18:57},t(P,[2,3]),t(P,[2,4]),t(P,[2,5]),t(P,[2,6]),t(P,[2,7]),t(P,[2,8]),{8:G,9:K,11:O,21:59,41:60,72:64,75:[1,65],77:[1,67],78:[1,66]},{8:G,9:K,11:O,21:68},{8:G,9:K,11:O,21:69},{8:G,9:K,11:O,21:70},{8:G,9:K,11:O,21:71},{8:G,9:K,11:O,21:72},{8:G,9:K,10:[1,73],11:O,21:74},t(P,[2,36]),{35:[1,75]},{37:[1,76]},t(P,[2,39]),t(M,[2,50],{18:77,39:78,10:N,40:U}),{10:[1,80]},{10:[1,81]},{10:[1,82]},{10:[1,83]},{14:V,44:W,60:z,80:[1,87],89:Y,95:[1,84],97:[1,85],101:86,105:j,106:X,109:H,111:q,114:Q,115:Z,116:J,120:88},t(P,[2,185]),t(P,[2,186]),t(P,[2,187]),t(P,[2,188]),t(P,[2,189]),t(tt,[2,51]),t(tt,[2,54],{46:[1,100]}),t(et,[2,72],{113:113,29:[1,101],44:A,48:[1,102],50:[1,103],52:[1,104],54:[1,105],56:[1,106],58:[1,107],60:b,63:[1,108],65:[1,109],67:[1,110],68:[1,111],70:[1,112],89:D,102:C,105:T,106:x,109:F,111:S,114:_,115:B,116:v}),t(st,[2,181]),t(st,[2,142]),t(st,[2,143]),t(st,[2,144]),t(st,[2,145]),t(st,[2,146]),t(st,[2,147]),t(st,[2,148]),t(st,[2,149]),t(st,[2,150]),t(st,[2,151]),t(st,[2,152]),t(n,[2,12]),t(n,[2,18]),t(n,[2,19]),{9:[1,114]},t(it,[2,26],{18:115,10:N}),t(P,[2,27]),{42:116,43:39,44:A,45:40,47:41,60:b,89:D,102:C,105:T,106:x,109:F,111:S,113:42,114:_,115:B,116:v},t(P,[2,40]),t(P,[2,41]),t(P,[2,42]),t(nt,[2,76],{73:117,62:[1,119],74:[1,118]}),{76:120,79:121,80:rt,81:at,116:ut,119:ot},{75:[1,126],77:[1,127]},t(lt,[2,83]),t(P,[2,28]),t(P,[2,29]),t(P,[2,30]),t(P,[2,31]),t(P,[2,32]),{10:ct,12:ht,14:dt,27:pt,28:128,32:gt,44:At,60:bt,75:yt,80:[1,130],81:[1,131],83:141,84:kt,85:ft,86:mt,87:Et,88:Dt,89:Ct,90:Tt,91:129,105:xt,109:Ft,111:St,114:_t,115:Bt,116:vt},t(Lt,r,{5:154}),t(P,[2,37]),t(P,[2,38]),t(M,[2,48],{44:wt}),t(M,[2,49],{18:156,10:N,40:$t}),t(tt,[2,44]),{44:A,47:158,60:b,89:D,102:C,105:T,106:x,109:F,111:S,113:42,114:_,115:B,116:v},{102:[1,159],103:160,105:[1,161]},{44:A,47:162,60:b,89:D,102:C,105:T,106:x,109:F,111:S,113:42,114:_,115:B,116:v},{44:A,47:163,60:b,89:D,102:C,105:T,106:x,109:F,111:S,113:42,114:_,115:B,116:v},t(It,[2,107],{10:[1,164],96:[1,165]}),{80:[1,166]},t(It,[2,115],{120:168,10:[1,167],14:V,44:W,60:z,89:Y,105:j,106:X,109:H,111:q,114:Q,115:Z,116:J}),t(It,[2,117],{10:[1,169]}),t(Rt,[2,183]),t(Rt,[2,170]),t(Rt,[2,171]),t(Rt,[2,172]),t(Rt,[2,173]),t(Rt,[2,174]),t(Rt,[2,175]),t(Rt,[2,176]),t(Rt,[2,177]),t(Rt,[2,178]),t(Rt,[2,179]),t(Rt,[2,180]),{44:A,47:170,60:b,89:D,102:C,105:T,106:x,109:F,111:S,113:42,114:_,115:B,116:v},{30:171,67:Nt,80:Pt,81:Gt,82:172,116:Kt,117:Ot,118:Mt},{30:179,67:Nt,80:Pt,81:Gt,82:172,116:Kt,117:Ot,118:Mt},{30:181,50:[1,180],67:Nt,80:Pt,81:Gt,82:172,116:Kt,117:Ot,118:Mt},{30:182,67:Nt,80:Pt,81:Gt,82:172,116:Kt,117:Ot,118:Mt},{30:183,67:Nt,80:Pt,81:Gt,82:172,116:Kt,117:Ot,118:Mt},{30:184,67:Nt,80:Pt,81:Gt,82:172,116:Kt,117:Ot,118:Mt},{109:[1,185]},{30:186,67:Nt,80:Pt,81:Gt,82:172,116:Kt,117:Ot,118:Mt},{30:187,65:[1,188],67:Nt,80:Pt,81:Gt,82:172,116:Kt,117:Ot,118:Mt},{30:189,67:Nt,80:Pt,81:Gt,82:172,116:Kt,117:Ot,118:Mt},{30:190,67:Nt,80:Pt,81:Gt,82:172,116:Kt,117:Ot,118:Mt},{30:191,67:Nt,80:Pt,81:Gt,82:172,116:Kt,117:Ot,118:Mt},t(st,[2,182]),t(n,[2,20]),t(it,[2,25]),t(M,[2,46],{39:192,18:193,10:N,40:U}),t(nt,[2,73],{10:[1,194]}),{10:[1,195]},{30:196,67:Nt,80:Pt,81:Gt,82:172,116:Kt,117:Ot,118:Mt},{77:[1,197],79:198,116:ut,119:ot},t(Ut,[2,79]),t(Ut,[2,81]),t(Ut,[2,82]),t(Ut,[2,168]),t(Ut,[2,169]),{76:199,79:121,80:rt,81:at,116:ut,119:ot},t(lt,[2,84]),{8:G,9:K,10:ct,11:O,12:ht,14:dt,21:201,27:pt,29:[1,200],32:gt,44:At,60:bt,75:yt,83:141,84:kt,85:ft,86:mt,87:Et,88:Dt,89:Ct,90:Tt,91:202,105:xt,109:Ft,111:St,114:_t,115:Bt,116:vt},t(Vt,[2,101]),t(Vt,[2,103]),t(Vt,[2,104]),t(Vt,[2,157]),t(Vt,[2,158]),t(Vt,[2,159]),t(Vt,[2,160]),t(Vt,[2,161]),t(Vt,[2,162]),t(Vt,[2,163]),t(Vt,[2,164]),t(Vt,[2,165]),t(Vt,[2,166]),t(Vt,[2,167]),t(Vt,[2,90]),t(Vt,[2,91]),t(Vt,[2,92]),t(Vt,[2,93]),t(Vt,[2,94]),t(Vt,[2,95]),t(Vt,[2,96]),t(Vt,[2,97]),t(Vt,[2,98]),t(Vt,[2,99]),t(Vt,[2,100]),{6:11,7:12,8:a,9:u,10:o,11:l,20:17,22:18,23:19,24:20,25:21,26:22,27:c,32:[1,203],33:24,34:h,36:p,38:g,42:28,43:39,44:A,45:40,47:41,60:b,84:y,85:k,86:f,87:m,88:E,89:D,102:C,105:T,106:x,109:F,111:S,113:42,114:_,115:B,116:v,121:L,122:w,123:$,124:I,125:R},{10:N,18:204},{44:[1,205]},t(tt,[2,43]),{10:[1,206],44:A,60:b,89:D,102:C,105:T,106:x,109:F,111:S,113:113,114:_,115:B,116:v},{10:[1,207]},{10:[1,208],106:[1,209]},t(Wt,[2,128]),{10:[1,210],44:A,60:b,89:D,102:C,105:T,106:x,109:F,111:S,113:113,114:_,115:B,116:v},{10:[1,211],44:A,60:b,89:D,102:C,105:T,106:x,109:F,111:S,113:113,114:_,115:B,116:v},{80:[1,212]},t(It,[2,109],{10:[1,213]}),t(It,[2,111],{10:[1,214]}),{80:[1,215]},t(Rt,[2,184]),{80:[1,216],98:[1,217]},t(tt,[2,55],{113:113,44:A,60:b,89:D,102:C,105:T,106:x,109:F,111:S,114:_,115:B,116:v}),{31:[1,218],67:Nt,82:219,116:Kt,117:Ot,118:Mt},t(zt,[2,86]),t(zt,[2,88]),t(zt,[2,89]),t(zt,[2,153]),t(zt,[2,154]),t(zt,[2,155]),t(zt,[2,156]),{49:[1,220],67:Nt,82:219,116:Kt,117:Ot,118:Mt},{30:221,67:Nt,80:Pt,81:Gt,82:172,116:Kt,117:Ot,118:Mt},{51:[1,222],67:Nt,82:219,116:Kt,117:Ot,118:Mt},{53:[1,223],67:Nt,82:219,116:Kt,117:Ot,118:Mt},{55:[1,224],67:Nt,82:219,116:Kt,117:Ot,118:Mt},{57:[1,225],67:Nt,82:219,116:Kt,117:Ot,118:Mt},{60:[1,226]},{64:[1,227],67:Nt,82:219,116:Kt,117:Ot,118:Mt},{66:[1,228],67:Nt,82:219,116:Kt,117:Ot,118:Mt},{30:229,67:Nt,80:Pt,81:Gt,82:172,116:Kt,117:Ot,118:Mt},{31:[1,230],67:Nt,82:219,116:Kt,117:Ot,118:Mt},{67:Nt,69:[1,231],71:[1,232],82:219,116:Kt,117:Ot,118:Mt},{67:Nt,69:[1,234],71:[1,233],82:219,116:Kt,117:Ot,118:Mt},t(M,[2,45],{18:156,10:N,40:$t}),t(M,[2,47],{44:wt}),t(nt,[2,75]),t(nt,[2,74]),{62:[1,235],67:Nt,82:219,116:Kt,117:Ot,118:Mt},t(nt,[2,77]),t(Ut,[2,80]),{77:[1,236],79:198,116:ut,119:ot},{30:237,67:Nt,80:Pt,81:Gt,82:172,116:Kt,117:Ot,118:Mt},t(Lt,r,{5:238}),t(Vt,[2,102]),t(P,[2,35]),{43:239,44:A,45:40,47:41,60:b,89:D,102:C,105:T,106:x,109:F,111:S,113:42,114:_,115:B,116:v},{10:N,18:240},{10:Yt,60:jt,84:Xt,92:241,105:Ht,107:242,108:243,109:qt,110:Qt,111:Zt,112:Jt},{10:Yt,60:jt,84:Xt,92:252,104:[1,253],105:Ht,107:242,108:243,109:qt,110:Qt,111:Zt,112:Jt},{10:Yt,60:jt,84:Xt,92:254,104:[1,255],105:Ht,107:242,108:243,109:qt,110:Qt,111:Zt,112:Jt},{105:[1,256]},{10:Yt,60:jt,84:Xt,92:257,105:Ht,107:242,108:243,109:qt,110:Qt,111:Zt,112:Jt},{44:A,47:258,60:b,89:D,102:C,105:T,106:x,109:F,111:S,113:42,114:_,115:B,116:v},t(It,[2,108]),{80:[1,259]},{80:[1,260],98:[1,261]},t(It,[2,116]),t(It,[2,118],{10:[1,262]}),t(It,[2,119]),t(et,[2,56]),t(zt,[2,87]),t(et,[2,57]),{51:[1,263],67:Nt,82:219,116:Kt,117:Ot,118:Mt},t(et,[2,64]),t(et,[2,59]),t(et,[2,60]),t(et,[2,61]),{109:[1,264]},t(et,[2,63]),t(et,[2,65]),{66:[1,265],67:Nt,82:219,116:Kt,117:Ot,118:Mt},t(et,[2,67]),t(et,[2,68]),t(et,[2,70]),t(et,[2,69]),t(et,[2,71]),t([10,44,60,89,102,105,106,109,111,114,115,116],[2,85]),t(nt,[2,78]),{31:[1,266],67:Nt,82:219,116:Kt,117:Ot,118:Mt},{6:11,7:12,8:a,9:u,10:o,11:l,20:17,22:18,23:19,24:20,25:21,26:22,27:c,32:[1,267],33:24,34:h,36:p,38:g,42:28,43:39,44:A,45:40,47:41,60:b,84:y,85:k,86:f,87:m,88:E,89:D,102:C,105:T,106:x,109:F,111:S,113:42,114:_,115:B,116:v,121:L,122:w,123:$,124:I,125:R},t(tt,[2,53]),{43:268,44:A,45:40,47:41,60:b,89:D,102:C,105:T,106:x,109:F,111:S,113:42,114:_,115:B,116:v},t(It,[2,121],{106:te}),t(ee,[2,130],{108:270,10:Yt,60:jt,84:Xt,105:Ht,109:qt,110:Qt,111:Zt,112:Jt}),t(se,[2,132]),t(se,[2,134]),t(se,[2,135]),t(se,[2,136]),t(se,[2,137]),t(se,[2,138]),t(se,[2,139]),t(se,[2,140]),t(se,[2,141]),t(It,[2,122],{106:te}),{10:[1,271]},t(It,[2,123],{106:te}),{10:[1,272]},t(Wt,[2,129]),t(It,[2,105],{106:te}),t(It,[2,106],{113:113,44:A,60:b,89:D,102:C,105:T,106:x,109:F,111:S,114:_,115:B,116:v}),t(It,[2,110]),t(It,[2,112],{10:[1,273]}),t(It,[2,113]),{98:[1,274]},{51:[1,275]},{62:[1,276]},{66:[1,277]},{8:G,9:K,11:O,21:278},t(P,[2,34]),t(tt,[2,52]),{10:Yt,60:jt,84:Xt,105:Ht,107:279,108:243,109:qt,110:Qt,111:Zt,112:Jt},t(se,[2,133]),{14:V,44:W,60:z,89:Y,101:280,105:j,106:X,109:H,111:q,114:Q,115:Z,116:J,120:88},{14:V,44:W,60:z,89:Y,101:281,105:j,106:X,109:H,111:q,114:Q,115:Z,116:J,120:88},{98:[1,282]},t(It,[2,120]),t(et,[2,58]),{30:283,67:Nt,80:Pt,81:Gt,82:172,116:Kt,117:Ot,118:Mt},t(et,[2,66]),t(Lt,r,{5:284}),t(ee,[2,131],{108:270,10:Yt,60:jt,84:Xt,105:Ht,109:qt,110:Qt,111:Zt,112:Jt}),t(It,[2,126],{120:168,10:[1,285],14:V,44:W,60:z,89:Y,105:j,106:X,109:H,111:q,114:Q,115:Z,116:J}),t(It,[2,127],{120:168,10:[1,286],14:V,44:W,60:z,89:Y,105:j,106:X,109:H,111:q,114:Q,115:Z,116:J}),t(It,[2,114]),{31:[1,287],67:Nt,82:219,116:Kt,117:Ot,118:Mt},{6:11,7:12,8:a,9:u,10:o,11:l,20:17,22:18,23:19,24:20,25:21,26:22,27:c,32:[1,288],33:24,34:h,36:p,38:g,42:28,43:39,44:A,45:40,47:41,60:b,84:y,85:k,86:f,87:m,88:E,89:D,102:C,105:T,106:x,109:F,111:S,113:42,114:_,115:B,116:v,121:L,122:w,123:$,124:I,125:R},{10:Yt,60:jt,84:Xt,92:289,105:Ht,107:242,108:243,109:qt,110:Qt,111:Zt,112:Jt},{10:Yt,60:jt,84:Xt,92:290,105:Ht,107:242,108:243,109:qt,110:Qt,111:Zt,112:Jt},t(et,[2,62]),t(P,[2,33]),t(It,[2,124],{106:te}),t(It,[2,125],{106:te})],defaultActions:{},parseError:(0,d.K2)(function(t,e){if(!e.recoverable){var s=new Error(t);throw s.hash=e,s}this.trace(t)},"parseError"),parse:(0,d.K2)(function(t){var e=this,s=[0],i=[],n=[null],r=[],a=this.table,u="",o=0,l=0,c=0,h=r.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var A in this.yy)Object.prototype.hasOwnProperty.call(this.yy,A)&&(g.yy[A]=this.yy[A]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var b=p.yylloc;r.push(b);var y=p.options&&p.options.ranges;function k(){var t;return"number"!=typeof(t=i.pop()||p.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,d.K2)(function(t){s.length=s.length-2*t,n.length=n.length-t,r.length=r.length-t},"popStack"),(0,d.K2)(k,"lex");for(var f,m,E,D,C,T,x,F,S,_={};;){if(E=s[s.length-1],this.defaultActions[E]?D=this.defaultActions[E]:(null==f&&(f=k()),D=a[E]&&a[E][f]),void 0===D||!D.length||!D[0]){var B="";for(T in S=[],a[E])this.terminals_[T]&&T>2&&S.push("'"+this.terminals_[T]+"'");B=p.showPosition?"Parse error on line "+(o+1)+":\n"+p.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[f]||f)+"'":"Parse error on line "+(o+1)+": Unexpected "+(1==f?"end of input":"'"+(this.terminals_[f]||f)+"'"),this.parseError(B,{text:p.match,token:this.terminals_[f]||f,line:p.yylineno,loc:b,expected:S})}if(D[0]instanceof Array&&D.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E+", token: "+f);switch(D[0]){case 1:s.push(f),n.push(p.yytext),r.push(p.yylloc),s.push(D[1]),f=null,m?(f=m,m=null):(l=p.yyleng,u=p.yytext,o=p.yylineno,b=p.yylloc,c>0&&c--);break;case 2:if(x=this.productions_[D[1]][1],_.$=n[n.length-x],_._$={first_line:r[r.length-(x||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(x||1)].first_column,last_column:r[r.length-1].last_column},y&&(_._$.range=[r[r.length-(x||1)].range[0],r[r.length-1].range[1]]),void 0!==(C=this.performAction.apply(_,[u,l,o,g.yy,D[1],n,r].concat(h))))return C;x&&(s=s.slice(0,-1*x*2),n=n.slice(0,-1*x),r=r.slice(0,-1*x)),s.push(this.productions_[D[1]][0]),n.push(_.$),r.push(_._$),F=a[s[s.length-2]][s[s.length-1]],s.push(F);break;case 3:return!0}}return!0},"parse")},ne=function(){return{EOF:1,parseError:(0,d.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,d.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,d.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,d.K2)(function(t){var e=t.length,s=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,d.K2)(function(){return this._more=!0,this},"more"),reject:(0,d.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,d.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,d.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,d.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,d.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,d.K2)(function(t,e){var s,i,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],s=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var r in n)this[r]=n[r];return!1}return!1},"test_match"),next:(0,d.K2)(function(){if(this.done)return this.EOF;var t,e,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;r<n.length;r++)if((s=this._input.match(this.rules[n[r]]))&&(!e||s[0].length>e[0].length)){if(e=s,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(s,n[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,d.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,d.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,d.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,d.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,d.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,d.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,d.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:(0,d.K2)(function(t,e,s,i){switch(s){case 0:return this.begin("acc_title"),34;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),36;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:case 12:case 14:case 17:case 20:case 23:case 33:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.pushState("shapeData"),e.yytext="",40;case 8:return this.pushState("shapeDataStr"),40;case 9:return this.popState(),40;case 10:const s=/\n\s*/g;return e.yytext=e.yytext.replace(s,"<br/>"),40;case 11:return 40;case 13:this.begin("callbackname");break;case 15:this.popState(),this.begin("callbackargs");break;case 16:return 95;case 18:return 96;case 19:return"MD_STR";case 21:this.begin("md_string");break;case 22:return"STR";case 24:this.pushState("string");break;case 25:return 84;case 26:return 102;case 27:return 85;case 28:return 104;case 29:return 86;case 30:return 87;case 31:return 97;case 32:this.begin("click");break;case 34:return 88;case 35:case 36:case 37:return t.lex.firstGraph()&&this.begin("dir"),12;case 38:return 27;case 39:return 32;case 40:case 41:case 42:case 43:return 98;case 44:return this.popState(),13;case 45:case 46:case 47:case 48:case 49:case 50:case 51:case 52:case 53:case 54:return this.popState(),14;case 55:return 121;case 56:return 122;case 57:return 123;case 58:return 124;case 59:return 125;case 60:return 78;case 61:return 105;case 62:case 103:return 111;case 63:return 46;case 64:return 60;case 65:case 104:return 44;case 66:return 8;case 67:return 106;case 68:case 102:return 115;case 69:case 72:case 75:return this.popState(),77;case 70:return this.pushState("edgeText"),75;case 71:case 74:case 77:return 119;case 73:return this.pushState("thickEdgeText"),75;case 76:return this.pushState("dottedEdgeText"),75;case 78:return 77;case 79:return this.popState(),53;case 80:case 116:return"TEXT";case 81:return this.pushState("ellipseText"),52;case 82:return this.popState(),55;case 83:return this.pushState("text"),54;case 84:return this.popState(),57;case 85:return this.pushState("text"),56;case 86:return 58;case 87:return this.pushState("text"),67;case 88:return this.popState(),64;case 89:return this.pushState("text"),63;case 90:return this.popState(),49;case 91:return this.pushState("text"),48;case 92:return this.popState(),69;case 93:return this.popState(),71;case 94:return 117;case 95:return this.pushState("trapText"),68;case 96:return this.pushState("trapText"),70;case 97:return 118;case 98:return 67;case 99:return 90;case 100:return"SEP";case 101:return 89;case 105:return 109;case 106:return 114;case 107:return 116;case 108:return this.popState(),62;case 109:return this.pushState("text"),62;case 110:return this.popState(),51;case 111:return this.pushState("text"),50;case 112:return this.popState(),31;case 113:return this.pushState("text"),29;case 114:return this.popState(),66;case 115:return this.pushState("text"),65;case 117:return"QUOTE";case 118:return 9;case 119:return 10;case 120:return 11}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:@\{)/,/^(?:["])/,/^(?:["])/,/^(?:[^\"]+)/,/^(?:[^}^"]+)/,/^(?:\})/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["][`])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:["])/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s])/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:.*direction\s+TD[^\n]*)/,/^(?:[^\s\"]+@(?=[^\{\"]))/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:[^-]|-(?!-)+)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:[^=]|=(?!))/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:[^\.]|\.(?!))/,/^(?:\s*~~[\~]+\s*)/,/^(?:[-/\)][\)])/,/^(?:[^\(\)\[\]\{\}]|!\)+)/,/^(?:\(-)/,/^(?:\]\))/,/^(?:\(\[)/,/^(?:\]\])/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:>)/,/^(?:\)\])/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\(\(\()/,/^(?:[\\(?=\])][\]])/,/^(?:\/(?=\])\])/,/^(?:\/(?!\])|\\(?!\])|[^\\\[\]\(\)\{\}\/]+)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:\*)/,/^(?:#)/,/^(?:&)/,/^(?:([A-Za-z0-9!"\#$%&'*+\.`?\\_\/]|-(?=[^\>\-\.])|(?!))+)/,/^(?:-)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\|)/,/^(?:\))/,/^(?:\()/,/^(?:\])/,/^(?:\[)/,/^(?:(\}))/,/^(?:\{)/,/^(?:[^\[\]\(\)\{\}\|\"]+)/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{shapeDataEndBracket:{rules:[21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},shapeDataStr:{rules:[9,10,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},shapeData:{rules:[8,11,12,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},callbackargs:{rules:[17,18,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},callbackname:{rules:[14,15,16,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},href:{rules:[21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},click:{rules:[21,24,33,34,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},dottedEdgeText:{rules:[21,24,75,77,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},thickEdgeText:{rules:[21,24,72,74,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},edgeText:{rules:[21,24,69,71,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},trapText:{rules:[21,24,78,81,83,85,89,91,92,93,94,95,96,109,111,113,115],inclusive:!1},ellipseText:{rules:[21,24,78,79,80,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},text:{rules:[21,24,78,81,82,83,84,85,88,89,90,91,95,96,108,109,110,111,112,113,114,115,116],inclusive:!1},vertex:{rules:[21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},dir:{rules:[21,24,44,45,46,47,48,49,50,51,52,53,54,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},acc_descr_multiline:{rules:[5,6,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},acc_descr:{rules:[3,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},acc_title:{rules:[1,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},md_string:{rules:[19,20,21,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},string:{rules:[21,22,23,24,78,81,83,85,89,91,95,96,109,111,113,115],inclusive:!1},INITIAL:{rules:[0,2,4,7,13,21,24,25,26,27,28,29,30,31,32,35,36,37,38,39,40,41,42,43,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,72,73,75,76,78,81,83,85,86,87,89,91,95,96,97,98,99,100,101,102,103,104,105,106,107,109,111,113,115,117,118,119,120],inclusive:!0}}}}();function re(){this.yy={}}return ie.lexer=ne,(0,d.K2)(re,"Parser"),re.prototype=ie,ie.Parser=re,new re}();f.parser=f;var m=f,E=Object.assign({},m);E.parse=t=>{const e=t.replace(/}\s*\n/g,"}\n");return m.parse(e)};var D=E,C=(0,d.K2)((t,e)=>{const s=b.A,i=s(t,"r"),n=s(t,"g"),r=s(t,"b");return A.A(i,n,r,e)},"fade"),T=(0,d.K2)(t=>`.label {\n font-family: ${t.fontFamily};\n color: ${t.nodeTextColor||t.textColor};\n }\n .cluster-label text {\n fill: ${t.titleColor};\n }\n .cluster-label span {\n color: ${t.titleColor};\n }\n .cluster-label span p {\n background-color: transparent;\n }\n\n .label text,span {\n fill: ${t.nodeTextColor||t.textColor};\n color: ${t.nodeTextColor||t.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: ${t.strokeWidth??1}px;\n }\n .rough-node .label text , .node .label text, .image-shape .label, .icon-shape .label {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .katex path {\n fill: #000;\n stroke: #000;\n stroke-width: 1px;\n }\n\n .rough-node .label,.node .label, .image-shape .label, .icon-shape .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n\n .root .anchor path {\n fill: ${t.lineColor} !important;\n stroke-width: 0;\n stroke: ${t.lineColor};\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: ${t.strokeWidth??2}px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n p {\n background-color: ${t.edgeLabelBackground};\n }\n rect {\n opacity: 0.5;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${C(t.edgeLabelBackground,.5)};\n // background-color:\n }\n\n .cluster rect {\n fill: ${t.clusterBkg};\n stroke: ${t.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n .cluster span {\n color: ${t.titleColor};\n }\n /* .cluster div {\n color: ${t.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${t.fontFamily};\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n }\n\n rect.text {\n fill: none;\n stroke-width: 0;\n }\n\n .icon-shape, .image-shape {\n background-color: ${t.edgeLabelBackground};\n p {\n background-color: ${t.edgeLabelBackground};\n padding: 2px;\n }\n .label rect {\n opacity: 0.5;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n }\n ${(0,i.o)()}\n`,"getStyles"),x={parser:D,get db(){return new y},renderer:k,styles:T,init:(0,d.K2)(t=>{t.flowchart||(t.flowchart={}),t.layout&&(0,h.XV)({layout:t.layout}),t.flowchart.arrowMarkerAbsolute=t.arrowMarkerAbsolute,(0,h.XV)({flowchart:{arrowMarkerAbsolute:t.arrowMarkerAbsolute}})},"init")}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/4728.e5d8a853.js b/docs/build/assets/js/4728.e5d8a853.js deleted file mode 100644 index 8ab77c572..000000000 --- a/docs/build/assets/js/4728.e5d8a853.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[4728],{4728(t,e,n){n.d(e,{diagram:()=>G});var i=n(2501),s=n(8343),r=n(3706),a=n(797),o=n(451),l=function(){var t=(0,a.K2)(function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},"o"),e=[6,8,10,11,12,14,16,17,18],n=[1,9],i=[1,10],s=[1,11],r=[1,12],o=[1,13],l=[1,14],c={trace:(0,a.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:(0,a.K2)(function(t,e,n,i,s,r,a){var o=r.length-1;switch(s){case 1:return r[o-1];case 2:case 6:case 7:this.$=[];break;case 3:r[o-1].push(r[o]),this.$=r[o-1];break;case 4:case 5:this.$=r[o];break;case 8:i.setDiagramTitle(r[o].substr(6)),this.$=r[o].substr(6);break;case 9:this.$=r[o].trim(),i.setAccTitle(this.$);break;case 10:case 11:this.$=r[o].trim(),i.setAccDescription(this.$);break;case 12:i.addSection(r[o].substr(8)),this.$=r[o].substr(8);break;case 13:i.addTask(r[o-1],r[o]),this.$="task"}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:n,12:i,14:s,16:r,17:o,18:l},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:n,12:i,14:s,16:r,17:o,18:l},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:(0,a.K2)(function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},"parseError"),parse:(0,a.K2)(function(t){var e=this,n=[0],i=[],s=[null],r=[],o=this.table,l="",c=0,h=0,u=0,y=r.slice.call(arguments,1),p=Object.create(this.lexer),d={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(d.yy[f]=this.yy[f]);p.setInput(t,d.yy),d.yy.lexer=p,d.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var g=p.yylloc;r.push(g);var m=p.options&&p.options.ranges;function x(){var t;return"number"!=typeof(t=i.pop()||p.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof d.yy.parseError?this.parseError=d.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,a.K2)(function(t){n.length=n.length-2*t,s.length=s.length-t,r.length=r.length-t},"popStack"),(0,a.K2)(x,"lex");for(var k,_,b,w,v,K,$,T,M,S={};;){if(b=n[n.length-1],this.defaultActions[b]?w=this.defaultActions[b]:(null==k&&(k=x()),w=o[b]&&o[b][k]),void 0===w||!w.length||!w[0]){var C="";for(K in M=[],o[b])this.terminals_[K]&&K>2&&M.push("'"+this.terminals_[K]+"'");C=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+M.join(", ")+", got '"+(this.terminals_[k]||k)+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==k?"end of input":"'"+(this.terminals_[k]||k)+"'"),this.parseError(C,{text:p.match,token:this.terminals_[k]||k,line:p.yylineno,loc:g,expected:M})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+b+", token: "+k);switch(w[0]){case 1:n.push(k),s.push(p.yytext),r.push(p.yylloc),n.push(w[1]),k=null,_?(k=_,_=null):(h=p.yyleng,l=p.yytext,c=p.yylineno,g=p.yylloc,u>0&&u--);break;case 2:if($=this.productions_[w[1]][1],S.$=s[s.length-$],S._$={first_line:r[r.length-($||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-($||1)].first_column,last_column:r[r.length-1].last_column},m&&(S._$.range=[r[r.length-($||1)].range[0],r[r.length-1].range[1]]),void 0!==(v=this.performAction.apply(S,[l,h,c,d.yy,w[1],s,r].concat(y))))return v;$&&(n=n.slice(0,-1*$*2),s=s.slice(0,-1*$),r=r.slice(0,-1*$)),n.push(this.productions_[w[1]][0]),s.push(S.$),r.push(S._$),T=o[n[n.length-2]][n[n.length-1]],n.push(T);break;case 3:return!0}}return!0},"parse")},h=function(){return{EOF:1,parseError:(0,a.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,a.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,a.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,a.K2)(function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,a.K2)(function(){return this._more=!0,this},"more"),reject:(0,a.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,a.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,a.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,a.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,a.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,a.K2)(function(t,e){var n,i,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1},"test_match"),next:(0,a.K2)(function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;r<s.length;r++)if((n=this._input.match(this.rules[s[r]]))&&(!e||n[0].length>e[0].length)){if(e=n,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,s[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,a.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,a.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,a.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,a.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,a.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,a.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,a.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,a.K2)(function(t,e,n,i){switch(n){case 0:case 1:case 3:case 4:break;case 2:return 10;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;case 8:return this.popState(),"acc_title_value";case 9:return this.begin("acc_descr"),14;case 10:return this.popState(),"acc_descr_value";case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 18;case 16:return 19;case 17:return":";case 18:return 6;case 19:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18,19],inclusive:!0}}}}();function u(){this.yy={}}return c.lexer=h,(0,a.K2)(u,"Parser"),u.prototype=c,c.Parser=u,new u}();l.parser=l;var c=l,h="",u=[],y=[],p=[],d=(0,a.K2)(function(){u.length=0,y.length=0,h="",p.length=0,(0,r.IU)()},"clear"),f=(0,a.K2)(function(t){h=t,u.push(t)},"addSection"),g=(0,a.K2)(function(){return u},"getSections"),m=(0,a.K2)(function(){let t=b();let e=0;for(;!t&&e<100;)t=b(),e++;return y.push(...p),y},"getTasks"),x=(0,a.K2)(function(){const t=[];y.forEach(e=>{e.people&&t.push(...e.people)});return[...new Set(t)].sort()},"updateActors"),k=(0,a.K2)(function(t,e){const n=e.substr(1).split(":");let i=0,s=[];1===n.length?(i=Number(n[0]),s=[]):(i=Number(n[0]),s=n[1].split(","));const r=s.map(t=>t.trim()),a={section:h,type:h,people:r,task:t,score:i};p.push(a)},"addTask"),_=(0,a.K2)(function(t){const e={section:h,type:h,description:t,task:t,classes:[]};y.push(e)},"addTaskOrg"),b=(0,a.K2)(function(){const t=(0,a.K2)(function(t){return p[t].processed},"compileTask");let e=!0;for(const[n,i]of p.entries())t(n),e=e&&i.processed;return e},"compileTasks"),w=(0,a.K2)(function(){return x()},"getActors"),v={getConfig:(0,a.K2)(()=>(0,r.D7)().journey,"getConfig"),clear:d,setDiagramTitle:r.ke,getDiagramTitle:r.ab,setAccTitle:r.SV,getAccTitle:r.iN,setAccDescription:r.EI,getAccDescription:r.m7,addSection:f,getSections:g,getTasks:m,addTask:k,addTaskOrg:_,getActors:w},K=(0,a.K2)(t=>`.label {\n font-family: ${t.fontFamily};\n color: ${t.textColor};\n }\n .mouth {\n stroke: #666;\n }\n\n line {\n stroke: ${t.textColor}\n }\n\n .legend {\n fill: ${t.textColor};\n font-family: ${t.fontFamily};\n }\n\n .label text {\n fill: #333;\n }\n .label {\n color: ${t.textColor}\n }\n\n .face {\n ${t.faceColor?`fill: ${t.faceColor}`:"fill: #FFF8DC"};\n stroke: #999;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${t.fontFamily};\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .task-type-0, .section-type-0 {\n ${t.fillType0?`fill: ${t.fillType0}`:""};\n }\n .task-type-1, .section-type-1 {\n ${t.fillType0?`fill: ${t.fillType1}`:""};\n }\n .task-type-2, .section-type-2 {\n ${t.fillType0?`fill: ${t.fillType2}`:""};\n }\n .task-type-3, .section-type-3 {\n ${t.fillType0?`fill: ${t.fillType3}`:""};\n }\n .task-type-4, .section-type-4 {\n ${t.fillType0?`fill: ${t.fillType4}`:""};\n }\n .task-type-5, .section-type-5 {\n ${t.fillType0?`fill: ${t.fillType5}`:""};\n }\n .task-type-6, .section-type-6 {\n ${t.fillType0?`fill: ${t.fillType6}`:""};\n }\n .task-type-7, .section-type-7 {\n ${t.fillType0?`fill: ${t.fillType7}`:""};\n }\n\n .actor-0 {\n ${t.actor0?`fill: ${t.actor0}`:""};\n }\n .actor-1 {\n ${t.actor1?`fill: ${t.actor1}`:""};\n }\n .actor-2 {\n ${t.actor2?`fill: ${t.actor2}`:""};\n }\n .actor-3 {\n ${t.actor3?`fill: ${t.actor3}`:""};\n }\n .actor-4 {\n ${t.actor4?`fill: ${t.actor4}`:""};\n }\n .actor-5 {\n ${t.actor5?`fill: ${t.actor5}`:""};\n }\n ${(0,i.o)()}\n`,"getStyles"),$=(0,a.K2)(function(t,e){return(0,s.tk)(t,e)},"drawRect"),T=(0,a.K2)(function(t,e){const n=15,i=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",n).attr("stroke-width",2).attr("overflow","visible"),s=t.append("g");function r(t){const i=(0,o.JLW)().startAngle(Math.PI/2).endAngle(Math.PI/2*3).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",i).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}function l(t){const i=(0,o.JLW)().startAngle(3*Math.PI/2).endAngle(Math.PI/2*5).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",i).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}function c(t){t.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return s.append("circle").attr("cx",e.cx-5).attr("cy",e.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),s.append("circle").attr("cx",e.cx+5).attr("cy",e.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),(0,a.K2)(r,"smile"),(0,a.K2)(l,"sad"),(0,a.K2)(c,"ambivalent"),e.score>3?r(s):e.score<3?l(s):c(s),i},"drawFace"),M=(0,a.K2)(function(t,e){const n=t.append("circle");return n.attr("cx",e.cx),n.attr("cy",e.cy),n.attr("class","actor-"+e.pos),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("r",e.r),void 0!==n.class&&n.attr("class",n.class),void 0!==e.title&&n.append("title").text(e.title),n},"drawCircle"),S=(0,a.K2)(function(t,e){return(0,s.m)(t,e)},"drawText"),C=(0,a.K2)(function(t,e){function n(t,e,n,i,s){return t+","+e+" "+(t+n)+","+e+" "+(t+n)+","+(e+i-s)+" "+(t+n-1.2*s)+","+(e+i)+" "+t+","+(e+i)}(0,a.K2)(n,"genPoints");const i=t.append("polygon");i.attr("points",n(e.x,e.y,50,20,7)),i.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,S(t,e)},"drawLabel"),E=(0,a.K2)(function(t,e,n){const i=t.append("g"),r=(0,s.PB)();r.x=e.x,r.y=e.y,r.fill=e.fill,r.width=n.width*e.taskCount+n.diagramMarginX*(e.taskCount-1),r.height=n.height,r.class="journey-section section-type-"+e.num,r.rx=3,r.ry=3,$(i,r),j(n)(e.text,i,r.x,r.y,r.width,r.height,{class:"journey-section section-type-"+e.num},n,e.colour)},"drawSection"),I=-1,P=(0,a.K2)(function(t,e,n,i){const r=e.x+n.width/2,a=t.append("g");I++;a.append("line").attr("id",i+"-task"+I).attr("x1",r).attr("y1",e.y).attr("x2",r).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),T(a,{cx:r,cy:300+30*(5-e.score),score:e.score});const o=(0,s.PB)();o.x=e.x,o.y=e.y,o.fill=e.fill,o.width=n.width,o.height=n.height,o.class="task task-type-"+e.num,o.rx=3,o.ry=3,$(a,o);let l=e.x+14;e.people.forEach(t=>{const n=e.actors[t].color,i={cx:l,cy:e.y,r:7,fill:n,stroke:"#000",title:t,pos:e.actors[t].position};M(a,i),l+=10}),j(n)(e.task,a,o.x,o.y,o.width,o.height,{class:"task"},n,e.colour)},"drawTask"),A=(0,a.K2)(function(t,e){(0,s.lC)(t,e)},"drawBackgroundRect"),j=function(){function t(t,e,n,s,r,a,o,l){i(e.append("text").attr("x",n+r/2).attr("y",s+a/2+5).style("font-color",l).style("text-anchor","middle").text(t),o)}function e(t,e,n,s,r,a,o,l,c){const{taskFontSize:h,taskFontFamily:u}=l,y=t.split(/<br\s*\/?>/gi);for(let p=0;p<y.length;p++){const t=p*h-h*(y.length-1)/2,l=e.append("text").attr("x",n+r/2).attr("y",s).attr("fill",c).style("text-anchor","middle").style("font-size",h).style("font-family",u);l.append("tspan").attr("x",n+r/2).attr("dy",t).text(y[p]),l.attr("y",s+a/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),i(l,o)}}function n(t,n,s,r,a,o,l,c){const h=n.append("switch"),u=h.append("foreignObject").attr("x",s).attr("y",r).attr("width",a).attr("height",o).attr("position","fixed").append("xhtml:div").style("display","table").style("height","100%").style("width","100%");u.append("div").attr("class","label").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(t),e(t,h,s,r,a,o,l,c),i(u,l)}function i(t,e){for(const n in e)n in e&&t.attr(n,e[n])}return(0,a.K2)(t,"byText"),(0,a.K2)(e,"byTspan"),(0,a.K2)(n,"byFo"),(0,a.K2)(i,"_setTextAttrs"),function(i){return"fo"===i.textPlacement?n:"old"===i.textPlacement?t:e}}(),L={drawRect:$,drawCircle:M,drawSection:E,drawText:S,drawLabel:C,drawTask:P,drawBackgroundRect:A,initGraphics:(0,a.K2)(function(t,e){I=-1,t.append("defs").append("marker").attr("id",e+"-arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z")},"initGraphics")},B=(0,a.K2)(function(t){Object.keys(t).forEach(function(e){R[e]=t[e]})},"setConf"),F={},V=0;function D(t){const e=(0,r.D7)().journey,n=e.maxLabelWidth;V=0;let i=60;Object.keys(F).forEach(s=>{const r=F[s].color,a={cx:20,cy:i,r:7,fill:r,stroke:"#000",pos:F[s].position};L.drawCircle(t,a);let o=t.append("text").attr("visibility","hidden").text(s);const l=o.node().getBoundingClientRect().width;o.remove();let c=[];if(l<=n)c=[s];else{const e=s.split(" ");let i="";o=t.append("text").attr("visibility","hidden"),e.forEach(t=>{const e=i?`${i} ${t}`:t;o.text(e);if(o.node().getBoundingClientRect().width>n){if(i&&c.push(i),i=t,o.text(t),o.node().getBoundingClientRect().width>n){let e="";for(const i of t)e+=i,o.text(e+"-"),o.node().getBoundingClientRect().width>n&&(c.push(e.slice(0,-1)+"-"),e=i);i=e}}else i=e}),i&&c.push(i),o.remove()}c.forEach((n,s)=>{const r={x:40,y:i+7+20*s,fill:"#666",text:n,textMargin:e.boxTextMargin??5},a=L.drawText(t,r).node().getBoundingClientRect().width;a>V&&a>e.leftMargin-a&&(V=a)}),i+=Math.max(20,20*c.length)})}(0,a.K2)(D,"drawActorLegend");var R=(0,r.D7)().journey,O=0,N=(0,a.K2)(function(t,e,n,i){const s=(0,r.D7)(),a=s.journey.titleColor,l=s.journey.titleFontSize,c=s.journey.titleFontFamily,h=s.securityLevel;let u;"sandbox"===h&&(u=(0,o.Ltv)("#i"+e));const y="sandbox"===h?(0,o.Ltv)(u.nodes()[0].contentDocument.body):(0,o.Ltv)("body");z.init();const p=y.select("#"+e);L.initGraphics(p,e);const d=i.db.getTasks(),f=i.db.getDiagramTitle(),g=i.db.getActors();for(const r in F)delete F[r];let m=0;g.forEach(t=>{F[t]={color:R.actorColours[m%R.actorColours.length],position:m},m++}),D(p),O=R.leftMargin+V,z.insert(0,0,O,50*Object.keys(F).length),q(p,d,0,e);const x=z.getBounds();f&&p.append("text").text(f).attr("x",O).attr("font-size",l).attr("font-weight","bold").attr("y",25).attr("fill",a).attr("font-family",c);const k=x.stopy-x.starty+2*R.diagramMarginY,_=O+x.stopx+2*R.diagramMarginX;(0,r.a$)(p,k,_,R.useMaxWidth),p.append("line").attr("x1",O).attr("y1",4*R.height).attr("x2",_-O-4).attr("y2",4*R.height).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#"+e+"-arrowhead)");const b=f?70:0;p.attr("viewBox",`${x.startx} -25 ${_} ${k+b}`),p.attr("preserveAspectRatio","xMinYMin meet"),p.attr("height",k+b+25)},"draw"),z={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:(0,a.K2)(function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},"init"),updateVal:(0,a.K2)(function(t,e,n,i){void 0===t[e]?t[e]=n:t[e]=i(n,t[e])},"updateVal"),updateBounds:(0,a.K2)(function(t,e,n,i){const s=(0,r.D7)().journey,o=this;let l=0;function c(r){return(0,a.K2)(function(a){l++;const c=o.sequenceItems.length-l+1;o.updateVal(a,"starty",e-c*s.boxMargin,Math.min),o.updateVal(a,"stopy",i+c*s.boxMargin,Math.max),o.updateVal(z.data,"startx",t-c*s.boxMargin,Math.min),o.updateVal(z.data,"stopx",n+c*s.boxMargin,Math.max),"activation"!==r&&(o.updateVal(a,"startx",t-c*s.boxMargin,Math.min),o.updateVal(a,"stopx",n+c*s.boxMargin,Math.max),o.updateVal(z.data,"starty",e-c*s.boxMargin,Math.min),o.updateVal(z.data,"stopy",i+c*s.boxMargin,Math.max))},"updateItemBounds")}(0,a.K2)(c,"updateFn"),this.sequenceItems.forEach(c())},"updateBounds"),insert:(0,a.K2)(function(t,e,n,i){const s=Math.min(t,n),r=Math.max(t,n),a=Math.min(e,i),o=Math.max(e,i);this.updateVal(z.data,"startx",s,Math.min),this.updateVal(z.data,"starty",a,Math.min),this.updateVal(z.data,"stopx",r,Math.max),this.updateVal(z.data,"stopy",o,Math.max),this.updateBounds(s,a,r,o)},"insert"),bumpVerticalPos:(0,a.K2)(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},"bumpVerticalPos"),getVerticalPos:(0,a.K2)(function(){return this.verticalPos},"getVerticalPos"),getBounds:(0,a.K2)(function(){return this.data},"getBounds")},W=R.sectionFills,Y=R.sectionColours,q=(0,a.K2)(function(t,e,n,i){const s=(0,r.D7)().journey;let a="";const o=n+(2*s.height+s.diagramMarginY);let l=0,c="#CCC",h="black",u=0;for(const[r,y]of e.entries()){if(a!==y.section){c=W[l%W.length],u=l%W.length,h=Y[l%Y.length];let n=0;const i=y.section;for(let t=r;t<e.length&&e[t].section==i;t++)n+=1;const o={x:r*s.taskMargin+r*s.width+O,y:50,text:y.section,fill:c,num:u,colour:h,taskCount:n};L.drawSection(t,o,s),a=y.section,l++}const n=y.people.reduce((t,e)=>(F[e]&&(t[e]=F[e]),t),{});y.x=r*s.taskMargin+r*s.width+O,y.y=o,y.width=s.diagramMarginX,y.height=s.diagramMarginY,y.colour=h,y.fill=c,y.num=u,y.actors=n,L.drawTask(t,y,s,i),z.insert(y.x,y.y,y.x+y.width+s.taskMargin,450)}},"drawTasks"),X={setConf:B,draw:N},G={parser:c,db:v,renderer:X,styles:K,init:(0,a.K2)(t=>{X.setConf(t.journey),v.clear()},"init")}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/4737.c12ce803.js b/docs/build/assets/js/4737.c12ce803.js deleted file mode 100644 index 9fd0935cf..000000000 --- a/docs/build/assets/js/4737.c12ce803.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[4737],{4737(a,e,s){s.d(e,{createPieServices:()=>c.f});var c=s(532);s(9302)}}]); \ No newline at end of file diff --git a/docs/build/assets/js/4787.47c183b9.js b/docs/build/assets/js/4787.47c183b9.js deleted file mode 100644 index 477fcf481..000000000 --- a/docs/build/assets/js/4787.47c183b9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[4787],{4787(t,e,s){s.d(e,{Lh:()=>T,NM:()=>k,_$:()=>A,tM:()=>E});var i=s(2501),n=s(8343),a=s(9625),r=s(4345),u=s(3848),l=s(8515),o=s(3706),c=s(797),h=s(451),p=s(9418),d=function(){var t=(0,c.K2)(function(t,e,s,i){for(s=s||{},i=t.length;i--;s[t[i]]=e);return s},"o"),e=[1,18],s=[1,19],i=[1,20],n=[1,41],a=[1,26],r=[1,42],u=[1,24],l=[1,25],o=[1,32],h=[1,33],p=[1,34],d=[1,45],A=[1,35],y=[1,36],g=[1,37],m=[1,38],b=[1,27],C=[1,28],k=[1,29],E=[1,30],f=[1,31],T=[1,44],D=[1,46],F=[1,43],B=[1,47],_=[1,9],S=[1,8,9],$=[1,58],N=[1,59],L=[1,60],x=[1,61],I=[1,62],v=[1,63],O=[1,64],w=[1,8,9,41],R=[1,77],P=[1,8,9,12,13,22,39,41,44,46,68,69,70,71,72,73,74,79,81],M=[1,8,9,12,13,18,20,22,39,41,44,46,47,60,68,69,70,71,72,73,74,79,81,86,100,102,103],K=[13,60,86,100,102,103],G=[13,60,73,74,86,100,102,103],U=[13,60,68,69,70,71,72,86,100,102,103],Y=[1,103],z=[1,121],Q=[1,117],W=[1,113],X=[1,119],j=[1,114],q=[1,115],H=[1,116],V=[1,118],J=[1,120],Z=[22,50,60,61,82,86,87,88,89,90],tt=[1,128],et=[12,39],st=[1,8,9,39,41,44,46],it=[1,8,9,22],nt=[1,153],at=[1,8,9,61],rt=[1,8,9,22,50,60,61,82,86,87,88,89,90],ut={trace:(0,c.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,classLiteralName:17,DOT:18,className:19,GENERICTYPE:20,relationStatement:21,LABEL:22,namespaceStatement:23,classStatement:24,memberStatement:25,annotationStatement:26,clickStatement:27,styleStatement:28,cssClassStatement:29,noteStatement:30,classDefStatement:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,namespaceIdentifier:38,STRUCT_START:39,classStatements:40,STRUCT_STOP:41,NAMESPACE:42,classIdentifier:43,STYLE_SEPARATOR:44,members:45,ANNOTATION_START:46,ANNOTATION_END:47,CLASS:48,emptyBody:49,SPACE:50,MEMBER:51,SEPARATOR:52,relation:53,NOTE_FOR:54,noteText:55,NOTE:56,CLASSDEF:57,classList:58,stylesOpt:59,ALPHA:60,COMMA:61,direction_tb:62,direction_bt:63,direction_rl:64,direction_lr:65,relationType:66,lineType:67,AGGREGATION:68,EXTENSION:69,COMPOSITION:70,DEPENDENCY:71,LOLLIPOP:72,LINE:73,DOTTED_LINE:74,CALLBACK:75,LINK:76,LINK_TARGET:77,CLICK:78,CALLBACK_NAME:79,CALLBACK_ARGS:80,HREF:81,STYLE:82,CSSCLASS:83,style:84,styleComponent:85,NUM:86,COLON:87,UNIT:88,BRKT:89,PCT:90,commentToken:91,textToken:92,graphCodeTokens:93,textNoTagsToken:94,TAGSTART:95,TAGEND:96,"==":97,"--":98,DEFAULT:99,MINUS:100,keywords:101,UNICODE_TEXT:102,BQUOTE_STR:103,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",18:"DOT",20:"GENERICTYPE",22:"LABEL",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",39:"STRUCT_START",41:"STRUCT_STOP",42:"NAMESPACE",44:"STYLE_SEPARATOR",46:"ANNOTATION_START",47:"ANNOTATION_END",48:"CLASS",50:"SPACE",51:"MEMBER",52:"SEPARATOR",54:"NOTE_FOR",56:"NOTE",57:"CLASSDEF",60:"ALPHA",61:"COMMA",62:"direction_tb",63:"direction_bt",64:"direction_rl",65:"direction_lr",68:"AGGREGATION",69:"EXTENSION",70:"COMPOSITION",71:"DEPENDENCY",72:"LOLLIPOP",73:"LINE",74:"DOTTED_LINE",75:"CALLBACK",76:"LINK",77:"LINK_TARGET",78:"CLICK",79:"CALLBACK_NAME",80:"CALLBACK_ARGS",81:"HREF",82:"STYLE",83:"CSSCLASS",86:"NUM",87:"COLON",88:"UNIT",89:"BRKT",90:"PCT",93:"graphCodeTokens",95:"TAGSTART",96:"TAGEND",97:"==",98:"--",99:"DEFAULT",100:"MINUS",101:"keywords",102:"UNICODE_TEXT",103:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,1],[15,3],[15,2],[19,1],[19,3],[19,1],[19,2],[19,2],[19,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[23,4],[23,5],[38,2],[38,3],[40,1],[40,2],[40,3],[40,1],[40,2],[40,3],[40,1],[40,2],[40,3],[24,1],[24,3],[24,4],[24,3],[24,6],[24,4],[24,7],[24,6],[43,2],[43,3],[49,0],[49,2],[49,2],[26,4],[45,1],[45,2],[25,1],[25,2],[25,1],[25,1],[21,3],[21,4],[21,4],[21,5],[30,3],[30,2],[31,3],[58,1],[58,3],[32,1],[32,1],[32,1],[32,1],[53,3],[53,2],[53,2],[53,1],[66,1],[66,1],[66,1],[66,1],[66,1],[67,1],[67,1],[27,3],[27,4],[27,3],[27,4],[27,4],[27,5],[27,3],[27,4],[27,4],[27,5],[27,4],[27,5],[27,5],[27,6],[28,3],[29,3],[59,1],[59,3],[84,1],[84,2],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[91,1],[91,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[94,1],[94,1],[94,1],[94,1],[16,1],[16,1],[16,1],[16,1],[17,1],[55,1]],performAction:(0,c.K2)(function(t,e,s,i,n,a,r){var u=a.length-1;switch(n){case 8:this.$=a[u-1];break;case 9:case 10:case 13:case 15:case 46:this.$=a[u];break;case 11:case 14:this.$=a[u-2]+"."+a[u];break;case 12:case 16:case 110:this.$=a[u-1]+a[u];break;case 17:case 18:this.$=a[u-1]+"~"+a[u]+"~";break;case 19:i.addRelation(a[u]);break;case 20:a[u-1].title=i.cleanupLabel(a[u]),i.addRelation(a[u-1]);break;case 31:this.$=a[u].trim(),i.setAccTitle(this.$);break;case 32:case 33:this.$=a[u].trim(),i.setAccDescription(this.$);break;case 34:i.addClassesToNamespace(a[u-3],a[u-1][0],a[u-1][1]),i.popNamespace();break;case 35:i.addClassesToNamespace(a[u-4],a[u-1][0],a[u-1][1]),i.popNamespace();break;case 36:this.$=i.addNamespace(a[u]);break;case 37:this.$=i.addNamespace(a[u-1],a[u]);break;case 38:this.$=[[a[u]],[]];break;case 39:this.$=[[a[u-1]],[]];break;case 40:a[u][0].unshift(a[u-2]),this.$=a[u];break;case 41:this.$=[[],[a[u]]];break;case 42:this.$=[[],[a[u-1]]];break;case 43:a[u][1].unshift(a[u-2]),this.$=a[u];break;case 44:case 45:this.$=[[],[]];break;case 48:i.setCssClass(a[u-2],a[u]);break;case 49:i.addMembers(a[u-3],a[u-1]);break;case 51:i.setCssClass(a[u-5],a[u-3]),i.addMembers(a[u-5],a[u-1]);break;case 52:i.addAnnotation(a[u-3],a[u-1]);break;case 53:i.addAnnotation(a[u-6],a[u-4]),i.addMembers(a[u-6],a[u-1]);break;case 54:i.addAnnotation(a[u-5],a[u-3]);break;case 55:this.$=a[u],i.addClass(a[u]);break;case 56:this.$=a[u-1],i.addClass(a[u-1]),i.setClassLabel(a[u-1],a[u]);break;case 60:i.addAnnotation(a[u],a[u-2]);break;case 61:case 74:case 107:this.$=[a[u]];break;case 62:a[u].push(a[u-1]),this.$=a[u];break;case 63:case 65:case 66:break;case 64:i.addMember(a[u-1],i.cleanupLabel(a[u]));break;case 67:this.$={id1:a[u-2],id2:a[u],relation:a[u-1],relationTitle1:"none",relationTitle2:"none"};break;case 68:this.$={id1:a[u-3],id2:a[u],relation:a[u-1],relationTitle1:a[u-2],relationTitle2:"none"};break;case 69:this.$={id1:a[u-3],id2:a[u],relation:a[u-2],relationTitle1:"none",relationTitle2:a[u-1]};break;case 70:this.$={id1:a[u-4],id2:a[u],relation:a[u-2],relationTitle1:a[u-3],relationTitle2:a[u-1]};break;case 71:this.$=i.addNote(a[u],a[u-1]);break;case 72:this.$=i.addNote(a[u]);break;case 73:this.$=a[u-2],i.defineClass(a[u-1],a[u]);break;case 75:this.$=a[u-2].concat([a[u]]);break;case 76:i.setDirection("TB");break;case 77:i.setDirection("BT");break;case 78:i.setDirection("RL");break;case 79:i.setDirection("LR");break;case 80:this.$={type1:a[u-2],type2:a[u],lineType:a[u-1]};break;case 81:this.$={type1:"none",type2:a[u],lineType:a[u-1]};break;case 82:this.$={type1:a[u-1],type2:"none",lineType:a[u]};break;case 83:this.$={type1:"none",type2:"none",lineType:a[u]};break;case 84:this.$=i.relationType.AGGREGATION;break;case 85:this.$=i.relationType.EXTENSION;break;case 86:this.$=i.relationType.COMPOSITION;break;case 87:this.$=i.relationType.DEPENDENCY;break;case 88:this.$=i.relationType.LOLLIPOP;break;case 89:this.$=i.lineType.LINE;break;case 90:this.$=i.lineType.DOTTED_LINE;break;case 91:case 97:this.$=a[u-2],i.setClickEvent(a[u-1],a[u]);break;case 92:case 98:this.$=a[u-3],i.setClickEvent(a[u-2],a[u-1]),i.setTooltip(a[u-2],a[u]);break;case 93:this.$=a[u-2],i.setLink(a[u-1],a[u]);break;case 94:this.$=a[u-3],i.setLink(a[u-2],a[u-1],a[u]);break;case 95:this.$=a[u-3],i.setLink(a[u-2],a[u-1]),i.setTooltip(a[u-2],a[u]);break;case 96:this.$=a[u-4],i.setLink(a[u-3],a[u-2],a[u]),i.setTooltip(a[u-3],a[u-1]);break;case 99:this.$=a[u-3],i.setClickEvent(a[u-2],a[u-1],a[u]);break;case 100:this.$=a[u-4],i.setClickEvent(a[u-3],a[u-2],a[u-1]),i.setTooltip(a[u-3],a[u]);break;case 101:this.$=a[u-3],i.setLink(a[u-2],a[u]);break;case 102:this.$=a[u-4],i.setLink(a[u-3],a[u-1],a[u]);break;case 103:this.$=a[u-4],i.setLink(a[u-3],a[u-1]),i.setTooltip(a[u-3],a[u]);break;case 104:this.$=a[u-5],i.setLink(a[u-4],a[u-2],a[u]),i.setTooltip(a[u-4],a[u-1]);break;case 105:this.$=a[u-2],i.setCssStyle(a[u-1],a[u]);break;case 106:i.setCssClass(a[u-1],a[u]);break;case 108:a[u-2].push(a[u]),this.$=a[u-2]}},"anonymous"),table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:e,35:s,37:i,38:22,42:n,43:23,46:a,48:r,51:u,52:l,54:o,56:h,57:p,60:d,62:A,63:y,64:g,65:m,75:b,76:C,78:k,82:E,83:f,86:T,100:D,102:F,103:B},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},t(_,[2,5],{8:[1,48]}),{8:[1,49]},t(S,[2,19],{22:[1,50]}),t(S,[2,21]),t(S,[2,22]),t(S,[2,23]),t(S,[2,24]),t(S,[2,25]),t(S,[2,26]),t(S,[2,27]),t(S,[2,28]),t(S,[2,29]),t(S,[2,30]),{34:[1,51]},{36:[1,52]},t(S,[2,33]),t(S,[2,63],{53:53,66:56,67:57,13:[1,54],22:[1,55],68:$,69:N,70:L,71:x,72:I,73:v,74:O}),{39:[1,65]},t(w,[2,47],{39:[1,67],44:[1,66],46:[1,68]}),t(S,[2,65]),t(S,[2,66]),{16:69,60:d,86:T,100:D,102:F},{16:39,17:40,19:70,60:d,86:T,100:D,102:F,103:B},{16:39,17:40,19:71,60:d,86:T,100:D,102:F,103:B},{16:39,17:40,19:72,60:d,86:T,100:D,102:F,103:B},{60:[1,73]},{13:[1,74]},{16:39,17:40,19:75,60:d,86:T,100:D,102:F,103:B},{13:R,55:76},{58:78,60:[1,79]},t(S,[2,76]),t(S,[2,77]),t(S,[2,78]),t(S,[2,79]),t(P,[2,13],{16:39,17:40,19:81,18:[1,80],20:[1,82],60:d,86:T,100:D,102:F,103:B}),t(P,[2,15],{20:[1,83]}),{15:84,16:85,17:86,60:d,86:T,100:D,102:F,103:B},{16:39,17:40,19:87,60:d,86:T,100:D,102:F,103:B},t(M,[2,133]),t(M,[2,134]),t(M,[2,135]),t(M,[2,136]),t([1,8,9,12,13,20,22,39,41,44,46,68,69,70,71,72,73,74,79,81],[2,137]),t(_,[2,6],{10:5,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,19:21,38:22,43:23,16:39,17:40,5:88,33:e,35:s,37:i,42:n,46:a,48:r,51:u,52:l,54:o,56:h,57:p,60:d,62:A,63:y,64:g,65:m,75:b,76:C,78:k,82:E,83:f,86:T,100:D,102:F,103:B}),{5:89,10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:e,35:s,37:i,38:22,42:n,43:23,46:a,48:r,51:u,52:l,54:o,56:h,57:p,60:d,62:A,63:y,64:g,65:m,75:b,76:C,78:k,82:E,83:f,86:T,100:D,102:F,103:B},t(S,[2,20]),t(S,[2,31]),t(S,[2,32]),{13:[1,91],16:39,17:40,19:90,60:d,86:T,100:D,102:F,103:B},{53:92,66:56,67:57,68:$,69:N,70:L,71:x,72:I,73:v,74:O},t(S,[2,64]),{67:93,73:v,74:O},t(K,[2,83],{66:94,68:$,69:N,70:L,71:x,72:I}),t(G,[2,84]),t(G,[2,85]),t(G,[2,86]),t(G,[2,87]),t(G,[2,88]),t(U,[2,89]),t(U,[2,90]),{8:[1,96],23:99,24:97,30:98,38:22,40:95,42:n,43:23,48:r,54:o,56:h},{16:100,60:d,86:T,100:D,102:F},{41:[1,102],45:101,51:Y},{16:104,60:d,86:T,100:D,102:F},{47:[1,105]},{13:[1,106]},{13:[1,107]},{79:[1,108],81:[1,109]},{22:z,50:Q,59:110,60:W,82:X,84:111,85:112,86:j,87:q,88:H,89:V,90:J},{60:[1,122]},{13:R,55:123},t(w,[2,72]),t(w,[2,138]),{22:z,50:Q,59:124,60:W,61:[1,125],82:X,84:111,85:112,86:j,87:q,88:H,89:V,90:J},t(Z,[2,74]),{16:39,17:40,19:126,60:d,86:T,100:D,102:F,103:B},t(P,[2,16]),t(P,[2,17]),t(P,[2,18]),{11:127,12:tt,39:[2,36]},t(et,[2,9],{16:85,17:86,15:130,18:[1,129],60:d,86:T,100:D,102:F,103:B}),t(et,[2,10]),t(st,[2,55],{11:131,12:tt}),t(_,[2,7]),{9:[1,132]},t(it,[2,67]),{16:39,17:40,19:133,60:d,86:T,100:D,102:F,103:B},{13:[1,135],16:39,17:40,19:134,60:d,86:T,100:D,102:F,103:B},t(K,[2,82],{66:136,68:$,69:N,70:L,71:x,72:I}),t(K,[2,81]),{41:[1,137]},{23:99,24:97,30:98,38:22,40:138,42:n,43:23,48:r,54:o,56:h},{8:[1,139],41:[2,38]},{8:[1,140],41:[2,41]},{8:[1,141],41:[2,44]},t(w,[2,48],{39:[1,142]}),{41:[1,143]},t(w,[2,50]),{41:[2,61],45:144,51:Y},{47:[1,145]},{16:39,17:40,19:146,60:d,86:T,100:D,102:F,103:B},t(S,[2,91],{13:[1,147]}),t(S,[2,93],{13:[1,149],77:[1,148]}),t(S,[2,97],{13:[1,150],80:[1,151]}),{13:[1,152]},t(S,[2,105],{61:nt}),t(at,[2,107],{85:154,22:z,50:Q,60:W,82:X,86:j,87:q,88:H,89:V,90:J}),t(rt,[2,109]),t(rt,[2,111]),t(rt,[2,112]),t(rt,[2,113]),t(rt,[2,114]),t(rt,[2,115]),t(rt,[2,116]),t(rt,[2,117]),t(rt,[2,118]),t(rt,[2,119]),t(S,[2,106]),t(w,[2,71]),t(S,[2,73],{61:nt}),{60:[1,155]},t(P,[2,14]),{39:[2,37]},{13:[1,156]},{15:157,16:85,17:86,60:d,86:T,100:D,102:F,103:B},t(et,[2,12]),t(st,[2,56]),{1:[2,4]},t(it,[2,69]),t(it,[2,68]),{16:39,17:40,19:158,60:d,86:T,100:D,102:F,103:B},t(K,[2,80]),t(w,[2,34]),{41:[1,159]},{23:99,24:97,30:98,38:22,40:160,41:[2,39],42:n,43:23,48:r,54:o,56:h},{23:99,24:97,30:98,38:22,40:161,41:[2,42],42:n,43:23,48:r,54:o,56:h},{23:99,24:97,30:98,38:22,40:162,41:[2,45],42:n,43:23,48:r,54:o,56:h},{45:163,51:Y},t(w,[2,49]),{41:[2,62]},t(w,[2,52],{39:[1,164]}),t(S,[2,60]),t(S,[2,92]),t(S,[2,94]),t(S,[2,95],{77:[1,165]}),t(S,[2,98]),t(S,[2,99],{13:[1,166]}),t(S,[2,101],{13:[1,168],77:[1,167]}),{22:z,50:Q,60:W,82:X,84:169,85:112,86:j,87:q,88:H,89:V,90:J},t(rt,[2,110]),t(Z,[2,75]),{14:[1,170]},t(et,[2,11]),t(it,[2,70]),t(w,[2,35]),{41:[2,40]},{41:[2,43]},{41:[2,46]},{41:[1,171]},{41:[1,173],45:172,51:Y},t(S,[2,96]),t(S,[2,100]),t(S,[2,102]),t(S,[2,103],{77:[1,174]}),t(at,[2,108],{85:154,22:z,50:Q,60:W,82:X,86:j,87:q,88:H,89:V,90:J}),t(st,[2,8]),t(w,[2,51]),{41:[1,175]},t(w,[2,54]),t(S,[2,104]),t(w,[2,53])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],127:[2,37],132:[2,4],144:[2,62],160:[2,40],161:[2,43],162:[2,46]},parseError:(0,c.K2)(function(t,e){if(!e.recoverable){var s=new Error(t);throw s.hash=e,s}this.trace(t)},"parseError"),parse:(0,c.K2)(function(t){var e=this,s=[0],i=[],n=[null],a=[],r=this.table,u="",l=0,o=0,h=0,p=a.slice.call(arguments,1),d=Object.create(this.lexer),A={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(A.yy[y]=this.yy[y]);d.setInput(t,A.yy),A.yy.lexer=d,A.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var g=d.yylloc;a.push(g);var m=d.options&&d.options.ranges;function b(){var t;return"number"!=typeof(t=i.pop()||d.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof A.yy.parseError?this.parseError=A.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,c.K2)(function(t){s.length=s.length-2*t,n.length=n.length-t,a.length=a.length-t},"popStack"),(0,c.K2)(b,"lex");for(var C,k,E,f,T,D,F,B,_,S={};;){if(E=s[s.length-1],this.defaultActions[E]?f=this.defaultActions[E]:(null==C&&(C=b()),f=r[E]&&r[E][C]),void 0===f||!f.length||!f[0]){var $="";for(D in _=[],r[E])this.terminals_[D]&&D>2&&_.push("'"+this.terminals_[D]+"'");$=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+_.join(", ")+", got '"+(this.terminals_[C]||C)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==C?"end of input":"'"+(this.terminals_[C]||C)+"'"),this.parseError($,{text:d.match,token:this.terminals_[C]||C,line:d.yylineno,loc:g,expected:_})}if(f[0]instanceof Array&&f.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E+", token: "+C);switch(f[0]){case 1:s.push(C),n.push(d.yytext),a.push(d.yylloc),s.push(f[1]),C=null,k?(C=k,k=null):(o=d.yyleng,u=d.yytext,l=d.yylineno,g=d.yylloc,h>0&&h--);break;case 2:if(F=this.productions_[f[1]][1],S.$=n[n.length-F],S._$={first_line:a[a.length-(F||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(F||1)].first_column,last_column:a[a.length-1].last_column},m&&(S._$.range=[a[a.length-(F||1)].range[0],a[a.length-1].range[1]]),void 0!==(T=this.performAction.apply(S,[u,o,l,A.yy,f[1],n,a].concat(p))))return T;F&&(s=s.slice(0,-1*F*2),n=n.slice(0,-1*F),a=a.slice(0,-1*F)),s.push(this.productions_[f[1]][0]),n.push(S.$),a.push(S._$),B=r[s[s.length-2]][s[s.length-1]],s.push(B);break;case 3:return!0}}return!0},"parse")},lt=function(){return{EOF:1,parseError:(0,c.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,c.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,c.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,c.K2)(function(t){var e=t.length,s=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,c.K2)(function(){return this._more=!0,this},"more"),reject:(0,c.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,c.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,c.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,c.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,c.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,c.K2)(function(t,e){var s,i,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],s=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var a in n)this[a]=n[a];return!1}return!1},"test_match"),next:(0,c.K2)(function(){if(this.done)return this.EOF;var t,e,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),a=0;a<n.length;a++)if((s=this._input.match(this.rules[n[a]]))&&(!e||s[0].length>e[0].length)){if(e=s,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(s,n[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,c.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,c.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,c.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,c.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,c.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,c.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,c.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:(0,c.K2)(function(t,e,s,i){switch(s){case 0:return 62;case 1:return 63;case 2:return 64;case 3:return 65;case 4:case 5:case 14:case 31:case 37:case 41:case 48:break;case 6:return this.begin("acc_title"),33;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),35;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:case 19:case 22:case 24:case 59:case 62:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:case 36:return 8;case 15:case 16:return 7;case 17:case 38:case 46:return"EDGE_STATE";case 18:this.begin("callback_name");break;case 20:this.popState(),this.begin("callback_args");break;case 21:return 79;case 23:return 80;case 25:return"STR";case 26:this.begin("string");break;case 27:return 82;case 28:return 57;case 29:return this.begin("namespace"),42;case 30:case 40:return this.popState(),8;case 32:return this.begin("namespace-body"),39;case 33:this.popState(),this.less(0);break;case 34:case 44:return this.popState(),41;case 35:case 45:return"EOF_IN_STRUCT";case 39:return this.begin("class"),48;case 42:return this.popState(),this.popState(),41;case 43:return this.begin("class-body"),39;case 47:return"OPEN_IN_STRUCT";case 49:return"MEMBER";case 50:return 83;case 51:return 75;case 52:return 76;case 53:return 78;case 54:return 54;case 55:return 56;case 56:return 46;case 57:return 47;case 58:return 81;case 60:return"GENERICTYPE";case 61:this.begin("generic");break;case 63:return"BQUOTE_STR";case 64:this.begin("bqstring");break;case 65:case 66:case 67:case 68:return 77;case 69:case 70:return 69;case 71:case 72:return 71;case 73:return 70;case 74:return 68;case 75:return 72;case 76:return 73;case 77:return 74;case 78:return 22;case 79:return 44;case 80:return 100;case 81:return 18;case 82:return"PLUS";case 83:return 87;case 84:return 61;case 85:case 86:return 89;case 87:return 90;case 88:case 89:return"EQUALS";case 90:return 60;case 91:return 12;case 92:return 14;case 93:return"PUNCTUATION";case 94:return 86;case 95:return 102;case 96:case 97:return 50;case 98:return 9}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:\[\*\])/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:["])/,/^(?:[^"]*)/,/^(?:["])/,/^(?:style\b)/,/^(?:classDef\b)/,/^(?:namespace\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[{])/,/^(?:[}])/,/^(?:[}])/,/^(?:$)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:\[\*\])/,/^(?:class\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[}])/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\[\*\])/,/^(?:[{])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:href\b)/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:~)/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:[`])/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?::)/,/^(?:,)/,/^(?:#)/,/^(?:#)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:\[)/,/^(?:\])/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:\s)/,/^(?:$)/],conditions:{"namespace-body":{rules:[26,29,34,35,36,37,38,39,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},namespace:{rules:[26,29,30,31,32,33,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},"class-body":{rules:[26,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},class:{rules:[26,40,41,42,43,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},acc_descr_multiline:{rules:[11,12,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},acc_descr:{rules:[9,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},acc_title:{rules:[7,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},callback_args:{rules:[22,23,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},callback_name:{rules:[19,20,21,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},href:{rules:[26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},struct:{rules:[26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},generic:{rules:[26,50,51,52,53,54,55,56,57,58,59,60,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},bqstring:{rules:[26,50,51,52,53,54,55,56,57,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},string:{rules:[24,25,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,26,27,28,29,39,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98],inclusive:!0}}}}();function ot(){this.yy={}}return ut.lexer=lt,(0,c.K2)(ot,"Parser"),ot.prototype=ut,ut.Parser=ot,new ot}();d.parser=d;var A=d,y=["#","+","~","-",""],g=class{static{(0,c.K2)(this,"ClassMember")}constructor(t,e){this.memberType=e,this.visibility="",this.classifier="",this.text="";const s=(0,o.jZ)(t,(0,o.D7)());this.parseMember(s)}getDisplayDetails(){let t=this.visibility+(0,o.QO)(this.id);"method"===this.memberType&&(t+=`(${(0,o.QO)(this.parameters.trim())})`,this.returnType&&(t+=" : "+(0,o.QO)(this.returnType))),t=t.trim();return{displayText:t,cssStyle:this.parseClassifier()}}parseMember(t){let e="";if("method"===this.memberType){const s=/([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/.exec(t);if(s){const t=s[1]?s[1].trim():"";if(y.includes(t)&&(this.visibility=t),this.id=s[2],this.parameters=s[3]?s[3].trim():"",e=s[4]?s[4].trim():"",this.returnType=s[5]?s[5].trim():"",""===e){const t=this.returnType.substring(this.returnType.length-1);/[$*]/.exec(t)&&(e=t,this.returnType=this.returnType.substring(0,this.returnType.length-1))}}}else{const s=t.length,i=t.substring(0,1),n=t.substring(s-1);y.includes(i)&&(this.visibility=i),/[$*]/.exec(n)&&(e=n),this.id=t.substring(""===this.visibility?0:1,""===e?s:s-1)}this.classifier=e,this.id=this.id.startsWith(" ")?" "+this.id.trim():this.id.trim();const s=`${this.visibility?"\\"+this.visibility:""}${(0,o.QO)(this.id)}${"method"===this.memberType?`(${(0,o.QO)(this.parameters)})${this.returnType?" : "+(0,o.QO)(this.returnType):""}`:""}`;this.text=s.replaceAll("<","<").replaceAll(">",">"),this.text.startsWith("\\<")&&(this.text=this.text.replace("\\<","~"))}parseClassifier(){switch(this.classifier){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}}},m="classId-",b=0,C=(0,c.K2)(t=>o.Y2.sanitizeText(t,(0,o.D7)()),"sanitizeText"),k=class t{constructor(){this.relations=[],this.classes=new Map,this.styleClasses=new Map,this.notes=new Map,this.interfaces=[],this.namespaces=new Map,this.namespaceCounter=0,this.namespaceStack=[],this.diagramId="",this.functions=[],this.lineType={LINE:0,DOTTED_LINE:1},this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3,LOLLIPOP:4},this.setupToolTips=(0,c.K2)(t=>{const e=(0,n.Ck)();(0,h.Ltv)(t).select("svg").selectAll("g").filter(function(){return null!==(0,h.Ltv)(this).attr("title")}).on("mouseover",t=>{const s=(0,h.Ltv)(t.currentTarget),i=s.attr("title");if(!i)return;const n=t.currentTarget.getBoundingClientRect();e.transition().duration(200).style("opacity",".9"),e.html(p.A.sanitize(i)).style("left",`${window.scrollX+n.left+n.width/2}px`).style("top",`${window.scrollY+n.bottom+4}px`),s.classed("hover",!0)}).on("mouseout",t=>{e.transition().duration(500).style("opacity",0),(0,h.Ltv)(t.currentTarget).classed("hover",!1)})},"setupToolTips"),this.direction="TB",this.setAccTitle=o.SV,this.getAccTitle=o.iN,this.setAccDescription=o.EI,this.getAccDescription=o.m7,this.setDiagramTitle=o.ke,this.getDiagramTitle=o.ab,this.getConfig=(0,c.K2)(()=>(0,o.D7)().class,"getConfig"),this.functions.push(this.setupToolTips.bind(this)),this.clear(),this.addRelation=this.addRelation.bind(this),this.addClassesToNamespace=this.addClassesToNamespace.bind(this),this.addNamespace=this.addNamespace.bind(this),this.popNamespace=this.popNamespace.bind(this),this.setCssClass=this.setCssClass.bind(this),this.addMembers=this.addMembers.bind(this),this.addClass=this.addClass.bind(this),this.setClassLabel=this.setClassLabel.bind(this),this.addAnnotation=this.addAnnotation.bind(this),this.addMember=this.addMember.bind(this),this.cleanupLabel=this.cleanupLabel.bind(this),this.addNote=this.addNote.bind(this),this.defineClass=this.defineClass.bind(this),this.setDirection=this.setDirection.bind(this),this.setLink=this.setLink.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.clear=this.clear.bind(this),this.setTooltip=this.setTooltip.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setCssStyle=this.setCssStyle.bind(this)}static{(0,c.K2)(this,"ClassDB")}splitClassNameAndType(t){const e=o.Y2.sanitizeText(t,(0,o.D7)());let s="",i=e;if(e.indexOf("~")>0){const t=e.split("~");i=C(t[0]),s=C(t[1])}return{className:i,type:s}}setClassLabel(t,e){const s=o.Y2.sanitizeText(t,(0,o.D7)());e&&(e=C(e));const{className:i}=this.splitClassNameAndType(s);this.classes.get(i).label=e,this.classes.get(i).text=`${e}${this.classes.get(i).type?`<${this.classes.get(i).type}>`:""}`}addClass(t){const e=o.Y2.sanitizeText(t,(0,o.D7)()),{className:s,type:i}=this.splitClassNameAndType(e);if(this.classes.has(s))return;const n=o.Y2.sanitizeText(s,(0,o.D7)());this.classes.set(n,{id:n,type:i,label:n,text:`${n}${i?`<${i}>`:""}`,shape:"classBox",cssClasses:"default",methods:[],members:[],annotations:[],styles:[],domId:m+n+"-"+b}),b++}addInterface(t,e){const s={id:`interface${this.interfaces.length}`,label:t,classId:e};this.interfaces.push(s)}setDiagramId(t){this.diagramId=t}lookUpDomId(t){const e=o.Y2.sanitizeText(t,(0,o.D7)());if(this.classes.has(e)){const t=this.classes.get(e).domId;return this.diagramId?`${this.diagramId}-${t}`:t}throw new Error("Class not found: "+e)}clear(){this.relations=[],this.classes=new Map,this.notes=new Map,this.interfaces=[],this.functions=[],this.functions.push(this.setupToolTips.bind(this)),this.namespaces=new Map,this.namespaceCounter=0,this.namespaceStack=[],this.diagramId="",this.direction="TB",(0,o.IU)()}getClass(t){return this.classes.get(t)}getClasses(){return this.classes}getRelations(){return this.relations}getNote(t){const e="number"==typeof t?`note${t}`:t;return this.notes.get(e)}getNotes(){return this.notes}addRelation(t){c.Rm.debug("Adding relation: "+JSON.stringify(t));const e=[this.relationType.LOLLIPOP,this.relationType.AGGREGATION,this.relationType.COMPOSITION,this.relationType.DEPENDENCY,this.relationType.EXTENSION];t.relation.type1!==this.relationType.LOLLIPOP||e.includes(t.relation.type2)?t.relation.type2!==this.relationType.LOLLIPOP||e.includes(t.relation.type1)?(this.addClass(t.id1),this.addClass(t.id2)):(this.addClass(t.id1),this.addInterface(t.id2,t.id1),t.id2="interface"+(this.interfaces.length-1)):(this.addClass(t.id2),this.addInterface(t.id1,t.id2),t.id1="interface"+(this.interfaces.length-1)),t.id1=this.splitClassNameAndType(t.id1).className,t.id2=this.splitClassNameAndType(t.id2).className,t.relationTitle1=o.Y2.sanitizeText(t.relationTitle1.trim(),(0,o.D7)()),t.relationTitle2=o.Y2.sanitizeText(t.relationTitle2.trim(),(0,o.D7)()),this.relations.push(t)}addAnnotation(t,e){const s=this.splitClassNameAndType(t).className;this.classes.get(s).annotations.push(e)}addMember(t,e){this.addClass(t);const s=this.splitClassNameAndType(t).className,i=this.classes.get(s);if("string"==typeof e){const t=e.trim();t.startsWith("<<")&&t.endsWith(">>")?i.annotations.push(C(t.substring(2,t.length-2))):t.indexOf(")")>0?i.methods.push(new g(t,"method")):t&&i.members.push(new g(t,"attribute"))}}addMembers(t,e){Array.isArray(e)&&(e.reverse(),e.forEach(e=>this.addMember(t,e)))}addNote(t,e){const s=this.notes.size,i={id:`note${s}`,class:e,text:t,index:s};return this.notes.set(i.id,i),i.id}cleanupLabel(t){return t.startsWith(":")&&(t=t.substring(1)),C(t.trim())}setCssClass(t,e){t.split(",").forEach(t=>{let s=t;/\d/.exec(t[0])&&(s=m+s);const i=this.classes.get(s);i&&(i.cssClasses+=" "+e)})}defineClass(t,e){for(const s of t){let t=this.styleClasses.get(s);void 0===t&&(t={id:s,styles:[],textStyles:[]},this.styleClasses.set(s,t)),e&&e.forEach(e=>{if(/color/.exec(e)){const s=e.replace("fill","bgFill");t.textStyles.push(s)}t.styles.push(e)}),this.classes.forEach(t=>{t.cssClasses.includes(s)&&t.styles.push(...e.flatMap(t=>t.split(",")))})}}setTooltip(t,e){t.split(",").forEach(t=>{void 0!==e&&(this.classes.get(t).tooltip=C(e))})}getTooltip(t,e){return e&&this.namespaces.has(e)?this.namespaces.get(e).classes.get(t).tooltip:this.classes.get(t).tooltip}setLink(t,e,s){const i=(0,o.D7)();t.split(",").forEach(t=>{let n=t;/\d/.exec(t[0])&&(n=m+n);const a=this.classes.get(n);a&&(a.link=l._K.formatUrl(e,i),"sandbox"===i.securityLevel?a.linkTarget="_top":a.linkTarget="string"==typeof s?C(s):"_blank")}),this.setCssClass(t,"clickable")}setClickEvent(t,e,s){t.split(",").forEach(t=>{this.setClickFunc(t,e,s),this.classes.get(t).haveCallback=!0}),this.setCssClass(t,"clickable")}setClickFunc(t,e,s){const i=o.Y2.sanitizeText(t,(0,o.D7)());if("loose"!==(0,o.D7)().securityLevel)return;if(void 0===e)return;const n=i;if(this.classes.has(n)){let t=[];if("string"==typeof s){t=s.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let e=0;e<t.length;e++){let s=t[e].trim();s.startsWith('"')&&s.endsWith('"')&&(s=s.substr(1,s.length-2)),t[e]=s}}0===t.length&&t.push(n),this.functions.push(()=>{const s=this.lookUpDomId(n),i=document.querySelector(`[id="${s}"]`);null!==i&&i.addEventListener("click",()=>{l._K.runFunc(e,...t)},!1)})}}bindFunctions(t){this.functions.forEach(e=>{e(t)})}escapeHtml(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}getDirection(){return this.direction}setDirection(t){this.direction=t}static resolveQualifiedId(t,e){const s=e.at(-1);return s?`${s}.${t}`:t}static getAncestorIds(t){const e=t.split("."),s=new Array(e.length);s[0]=e[0];for(let i=1;i<e.length;i++)s[i]=`${s[i-1]}.${e[i]}`;return s}createNamespaceNode(t,e,s,i=!1){return{id:t,label:e,classes:new Map,notes:new Map,children:new Map,domId:m+t+"-"+this.namespaceCounter++,parent:s,explicit:i}}linkParentChild(t,e){const s=this.namespaces.get(t),i=this.namespaces.get(e);s&&i&&(s.children.has(e)||s.children.set(e,i),i.parent??=t)}addNamespace(e,s){const i=t.resolveQualifiedId(e,this.namespaceStack);if(this.namespaceStack.push(i),this.namespaces.has(i)){const t=this.namespaces.get(i);return t.explicit=!0,s&&(t.label=s),i}const n=i.split("."),a=t.getAncestorIds(i);for(let t=0;t<a.length;t++){const e=a[t],i=t>0?a[t-1]:void 0,r=t===a.length-1,u=r&&s?s:n[t];this.namespaces.has(e)?r&&(this.namespaces.get(e).explicit=!0):this.namespaces.set(e,this.createNamespaceNode(e,u,i,r)),i&&this.linkParentChild(i,e)}return i}popNamespace(){this.namespaceStack.pop()}getNamespace(t){return this.namespaces.get(t)}getNamespaces(){return this.namespaces}addClassesToNamespace(t,e,s){if(this.namespaces.has(t)){for(const s of e){const{className:e}=this.splitClassNameAndType(s),i=this.getClass(e);i.parent=t,this.namespaces.get(t).classes.set(e,i)}for(const e of s){const s=this.getNote(e);s.parent=t,this.namespaces.get(t).notes.set(e,s)}}}setCssStyle(t,e){const s=this.classes.get(t);if(e&&s)for(const i of e)i.includes(",")?s.styles.push(...i.split(",")):s.styles.push(i)}getArrowMarker(t){let e;switch(t){case 0:e="aggregation";break;case 1:e="extension";break;case 2:e="composition";break;case 3:e="dependency";break;case 4:e="lollipop";break;default:e="none"}return e}resolveExplicitAncestor(t){let e=t;for(;e;){const t=this.namespaces.get(e);if(!t)return;if(t.explicit)return e;e=t.parent}}getData(){const t=[],e=[],s=(0,o.D7)(),i=s.class?.hierarchicalNamespaces??!0;for(const a of this.namespaces.values()){if(!i&&!a.explicit)continue;const e={id:a.id,label:i?a.label:a.id,isGroup:!0,padding:s.class.padding??16,shape:"rect",cssStyles:[],look:s.look,parentId:i?a.parent:void 0};t.push(e)}for(const a of this.classes.values()){const e=i?a.parent:this.resolveExplicitAncestor(a.parent),n={...a,type:void 0,isGroup:!1,parentId:e,look:s.look};t.push(n)}for(const a of this.notes.values()){const n=i?a.parent:this.resolveExplicitAncestor(a.parent),r={id:a.id,label:a.text,isGroup:!1,shape:"note",padding:s.class.padding??6,cssStyles:["text-align: left","white-space: nowrap",`fill: ${s.themeVariables.noteBkgColor}`,`stroke: ${s.themeVariables.noteBorderColor}`],look:s.look,parentId:n,labelType:"markdown"};t.push(r);const u=this.classes.get(a.class)?.id;if(u){const t={id:`edgeNote${a.index}`,start:a.id,end:u,type:"normal",thickness:"normal",classes:"relation",arrowTypeStart:"none",arrowTypeEnd:"none",arrowheadStyle:"",labelStyle:[""],style:["fill: none"],pattern:"dotted",look:s.look};e.push(t)}}for(const a of this.interfaces){const e={id:a.id,label:a.label,isGroup:!1,shape:"rect",cssStyles:["opacity: 0;"],look:s.look};t.push(e)}let n=0;for(const a of this.relations){n++;const t={id:(0,l.rY)(a.id1,a.id2,{prefix:"id",counter:n}),start:a.id1,end:a.id2,type:"normal",label:a.title,labelpos:"c",thickness:"normal",classes:"relation",arrowTypeStart:this.getArrowMarker(a.relation.type1),arrowTypeEnd:this.getArrowMarker(a.relation.type2),startLabelRight:"none"===a.relationTitle1?"":a.relationTitle1,endLabelLeft:"none"===a.relationTitle2?"":a.relationTitle2,arrowheadStyle:"",labelStyle:["display: inline-block"],style:a.style||"",pattern:1==a.relation.lineType?"dashed":"solid",look:s.look,labelType:"markdown"};e.push(t)}return{nodes:t,edges:e,other:{},config:s,direction:this.getDirection()}}},E=(0,c.K2)(t=>`g.classGroup text {\n fill: ${t.nodeBorder||t.classText};\n stroke: none;\n font-family: ${t.fontFamily};\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n\n}\n\n .cluster-label text {\n fill: ${t.titleColor};\n }\n .cluster-label span {\n color: ${t.titleColor};\n }\n .cluster-label span p {\n background-color: transparent;\n }\n\n .cluster rect {\n fill: ${t.clusterBkg};\n stroke: ${t.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n .cluster span {\n color: ${t.titleColor};\n }\n\n.nodeLabel, .edgeLabel {\n color: ${t.classText};\n}\n\n.noteLabel .nodeLabel, .noteLabel .edgeLabel {\n color: ${t.noteTextColor};\n}\n.edgeLabel .label rect {\n fill: ${t.mainBkg};\n}\n.label text {\n fill: ${t.classText};\n}\n\n.labelBkg {\n background: ${t.mainBkg};\n}\n.edgeLabel .label span {\n background: ${t.mainBkg};\n}\n\n.classTitle {\n font-weight: bolder;\n}\n.node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: ${t.strokeWidth};\n }\n\n\n.divider {\n stroke: ${t.nodeBorder};\n stroke-width: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n}\n\ng.classGroup line {\n stroke: ${t.nodeBorder};\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${t.mainBkg};\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ${t.nodeBorder};\n font-size: 10px;\n}\n\n.relation {\n stroke: ${t.lineColor};\n stroke-width: ${t.strokeWidth};\n fill: none;\n}\n\n.dashed-line{\n stroke-dasharray: 3;\n}\n\n.dotted-line{\n stroke-dasharray: 1 2;\n}\n\n[id$="-compositionStart"], .composition {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n[id$="-compositionEnd"], .composition {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n[id$="-dependencyStart"], .dependency {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n[id$="-dependencyEnd"], .dependency {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n[id$="-extensionStart"], .extension {\n fill: transparent !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n[id$="-extensionEnd"], .extension {\n fill: transparent !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n[id$="-aggregationStart"], .aggregation {\n fill: transparent !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n[id$="-aggregationEnd"], .aggregation {\n fill: transparent !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n[id$="-lollipopStart"], .lollipop {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n[id$="-lollipopEnd"], .lollipop {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n.edgeTerminals {\n font-size: 11px;\n line-height: initial;\n}\n\n.classTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n}\n\n.edgeLabel[data-look="neo"] {\n background-color: ${t.edgeLabelBackground};\n p {\n background-color: ${t.edgeLabelBackground};\n }\n rect {\n opacity: 0.5;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n}\n ${(0,i.o)()}\n`,"getStyles"),f=(0,c.K2)((t,e="TB")=>{if(!t.doc)return e;let s=e;for(const i of t.doc)"dir"===i.stmt&&(s=i.value);return s},"getDir"),T={getClasses:(0,c.K2)(function(t,e){return e.db.getClasses()},"getClasses"),draw:(0,c.K2)(async function(t,e,s,i){c.Rm.info("REF0:"),c.Rm.info("Drawing class diagram (v3)",e);const{securityLevel:n,state:h,layout:p}=(0,o.D7)();i.db.setDiagramId(e);const d=i.db.getData(),A=(0,a.A)(e,n);d.type=i.type,d.layoutAlgorithm=(0,u.q7)(p),d.nodeSpacing=h?.nodeSpacing||50,d.rankSpacing=h?.rankSpacing||50,d.markers=["aggregation","extension","composition","dependency","lollipop"],d.diagramId=e,await(0,u.XX)(d,A);l._K.insertTitle(A,"classDiagramTitleText",h?.titleTopMargin??25,i.db.getDiagramTitle()),(0,r.P)(A,8,"classDiagram",h?.useMaxWidth??!0)},"draw"),getDir:f}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/536.d9657a10.js b/docs/build/assets/js/536.d9657a10.js deleted file mode 100644 index 297ffd8fe..000000000 --- a/docs/build/assets/js/536.d9657a10.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[536],{536(t,n,e){e.d(n,{diagram:()=>at});var i=e(3706),r=e(797),s=e(451);function o(t,n){let e;if(void 0===n)for(const i of t)null!=i&&(e>i||void 0===e&&i>=i)&&(e=i);else{let i=-1;for(let r of t)null!=(r=n(r,++i,t))&&(e>r||void 0===e&&r>=r)&&(e=r)}return e}function l(t){return t.target.depth}function a(t,n){return t.sourceLinks.length?t.depth:n-1}function c(t,n){let e=0;if(void 0===n)for(let i of t)(i=+i)&&(e+=i);else{let i=-1;for(let r of t)(r=+n(r,++i,t))&&(e+=r)}return e}function h(t,n){let e;if(void 0===n)for(const i of t)null!=i&&(e<i||void 0===e&&i>=i)&&(e=i);else{let i=-1;for(let r of t)null!=(r=n(r,++i,t))&&(e<r||void 0===e&&r>=r)&&(e=r)}return e}function u(t){return function(){return t}}function f(t,n){return d(t.source,n.source)||t.index-n.index}function y(t,n){return d(t.target,n.target)||t.index-n.index}function d(t,n){return t.y0-n.y0}function g(t){return t.value}function p(t){return t.index}function _(t){return t.nodes}function k(t){return t.links}function x(t,n){const e=t.get(n);if(!e)throw new Error("missing: "+n);return e}function m({nodes:t}){for(const n of t){let t=n.y0,e=t;for(const i of n.sourceLinks)i.y0=t+i.width/2,t+=i.width;for(const i of n.targetLinks)i.y1=e+i.width/2,e+=i.width}}function b(){let t,n,e,i=0,r=0,s=1,l=1,b=24,v=8,w=p,L=a,S=_,E=k,K=6;function A(){const a={nodes:S.apply(null,arguments),links:E.apply(null,arguments)};return function({nodes:t,links:n}){for(const[e,r]of t.entries())r.index=e,r.sourceLinks=[],r.targetLinks=[];const i=new Map(t.map((n,e)=>[w(n,e,t),n]));for(const[e,r]of n.entries()){r.index=e;let{source:t,target:n}=r;"object"!=typeof t&&(t=r.source=x(i,t)),"object"!=typeof n&&(n=r.target=x(i,n)),t.sourceLinks.push(r),n.targetLinks.push(r)}if(null!=e)for(const{sourceLinks:r,targetLinks:s}of t)r.sort(e),s.sort(e)}(a),function({nodes:t}){for(const n of t)n.value=void 0===n.fixedValue?Math.max(c(n.sourceLinks,g),c(n.targetLinks,g)):n.fixedValue}(a),function({nodes:t}){const n=t.length;let e=new Set(t),i=new Set,r=0;for(;e.size;){for(const t of e){t.depth=r;for(const{target:n}of t.sourceLinks)i.add(n)}if(++r>n)throw new Error("circular link");e=i,i=new Set}}(a),function({nodes:t}){const n=t.length;let e=new Set(t),i=new Set,r=0;for(;e.size;){for(const t of e){t.height=r;for(const{source:n}of t.targetLinks)i.add(n)}if(++r>n)throw new Error("circular link");e=i,i=new Set}}(a),function(e){const a=function({nodes:t}){const e=h(t,t=>t.depth)+1,r=(s-i-b)/(e-1),o=new Array(e);for(const n of t){const t=Math.max(0,Math.min(e-1,Math.floor(L.call(null,n,e))));n.layer=t,n.x0=i+t*r,n.x1=n.x0+b,o[t]?o[t].push(n):o[t]=[n]}if(n)for(const i of o)i.sort(n);return o}(e);t=Math.min(v,(l-r)/(h(a,t=>t.length)-1)),function(n){const e=o(n,n=>(l-r-(n.length-1)*t)/c(n,g));for(const i of n){let n=r;for(const r of i){r.y0=n,r.y1=n+r.value*e,n=r.y1+t;for(const t of r.sourceLinks)t.width=t.value*e}n=(l-n+t)/(i.length+1);for(let t=0;t<i.length;++t){const e=i[t];e.y0+=n*(t+1),e.y1+=n*(t+1)}O(i)}}(a);for(let t=0;t<K;++t){const n=Math.pow(.99,t),e=Math.max(1-n,(t+1)/K);I(a,n,e),M(a,n,e)}}(a),m(a),a}function M(t,e,i){for(let r=1,s=t.length;r<s;++r){const s=t[r];for(const t of s){let n=0,i=0;for(const{source:e,value:s}of t.targetLinks){let r=s*(t.layer-e.layer);n+=$(e,t)*r,i+=r}if(!(i>0))continue;let r=(n/i-t.y0)*e;t.y0+=r,t.y1+=r,N(t)}void 0===n&&s.sort(d),T(s,i)}}function I(t,e,i){for(let r=t.length-2;r>=0;--r){const s=t[r];for(const t of s){let n=0,i=0;for(const{target:e,value:s}of t.sourceLinks){let r=s*(e.layer-t.layer);n+=D(t,e)*r,i+=r}if(!(i>0))continue;let r=(n/i-t.y0)*e;t.y0+=r,t.y1+=r,N(t)}void 0===n&&s.sort(d),T(s,i)}}function T(n,e){const i=n.length>>1,s=n[i];C(n,s.y0-t,i-1,e),P(n,s.y1+t,i+1,e),C(n,l,n.length-1,e),P(n,r,0,e)}function P(n,e,i,r){for(;i<n.length;++i){const s=n[i],o=(e-s.y0)*r;o>1e-6&&(s.y0+=o,s.y1+=o),e=s.y1+t}}function C(n,e,i,r){for(;i>=0;--i){const s=n[i],o=(s.y1-e)*r;o>1e-6&&(s.y0-=o,s.y1-=o),e=s.y0-t}}function N({sourceLinks:t,targetLinks:n}){if(void 0===e){for(const{source:{sourceLinks:t}}of n)t.sort(y);for(const{target:{targetLinks:n}}of t)n.sort(f)}}function O(t){if(void 0===e)for(const{sourceLinks:n,targetLinks:e}of t)n.sort(y),e.sort(f)}function $(n,e){let i=n.y0-(n.sourceLinks.length-1)*t/2;for(const{target:r,width:s}of n.sourceLinks){if(r===e)break;i+=s+t}for(const{source:t,width:r}of e.targetLinks){if(t===n)break;i-=r}return i}function D(n,e){let i=e.y0-(e.targetLinks.length-1)*t/2;for(const{source:r,width:s}of e.targetLinks){if(r===n)break;i+=s+t}for(const{target:t,width:r}of n.sourceLinks){if(t===e)break;i-=r}return i}return A.update=function(t){return m(t),t},A.nodeId=function(t){return arguments.length?(w="function"==typeof t?t:u(t),A):w},A.nodeAlign=function(t){return arguments.length?(L="function"==typeof t?t:u(t),A):L},A.nodeSort=function(t){return arguments.length?(n=t,A):n},A.nodeWidth=function(t){return arguments.length?(b=+t,A):b},A.nodePadding=function(n){return arguments.length?(v=t=+n,A):v},A.nodes=function(t){return arguments.length?(S="function"==typeof t?t:u(t),A):S},A.links=function(t){return arguments.length?(E="function"==typeof t?t:u(t),A):E},A.linkSort=function(t){return arguments.length?(e=t,A):e},A.size=function(t){return arguments.length?(i=r=0,s=+t[0],l=+t[1],A):[s-i,l-r]},A.extent=function(t){return arguments.length?(i=+t[0][0],s=+t[1][0],r=+t[0][1],l=+t[1][1],A):[[i,r],[s,l]]},A.iterations=function(t){return arguments.length?(K=+t,A):K},A}var v=Math.PI,w=2*v,L=1e-6,S=w-L;function E(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function K(){return new E}E.prototype=K.prototype={constructor:E,moveTo:function(t,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,n){this._+="L"+(this._x1=+t)+","+(this._y1=+n)},quadraticCurveTo:function(t,n,e,i){this._+="Q"+ +t+","+ +n+","+(this._x1=+e)+","+(this._y1=+i)},bezierCurveTo:function(t,n,e,i,r,s){this._+="C"+ +t+","+ +n+","+ +e+","+ +i+","+(this._x1=+r)+","+(this._y1=+s)},arcTo:function(t,n,e,i,r){t=+t,n=+n,e=+e,i=+i,r=+r;var s=this._x1,o=this._y1,l=e-t,a=i-n,c=s-t,h=o-n,u=c*c+h*h;if(r<0)throw new Error("negative radius: "+r);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=n);else if(u>L)if(Math.abs(h*l-a*c)>L&&r){var f=e-s,y=i-o,d=l*l+a*a,g=f*f+y*y,p=Math.sqrt(d),_=Math.sqrt(u),k=r*Math.tan((v-Math.acos((d+u-g)/(2*p*_)))/2),x=k/_,m=k/p;Math.abs(x-1)>L&&(this._+="L"+(t+x*c)+","+(n+x*h)),this._+="A"+r+","+r+",0,0,"+ +(h*f>c*y)+","+(this._x1=t+m*l)+","+(this._y1=n+m*a)}else this._+="L"+(this._x1=t)+","+(this._y1=n);else;},arc:function(t,n,e,i,r,s){t=+t,n=+n,s=!!s;var o=(e=+e)*Math.cos(i),l=e*Math.sin(i),a=t+o,c=n+l,h=1^s,u=s?i-r:r-i;if(e<0)throw new Error("negative radius: "+e);null===this._x1?this._+="M"+a+","+c:(Math.abs(this._x1-a)>L||Math.abs(this._y1-c)>L)&&(this._+="L"+a+","+c),e&&(u<0&&(u=u%w+w),u>S?this._+="A"+e+","+e+",0,1,"+h+","+(t-o)+","+(n-l)+"A"+e+","+e+",0,1,"+h+","+(this._x1=a)+","+(this._y1=c):u>L&&(this._+="A"+e+","+e+",0,"+ +(u>=v)+","+h+","+(this._x1=t+e*Math.cos(r))+","+(this._y1=n+e*Math.sin(r))))},rect:function(t,n,e,i){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +e+"v"+ +i+"h"+-e+"Z"},toString:function(){return this._}};const A=K;var M=Array.prototype.slice;function I(t){return function(){return t}}function T(t){return t[0]}function P(t){return t[1]}function C(t){return t.source}function N(t){return t.target}function O(t){var n=C,e=N,i=T,r=P,s=null;function o(){var o,l=M.call(arguments),a=n.apply(this,l),c=e.apply(this,l);if(s||(s=o=A()),t(s,+i.apply(this,(l[0]=a,l)),+r.apply(this,l),+i.apply(this,(l[0]=c,l)),+r.apply(this,l)),o)return s=null,o+""||null}return o.source=function(t){return arguments.length?(n=t,o):n},o.target=function(t){return arguments.length?(e=t,o):e},o.x=function(t){return arguments.length?(i="function"==typeof t?t:I(+t),o):i},o.y=function(t){return arguments.length?(r="function"==typeof t?t:I(+t),o):r},o.context=function(t){return arguments.length?(s=null==t?null:t,o):s},o}function $(t,n,e,i,r){t.moveTo(n,e),t.bezierCurveTo(n=(n+i)/2,e,n,r,i,r)}function D(t){return[t.source.x1,t.y0]}function j(t){return[t.target.x0,t.y1]}function z(){return O($).source(D).target(j)}Object.defineProperty(I,"name",{value:"default",configurable:!0}),Object.defineProperty(z,"name",{value:"default",configurable:!0});var F=function(){var t=(0,r.K2)(function(t,n,e,i){for(e=e||{},i=t.length;i--;e[t[i]]=n);return e},"o"),n=[1,9],e=[1,10],i=[1,5,10,12],s={trace:(0,r.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SANKEY:4,NEWLINE:5,csv:6,opt_eof:7,record:8,csv_tail:9,EOF:10,"field[source]":11,COMMA:12,"field[target]":13,"field[value]":14,field:15,escaped:16,non_escaped:17,DQUOTE:18,ESCAPED_TEXT:19,NON_ESCAPED_TEXT:20,$accept:0,$end:1},terminals_:{2:"error",4:"SANKEY",5:"NEWLINE",10:"EOF",11:"field[source]",12:"COMMA",13:"field[target]",14:"field[value]",18:"DQUOTE",19:"ESCAPED_TEXT",20:"NON_ESCAPED_TEXT"},productions_:[0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[17,1]],performAction:(0,r.K2)(function(t,n,e,i,r,s,o){var l=s.length-1;switch(r){case 7:const t=i.findOrCreateNode(s[l-4].trim().replaceAll('""','"')),n=i.findOrCreateNode(s[l-2].trim().replaceAll('""','"')),e=parseFloat(s[l].trim());i.addLink(t,n,e);break;case 8:case 9:case 11:this.$=s[l];break;case 10:this.$=s[l-1]}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:n,20:e},{1:[2,6],7:11,10:[1,12]},t(e,[2,4],{9:13,5:[1,14]}),{12:[1,15]},t(i,[2,8]),t(i,[2,9]),{19:[1,16]},t(i,[2,11]),{1:[2,1]},{1:[2,5]},t(e,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:n,20:e},{15:18,16:7,17:8,18:n,20:e},{18:[1,19]},t(e,[2,3]),{12:[1,20]},t(i,[2,10]),{15:21,16:7,17:8,18:n,20:e},t([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:(0,r.K2)(function(t,n){if(!n.recoverable){var e=new Error(t);throw e.hash=n,e}this.trace(t)},"parseError"),parse:(0,r.K2)(function(t){var n=this,e=[0],i=[],s=[null],o=[],l=this.table,a="",c=0,h=0,u=0,f=o.slice.call(arguments,1),y=Object.create(this.lexer),d={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(d.yy[g]=this.yy[g]);y.setInput(t,d.yy),d.yy.lexer=y,d.yy.parser=this,void 0===y.yylloc&&(y.yylloc={});var p=y.yylloc;o.push(p);var _=y.options&&y.options.ranges;function k(){var t;return"number"!=typeof(t=i.pop()||y.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=n.symbols_[t]||t),t}"function"==typeof d.yy.parseError?this.parseError=d.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,r.K2)(function(t){e.length=e.length-2*t,s.length=s.length-t,o.length=o.length-t},"popStack"),(0,r.K2)(k,"lex");for(var x,m,b,v,w,L,S,E,K,A={};;){if(b=e[e.length-1],this.defaultActions[b]?v=this.defaultActions[b]:(null==x&&(x=k()),v=l[b]&&l[b][x]),void 0===v||!v.length||!v[0]){var M="";for(L in K=[],l[b])this.terminals_[L]&&L>2&&K.push("'"+this.terminals_[L]+"'");M=y.showPosition?"Parse error on line "+(c+1)+":\n"+y.showPosition()+"\nExpecting "+K.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==x?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(M,{text:y.match,token:this.terminals_[x]||x,line:y.yylineno,loc:p,expected:K})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+b+", token: "+x);switch(v[0]){case 1:e.push(x),s.push(y.yytext),o.push(y.yylloc),e.push(v[1]),x=null,m?(x=m,m=null):(h=y.yyleng,a=y.yytext,c=y.yylineno,p=y.yylloc,u>0&&u--);break;case 2:if(S=this.productions_[v[1]][1],A.$=s[s.length-S],A._$={first_line:o[o.length-(S||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(S||1)].first_column,last_column:o[o.length-1].last_column},_&&(A._$.range=[o[o.length-(S||1)].range[0],o[o.length-1].range[1]]),void 0!==(w=this.performAction.apply(A,[a,h,c,d.yy,v[1],s,o].concat(f))))return w;S&&(e=e.slice(0,-1*S*2),s=s.slice(0,-1*S),o=o.slice(0,-1*S)),e.push(this.productions_[v[1]][0]),s.push(A.$),o.push(A._$),E=l[e[e.length-2]][e[e.length-1]],e.push(E);break;case 3:return!0}}return!0},"parse")},o=function(){return{EOF:1,parseError:(0,r.K2)(function(t,n){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,n)},"parseError"),setInput:(0,r.K2)(function(t,n){return this.yy=n||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,r.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,r.K2)(function(t){var n=t.length,e=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),e.length-1&&(this.yylineno-=e.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:e?(e.length===i.length?this.yylloc.first_column:0)+i[i.length-e.length].length-e[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},"unput"),more:(0,r.K2)(function(){return this._more=!0,this},"more"),reject:(0,r.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,r.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,r.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,r.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,r.K2)(function(){var t=this.pastInput(),n=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+n+"^"},"showPosition"),test_match:(0,r.K2)(function(t,n){var e,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,n,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e)return e;if(this._backtrack){for(var s in r)this[s]=r[s];return!1}return!1},"test_match"),next:(0,r.K2)(function(){if(this.done)return this.EOF;var t,n,e,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),s=0;s<r.length;s++)if((e=this._input.match(this.rules[r[s]]))&&(!n||e[0].length>n[0].length)){if(n=e,i=s,this.options.backtrack_lexer){if(!1!==(t=this.test_match(e,r[s])))return t;if(this._backtrack){n=!1;continue}return!1}if(!this.options.flex)break}return n?!1!==(t=this.test_match(n,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,r.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,r.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,r.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,r.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,r.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,r.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,r.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,r.K2)(function(t,n,e,i){switch(e){case 0:case 1:return this.pushState("csv"),4;case 2:return 10;case 3:return 5;case 4:return 12;case 5:return this.pushState("escaped_text"),18;case 6:return 20;case 7:return this.popState("escaped_text"),18;case 8:return 19}},"anonymous"),rules:[/^(?:sankey-beta\b)/i,/^(?:sankey\b)/i,/^(?:$)/i,/^(?:((\u000D\u000A)|(\u000A)))/i,/^(?:(\u002C))/i,/^(?:(\u0022))/i,/^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/i,/^(?:(\u0022)(?!(\u0022)))/i,/^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/i],conditions:{csv:{rules:[2,3,4,5,6,7,8],inclusive:!1},escaped_text:{rules:[7,8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8],inclusive:!0}}}}();function l(){this.yy={}}return s.lexer=o,(0,r.K2)(l,"Parser"),l.prototype=s,s.Parser=l,new l}();F.parser=F;var U=F,W=[],G=[],V=new Map,X=(0,r.K2)(()=>{W=[],G=[],V=new Map,(0,i.IU)()},"clear"),Y=class{constructor(t,n,e=0){this.source=t,this.target=n,this.value=e}static{(0,r.K2)(this,"SankeyLink")}},q=(0,r.K2)((t,n,e)=>{W.push(new Y(t,n,e))},"addLink"),B=class{constructor(t){this.ID=t}static{(0,r.K2)(this,"SankeyNode")}},Q=(0,r.K2)(t=>{t=i.Y2.sanitizeText(t,(0,i.D7)());let n=V.get(t);return void 0===n&&(n=new B(t),V.set(t,n),G.push(n)),n},"findOrCreateNode"),R=(0,r.K2)(()=>G,"getNodes"),Z=(0,r.K2)(()=>W,"getLinks"),H=(0,r.K2)(()=>({nodes:G.map(t=>({id:t.ID})),links:W.map(t=>({source:t.source.ID,target:t.target.ID,value:t.value}))}),"getGraph"),J={nodesMap:V,getConfig:(0,r.K2)(()=>(0,i.D7)().sankey,"getConfig"),getNodes:R,getLinks:Z,getGraph:H,addLink:q,findOrCreateNode:Q,getAccTitle:i.iN,setAccTitle:i.SV,getAccDescription:i.m7,setAccDescription:i.EI,getDiagramTitle:i.ab,setDiagramTitle:i.ke,clear:X},tt=class t{static{(0,r.K2)(this,"Uid")}static{this.count=0}static next(n){return new t(n+ ++t.count)}constructor(t){this.id=t,this.href=`#${t}`}toString(){return"url("+this.href+")"}},nt={left:function(t){return t.depth},right:function(t,n){return n-1-t.height},center:function(t){return t.targetLinks.length?t.depth:t.sourceLinks.length?o(t.sourceLinks,l)-1:0},justify:a},et=(0,r.K2)(t=>{let n=0,e=0;for(const i of t){const t=i.value??0;t>n&&(n=t,e=i.layer??0)}return e},"findCentralNodeLayer"),it=(0,r.K2)(function(t,n,e,o){const{securityLevel:l,sankey:a}=(0,i.D7)(),c=i.ME.sankey;let h;"sandbox"===l&&(h=(0,s.Ltv)("#i"+n));const u="sandbox"===l?(0,s.Ltv)(h.nodes()[0].contentDocument.body):(0,s.Ltv)("body"),f="sandbox"===l?u.select(`[id="${n}"]`):(0,s.Ltv)(`[id="${n}"]`),y=a?.width??c.width,d=a?.height??c.width,g=a?.useMaxWidth??c.useMaxWidth,p=a?.nodeAlignment??c.nodeAlignment,_=a?.prefix??c.prefix,k=a?.suffix??c.suffix,x=a?.showValues??c.showValues,m=a?.nodeWidth??c.nodeWidth??10,v=a?.nodePadding??c.nodePadding??12,w=a?.labelStyle??c.labelStyle??"legacy",L=a?.nodeColors??{},S=o.db.getGraph(),E=nt[p];b().nodeId(t=>t.id).nodeWidth(m).nodePadding(v+(x?15:0)).nodeAlign(E).extent([[0,0],[y,d]])(S);const K=et(S.nodes),A=(0,s.UMr)(s.zt),M=(0,r.K2)(t=>L[t]??A(t),"getNodeColor");f.append("g").attr("class","nodes").selectAll(".node").data(S.nodes).join("g").attr("class","node").attr("id",t=>(t.uid=tt.next("node-")).id).attr("transform",function(t){return"translate("+t.x0+","+t.y0+")"}).attr("x",t=>t.x0).attr("y",t=>t.y0).append("rect").attr("height",t=>t.y1-t.y0).attr("width",t=>t.x1-t.x0).attr("fill",t=>M(t.id));const I=(0,r.K2)(({id:t,value:n})=>x?`${t}\n${_}${Math.round(100*n)/100}${k}`:t,"getText"),T=(0,r.K2)(t=>{if("outlined"===w){return(t.layer??0)<K?{x:t.x0-6,anchor:"end"}:{x:t.x1+6,anchor:"start"}}return t.x0<y/2?{x:t.x1+6,anchor:"start"}:{x:t.x0-6,anchor:"end"}},"getLabelPosition"),P=f.append("g").attr("class","node-labels").attr("font-size",14),C=(0,r.K2)(t=>P.selectAll(t?`.${t}`:"text").data(S.nodes).join("text").attr("class",t??null).attr("x",t=>T(t).x).attr("y",t=>(t.y1+t.y0)/2).attr("dy",(x?"0":"0.35")+"em").attr("text-anchor",t=>T(t).anchor).text(I),"appendLabel");"outlined"===w?(C("sankey-label-bg"),C("sankey-label-fg")):C();const N=f.append("g").attr("class","links").attr("fill","none").attr("stroke-opacity",.5).selectAll(".link").data(S.links).join("g").attr("class","link").style("mix-blend-mode","multiply"),O=a?.linkColor??"gradient";if("gradient"===O){const t=N.append("linearGradient").attr("id",t=>(t.uid=tt.next("linearGradient-")).id).attr("gradientUnits","userSpaceOnUse").attr("x1",t=>t.source.x1).attr("x2",t=>t.target.x0);t.append("stop").attr("offset","0%").attr("stop-color",t=>M(t.source.id)),t.append("stop").attr("offset","100%").attr("stop-color",t=>M(t.target.id))}let $;switch(O){case"gradient":$=(0,r.K2)(t=>t.uid,"coloring");break;case"source":$=(0,r.K2)(t=>M(t.source.id),"coloring");break;case"target":$=(0,r.K2)(t=>M(t.target.id),"coloring");break;default:$=O}N.append("path").attr("d",z()).attr("stroke",$).attr("stroke-width",t=>Math.max(1,t.width)),(0,i.ot)(void 0,f,0,g)},"draw"),rt={draw:it},st=(0,r.K2)(t=>t.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,"\n").trim(),"prepareTextForParsing"),ot=(0,r.K2)(t=>`.label {\n font-family: ${t.fontFamily};\n }\n\n .node-labels {\n font-family: ${t.fontFamily};\n }\n\n /* Outlined label style - background stroke for better readability */\n .sankey-label-bg {\n stroke: ${t.mainBkg||t.background||"#fff"};\n stroke-width: 4px;\n stroke-linejoin: round;\n paint-order: stroke;\n }\n\n /* Foreground label text */\n .sankey-label-fg {\n fill: ${t.textColor};\n }\n\n /* Node styling */\n .node rect {\n shape-rendering: crispEdges;\n }\n\n /* Link styling */\n .link {\n fill: none;\n stroke-opacity: 0.5;\n mix-blend-mode: multiply;\n }\n`,"getStyles"),lt=U.parse.bind(U);U.parse=t=>lt(st(t));var at={styles:ot,parser:U,db:J,renderer:rt}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/5438.e7e887c8.js b/docs/build/assets/js/5438.e7e887c8.js deleted file mode 100644 index 199572934..000000000 --- a/docs/build/assets/js/5438.e7e887c8.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[5438],{5438(t,e,n){n.d(e,{diagram:()=>N});var i=n(9625),s=n(4345),o=n(3848),r=(n(6615),n(1334),n(273),n(5105),n(8013),n(5739),n(8515),n(3706)),a=n(797);const c=new Uint8Array(16);const l=[];for(let L=0;L<256;++L)l.push((L+256).toString(16).slice(1));function h(t,e=0){return(l[t[e+0]]+l[t[e+1]]+l[t[e+2]]+l[t[e+3]]+"-"+l[t[e+4]]+l[t[e+5]]+"-"+l[t[e+6]]+l[t[e+7]]+"-"+l[t[e+8]]+l[t[e+9]]+"-"+l[t[e+10]]+l[t[e+11]]+l[t[e+12]]+l[t[e+13]]+l[t[e+14]]+l[t[e+15]]).toLowerCase()}const d=function(t,e,n){return e||t||!crypto.randomUUID?function(t,e,n){t=t||{};const i=t.random??t.rng?.()??crypto.getRandomValues(c);if(i.length<16)throw new Error("Random bytes length must be >= 16");if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,e){if((n=n||0)<0||n+16>e.length)throw new RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let t=0;t<16;++t)e[n+t]=i[t];return e}return h(i)}(t,e,n):crypto.randomUUID()};var g=n(3219),u=n(8041),p=n(5263),y=function(){var t=(0,a.K2)(function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},"o"),e=[1,4],n=[1,13],i=[1,12],s=[1,15],o=[1,16],r=[1,20],c=[1,19],l=[6,7,8],h=[1,26],d=[1,24],g=[1,25],u=[6,7,11],p=[1,6,13,15,16,19,22],y=[1,33],m=[1,34],f=[1,6,7,11,13,15,16,19,22],_={trace:(0,a.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:(0,a.K2)(function(t,e,n,i,s,o,r){var a=o.length-1;switch(s){case 6:case 7:return i;case 8:i.getLogger().trace("Stop NL ");break;case 9:i.getLogger().trace("Stop EOF ");break;case 11:i.getLogger().trace("Stop NL2 ");break;case 12:i.getLogger().trace("Stop EOF2 ");break;case 15:i.getLogger().info("Node: ",o[a].id),i.addNode(o[a-1].length,o[a].id,o[a].descr,o[a].type);break;case 16:i.getLogger().trace("Icon: ",o[a]),i.decorateNode({icon:o[a]});break;case 17:case 21:i.decorateNode({class:o[a]});break;case 18:i.getLogger().trace("SPACELIST");break;case 19:i.getLogger().trace("Node: ",o[a].id),i.addNode(0,o[a].id,o[a].descr,o[a].type);break;case 20:i.decorateNode({icon:o[a]});break;case 25:i.getLogger().trace("node found ..",o[a-2]),this.$={id:o[a-1],descr:o[a-1],type:i.getType(o[a-2],o[a])};break;case 26:this.$={id:o[a],descr:o[a],type:i.nodeType.DEFAULT};break;case 27:i.getLogger().trace("node found ..",o[a-3]),this.$={id:o[a-3],descr:o[a-1],type:i.getType(o[a-2],o[a])}}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:n,7:[1,10],9:9,12:11,13:i,14:14,15:s,16:o,17:17,18:18,19:r,22:c},t(l,[2,3]),{1:[2,2]},t(l,[2,4]),t(l,[2,5]),{1:[2,6],6:n,12:21,13:i,14:14,15:s,16:o,17:17,18:18,19:r,22:c},{6:n,9:22,12:11,13:i,14:14,15:s,16:o,17:17,18:18,19:r,22:c},{6:h,7:d,10:23,11:g},t(u,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:r,22:c}),t(u,[2,18]),t(u,[2,19]),t(u,[2,20]),t(u,[2,21]),t(u,[2,23]),t(u,[2,24]),t(u,[2,26],{19:[1,30]}),{20:[1,31]},{6:h,7:d,10:32,11:g},{1:[2,7],6:n,12:21,13:i,14:14,15:s,16:o,17:17,18:18,19:r,22:c},t(p,[2,14],{7:y,11:m}),t(f,[2,8]),t(f,[2,9]),t(f,[2,10]),t(u,[2,15]),t(u,[2,16]),t(u,[2,17]),{20:[1,35]},{21:[1,36]},t(p,[2,13],{7:y,11:m}),t(f,[2,11]),t(f,[2,12]),{21:[1,37]},t(u,[2,25]),t(u,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:(0,a.K2)(function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},"parseError"),parse:(0,a.K2)(function(t){var e=this,n=[0],i=[],s=[null],o=[],r=this.table,c="",l=0,h=0,d=0,g=o.slice.call(arguments,1),u=Object.create(this.lexer),p={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(p.yy[y]=this.yy[y]);u.setInput(t,p.yy),p.yy.lexer=u,p.yy.parser=this,void 0===u.yylloc&&(u.yylloc={});var m=u.yylloc;o.push(m);var f=u.options&&u.options.ranges;function _(){var t;return"number"!=typeof(t=i.pop()||u.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,a.K2)(function(t){n.length=n.length-2*t,s.length=s.length-t,o.length=o.length-t},"popStack"),(0,a.K2)(_,"lex");for(var k,b,E,S,N,L,x,D,I,T={};;){if(E=n[n.length-1],this.defaultActions[E]?S=this.defaultActions[E]:(null==k&&(k=_()),S=r[E]&&r[E][k]),void 0===S||!S.length||!S[0]){var $="";for(L in I=[],r[E])this.terminals_[L]&&L>2&&I.push("'"+this.terminals_[L]+"'");$=u.showPosition?"Parse error on line "+(l+1)+":\n"+u.showPosition()+"\nExpecting "+I.join(", ")+", got '"+(this.terminals_[k]||k)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==k?"end of input":"'"+(this.terminals_[k]||k)+"'"),this.parseError($,{text:u.match,token:this.terminals_[k]||k,line:u.yylineno,loc:m,expected:I})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E+", token: "+k);switch(S[0]){case 1:n.push(k),s.push(u.yytext),o.push(u.yylloc),n.push(S[1]),k=null,b?(k=b,b=null):(h=u.yyleng,c=u.yytext,l=u.yylineno,m=u.yylloc,d>0&&d--);break;case 2:if(x=this.productions_[S[1]][1],T.$=s[s.length-x],T._$={first_line:o[o.length-(x||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(x||1)].first_column,last_column:o[o.length-1].last_column},f&&(T._$.range=[o[o.length-(x||1)].range[0],o[o.length-1].range[1]]),void 0!==(N=this.performAction.apply(T,[c,h,l,p.yy,S[1],s,o].concat(g))))return N;x&&(n=n.slice(0,-1*x*2),s=s.slice(0,-1*x),o=o.slice(0,-1*x)),n.push(this.productions_[S[1]][0]),s.push(T.$),o.push(T._$),D=r[n[n.length-2]][n[n.length-1]],n.push(D);break;case 3:return!0}}return!0},"parse")},k=function(){return{EOF:1,parseError:(0,a.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,a.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,a.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,a.K2)(function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,a.K2)(function(){return this._more=!0,this},"more"),reject:(0,a.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,a.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,a.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,a.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,a.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,a.K2)(function(t,e){var n,i,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var o in s)this[o]=s[o];return!1}return!1},"test_match"),next:(0,a.K2)(function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),o=0;o<s.length;o++)if((n=this._input.match(this.rules[s[o]]))&&(!e||n[0].length>e[0].length)){if(e=n,i=o,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,s[o])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,a.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,a.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,a.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,a.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,a.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,a.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,a.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,a.K2)(function(t,e,n,i){switch(n){case 0:return t.getLogger().trace("Found comment",e.yytext),6;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;case 4:case 23:case 26:this.popState();break;case 5:t.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return t.getLogger().trace("SPACELINE"),6;case 7:return 7;case 8:return 15;case 9:t.getLogger().trace("end icon"),this.popState();break;case 10:return t.getLogger().trace("Exploding node"),this.begin("NODE"),19;case 11:return t.getLogger().trace("Cloud"),this.begin("NODE"),19;case 12:return t.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;case 13:return t.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;case 14:case 15:case 16:case 17:return this.begin("NODE"),19;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 24:t.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return t.getLogger().trace("description:",e.yytext),"NODE_DESCR";case 27:return this.popState(),t.getLogger().trace("node end ))"),"NODE_DEND";case 28:return this.popState(),t.getLogger().trace("node end )"),"NODE_DEND";case 29:return this.popState(),t.getLogger().trace("node end ...",e.yytext),"NODE_DEND";case 30:case 33:case 34:return this.popState(),t.getLogger().trace("node end (("),"NODE_DEND";case 31:case 32:return this.popState(),t.getLogger().trace("node end (-"),"NODE_DEND";case 35:case 36:return t.getLogger().trace("Long description:",e.yytext),20}},"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}}}();function b(){this.yy={}}return _.lexer=k,(0,a.K2)(b,"Parser"),b.prototype=_,_.Parser=b,new b}();y.parser=y;var m=y,f={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},_=class{constructor(){this.nodes=[],this.count=0,this.elements={},this.getLogger=this.getLogger.bind(this),this.nodeType=f,this.clear(),this.getType=this.getType.bind(this),this.getElementById=this.getElementById.bind(this),this.getParent=this.getParent.bind(this),this.getMindmap=this.getMindmap.bind(this),this.addNode=this.addNode.bind(this),this.decorateNode=this.decorateNode.bind(this)}static{(0,a.K2)(this,"MindmapDB")}clear(){this.nodes=[],this.count=0,this.elements={},this.baseLevel=void 0}getParent(t){for(let e=this.nodes.length-1;e>=0;e--)if(this.nodes[e].level<t)return this.nodes[e];return null}getMindmap(){return this.nodes.length>0?this.nodes[0]:null}addNode(t,e,n,i){a.Rm.info("addNode",t,e,n,i);let s=!1;0===this.nodes.length?(this.baseLevel=t,t=0,s=!0):void 0!==this.baseLevel&&(t-=this.baseLevel,s=!1);const o=(0,r.D7)();let c=o.mindmap?.padding??r.UI.mindmap.padding;switch(i){case this.nodeType.ROUNDED_RECT:case this.nodeType.RECT:case this.nodeType.HEXAGON:c*=2}const l={id:this.count++,nodeId:(0,r.jZ)(e,o),level:t,descr:(0,r.jZ)(n,o),type:i,children:[],width:o.mindmap?.maxNodeWidth??r.UI.mindmap.maxNodeWidth,padding:c,isRoot:s},h=this.getParent(t);if(h)h.children.push(l),this.nodes.push(l);else{if(!s)throw new Error(`There can be only one root. No parent could be found for ("${l.descr}")`);this.nodes.push(l)}}getType(t,e){switch(a.Rm.debug("In get type",t,e),t){case"[":return this.nodeType.RECT;case"(":return")"===e?this.nodeType.ROUNDED_RECT:this.nodeType.CLOUD;case"((":return this.nodeType.CIRCLE;case")":return this.nodeType.CLOUD;case"))":return this.nodeType.BANG;case"{{":return this.nodeType.HEXAGON;default:return this.nodeType.DEFAULT}}setElementForId(t,e){this.elements[t]=e}getElementById(t){return this.elements[t]}decorateNode(t){if(!t)return;const e=(0,r.D7)(),n=this.nodes[this.nodes.length-1];t.icon&&(n.icon=(0,r.jZ)(t.icon,e)),t.class&&(n.class=(0,r.jZ)(t.class,e))}type2Str(t){switch(t){case this.nodeType.DEFAULT:return"no-border";case this.nodeType.RECT:return"rect";case this.nodeType.ROUNDED_RECT:return"rounded-rect";case this.nodeType.CIRCLE:return"circle";case this.nodeType.CLOUD:return"cloud";case this.nodeType.BANG:return"bang";case this.nodeType.HEXAGON:return"hexgon";default:return"no-border"}}assignSections(t,e){if(0===t.level?t.section=void 0:t.section=e,t.children)for(const[n,i]of t.children.entries()){const s=0===t.level?n%11:e;this.assignSections(i,s)}}flattenNodes(t,e){const n=(0,r.D7)(),i=["mindmap-node"];!0===t.isRoot?i.push("section-root","section--1"):void 0!==t.section&&i.push(`section-${t.section}`),t.class&&i.push(t.class);const s=i.join(" "),o=(0,a.K2)(t=>{const e=(n.theme?.toLowerCase()??"").includes("redux");switch(t){case f.CIRCLE:return"mindmapCircle";case f.RECT:return"rect";case f.ROUNDED_RECT:return"rounded";case f.CLOUD:return"cloud";case f.BANG:return"bang";case f.HEXAGON:return"hexagon";case f.DEFAULT:return e?"rounded":"defaultMindmapNode";default:return"rect"}},"getShapeFromType"),c={id:t.id.toString(),domId:"node_"+t.id.toString(),label:t.descr,labelType:"markdown",isGroup:!1,shape:o(t.type),width:t.width,height:t.height??0,padding:t.padding,cssClasses:s,cssStyles:[],look:n.look,icon:t.icon,x:t.x,y:t.y,level:t.level,nodeId:t.nodeId,type:t.type,section:t.section};if(e.push(c),t.children)for(const r of t.children)this.flattenNodes(r,e)}generateEdges(t,e){if(!t.children)return;const n=(0,r.D7)();for(const i of t.children){let s="edge";void 0!==i.section&&(s+=` section-edge-${i.section}`);s+=` edge-depth-${t.level+1}`;const o={id:`edge_${t.id}_${i.id}`,start:t.id.toString(),end:i.id.toString(),type:"normal",curve:"basis",thickness:"normal",look:n.look,classes:s,depth:t.level,section:i.section};e.push(o),this.generateEdges(i,e)}}getData(){const t=this.getMindmap(),e=(0,r.D7)(),n=e;if(void 0!==(0,r.TM)().layout||(n.layout="cose-bilkent"),!t)return{nodes:[],edges:[],config:n};a.Rm.debug("getData: mindmapRoot",t,e),this.assignSections(t);const i=[],s=[];this.flattenNodes(t,i),this.generateEdges(t,s),a.Rm.debug(`getData: processed ${i.length} nodes and ${s.length} edges`);const o=new Map;for(const r of i)o.set(r.id,{shape:r.shape,width:r.width,height:r.height,padding:r.padding});return{nodes:i,edges:s,config:n,rootNode:t,markers:["point"],direction:"TB",nodeSpacing:50,rankSpacing:50,shapes:Object.fromEntries(o),type:"mindmap",diagramId:"mindmap-"+d()}}getLogger(){return a.Rm}},k={draw:(0,a.K2)(async(t,e,n,c)=>{a.Rm.debug("Rendering mindmap diagram\n"+t);const l=c.db,h=l.getData(),d=(0,i.A)(e,h.config.securityLevel);h.type=c.type,h.layoutAlgorithm=(0,o.q7)(h.config.layout,{fallback:"cose-bilkent"}),h.diagramId=e;if(!l.getMindmap())return;h.nodes.forEach(t=>{"rounded"===t.shape?(t.radius=15,t.taper=15,t.stroke="none",t.width=0,t.padding=15):"circle"===t.shape?t.padding=10:"rect"===t.shape?(t.width=0,t.padding=10):"hexagon"===t.shape&&(t.width=0,t.height=0)}),await(0,o.XX)(h,d);const{themeVariables:g}=(0,r.zj)(),{useGradient:u,gradientStart:p,gradientStop:y}=g;if(u&&p&&y){const t=d.attr("id"),e=d.append("defs").append("linearGradient").attr("id",`${t}-gradient`).attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");e.append("stop").attr("offset","0%").attr("stop-color",p).attr("stop-opacity",1),e.append("stop").attr("offset","100%").attr("stop-color",y).attr("stop-opacity",1)}(0,s.P)(d,h.config.mindmap?.padding??r.UI.mindmap.padding,"mindmapDiagram",h.config.mindmap?.useMaxWidth??r.UI.mindmap.useMaxWidth)},"draw")},b=(0,a.K2)(t=>{const{theme:e,look:n}=t;let i="";for(let s=0;s<t.THEME_COLOR_LIMIT;s++)t["lineColor"+s]=t["lineColor"+s]||t["cScaleInv"+s],(0,g.A)(t["lineColor"+s])?t["lineColor"+s]=(0,u.A)(t["lineColor"+s],20):t["lineColor"+s]=(0,p.A)(t["lineColor"+s],20);for(let s=0;s<t.THEME_COLOR_LIMIT;s++){const o=""+("neo"===n?Math.max(10-2*(s-1),2):17-3*s);i+=`\n .section-${s-1} rect, .section-${s-1} path, .section-${s-1} circle, .section-${s-1} polygon, .section-${s-1} path {\n fill: ${t["cScale"+s]};\n }\n .section-${s-1} text {\n fill: ${t["cScaleLabel"+s]};\n }\n .section-${s-1} span {\n color: ${t["cScaleLabel"+s]};\n }\n .node-icon-${s-1} {\n font-size: 40px;\n color: ${t["cScaleLabel"+s]};\n }\n .section-edge-${s-1}{\n stroke: ${t["cScale"+s]};\n }\n .edge-depth-${s-1}{\n stroke-width: ${o};\n }\n .section-${s-1} line {\n stroke: ${t["cScaleInv"+s]} ;\n stroke-width: 3;\n }\n\n .disabled, .disabled circle, .disabled text {\n fill: lightgray;\n }\n .disabled text {\n fill: #efefef;\n }\n [data-look="neo"].mindmap-node.section-${s-1} rect, [data-look="neo"].mindmap-node.section-${s-1} path, [data-look="neo"].mindmap-node.section-${s-1} circle, [data-look="neo"].mindmap-node.section-${s-1} polygon {\n fill: ${"redux"===e||"redux-dark"===e||"neutral"===e?t.mainBkg:t["cScale"+s]};\n stroke: ${"redux"===e||"redux-dark"===e?t.nodeBorder:t["cScale"+s]};\n stroke-width: ${t.strokeWidth??2}px;\n }\n [data-look="neo"].section-edge-${s-1}{\n stroke: ${e?.includes("redux")||"neo-dark"===e?t.nodeBorder:t["cScale"+s]};\n }\n [data-look="neo"].mindmap-node.section-${s-1} text {\n fill: ${"redux"===e||"redux-dark"===e?t.nodeBorder:t["cScaleLabel"+("neutral"===e?1:s)]};\n }\n `}return i},"genSections"),E=(0,a.K2)((t,e,n)=>{let i="";for(let s=0;s<t;s++)i+=`\n [data-look="neo"].mindmap-node.section-${s-1} rect, [data-look="neo"].mindmap-node.section-${s-1} path, [data-look="neo"].mindmap-node.section-${s-1} circle, [data-look="neo"].mindmap-node.section-${s-1} polygon {\n stroke: url(${e}-gradient);\n fill: ${n};\n }\n .section-${s-1} line {\n stroke-width: 0;\n }`;return i},"genGradient"),S=(0,a.K2)(t=>{const{theme:e}=t,n=t.svgId,i=t.dropShadow?t.dropShadow.replace("url(#drop-shadow)",`url(${n}-drop-shadow)`):"none";return`\n .edge {\n stroke-width: 3;\n }\n ${b(t)}\n .section-root rect, .section-root path, .section-root circle, .section-root polygon {\n fill: ${t.git0};\n }\n .section-root text {\n fill: ${t.gitBranchLabel0};\n }\n .section-root span {\n color: ${e?.includes("redux")?t.nodeBorder:t.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .mindmap-node-label {\n dy: 1em;\n alignment-baseline: middle;\n text-anchor: middle;\n dominant-baseline: middle;\n text-align: center;\n }\n [data-look="neo"].mindmap-node {\n filter: ${i};\n }\n [data-look="neo"].mindmap-node.section-root rect, [data-look="neo"].mindmap-node.section-root path, [data-look="neo"].mindmap-node.section-root circle, [data-look="neo"].mindmap-node.section-root polygon {\n fill: ${e?.includes("redux")?t.mainBkg:t.git0};\n }\n [data-look="neo"].mindmap-node.section-root .text-inner-tspan {\n fill: ${e?.includes("redux")?t.nodeBorder:t["cScaleLabel"+("neutral"===e?1:0)]};\n }\n ${t.useGradient&&n&&t.mainBkg?E(t.THEME_COLOR_LIMIT,n,t.mainBkg):""}\n`},"getStyles"),N={get db(){return new _},renderer:k,parser:m,styles:S}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/5692.58c0cdc6.js b/docs/build/assets/js/5692.58c0cdc6.js deleted file mode 100644 index 0054e9621..000000000 --- a/docs/build/assets/js/5692.58c0cdc6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[5692],{5692(t,i,e){e.d(i,{diagram:()=>it});var s=e(8213),a=e(5739),n=e(8515),h=e(3706),o=e(797),r=e(451),l=function(){var t=(0,o.K2)(function(t,i,e,s){for(e=e||{},s=t.length;s--;e[t[s]]=i);return e},"o"),i=[1,10,12,14,16,18,19,21,23],e=[2,6],s=[1,3],a=[1,5],n=[1,6],h=[1,7],r=[1,5,10,12,14,16,18,19,21,23,34,35,36],l=[1,25],c=[1,26],g=[1,28],u=[1,29],x=[1,30],d=[1,31],p=[1,32],f=[1,33],y=[1,34],m=[1,35],b=[1,36],A=[1,37],w=[1,43],C=[1,42],S=[1,47],k=[1,50],_=[1,10,12,14,16,18,19,21,23,34,35,36],T=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],R=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],D=[1,64],L={trace:(0,o.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:(0,o.K2)(function(t,i,e,s,a,n,h){var o=n.length-1;switch(a){case 5:s.setOrientation(n[o]);break;case 9:s.setDiagramTitle(n[o].text.trim());break;case 12:s.setLineData({text:"",type:"text"},n[o]);break;case 13:s.setLineData(n[o-1],n[o]);break;case 14:s.setBarData({text:"",type:"text"},n[o]);break;case 15:s.setBarData(n[o-1],n[o]);break;case 16:this.$=n[o].trim(),s.setAccTitle(this.$);break;case 17:case 18:this.$=n[o].trim(),s.setAccDescription(this.$);break;case 19:case 27:this.$=n[o-1];break;case 20:this.$=[Number(n[o-2]),...n[o]];break;case 21:this.$=[Number(n[o])];break;case 22:s.setXAxisTitle(n[o]);break;case 23:s.setXAxisTitle(n[o-1]);break;case 24:s.setXAxisTitle({type:"text",text:""});break;case 25:s.setXAxisBand(n[o]);break;case 26:s.setXAxisRangeData(Number(n[o-2]),Number(n[o]));break;case 28:this.$=[n[o-2],...n[o]];break;case 29:this.$=[n[o]];break;case 30:s.setYAxisTitle(n[o]);break;case 31:s.setYAxisTitle(n[o-1]);break;case 32:s.setYAxisTitle({type:"text",text:""});break;case 33:s.setYAxisRangeData(Number(n[o-2]),Number(n[o]));break;case 37:case 38:this.$={text:n[o],type:"text"};break;case 39:this.$={text:n[o],type:"markdown"};break;case 40:this.$=n[o];break;case 41:this.$=n[o-1]+""+n[o]}},"anonymous"),table:[t(i,e,{3:1,4:2,7:4,5:s,34:a,35:n,36:h}),{1:[3]},t(i,e,{4:2,7:4,3:8,5:s,34:a,35:n,36:h}),t(i,e,{4:2,7:4,6:9,3:10,5:s,8:[1,11],34:a,35:n,36:h}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},t(r,[2,34]),t(r,[2,35]),t(r,[2,36]),{1:[2,1]},t(i,e,{4:2,7:4,3:21,5:s,34:a,35:n,36:h}),{1:[2,3]},t(r,[2,5]),t(i,[2,7],{4:22,34:a,35:n,36:h}),{11:23,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},{11:39,13:38,24:w,27:C,29:40,30:41,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},{11:45,15:44,27:S,33:46,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},{11:49,17:48,24:k,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},{11:52,17:51,24:k,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},{20:[1,53]},{22:[1,54]},t(_,[2,18]),{1:[2,2]},t(_,[2,8]),t(_,[2,9]),t(T,[2,37],{40:55,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A}),t(T,[2,38]),t(T,[2,39]),t(R,[2,40]),t(R,[2,42]),t(R,[2,43]),t(R,[2,44]),t(R,[2,45]),t(R,[2,46]),t(R,[2,47]),t(R,[2,48]),t(R,[2,49]),t(R,[2,50]),t(R,[2,51]),t(_,[2,10]),t(_,[2,22],{30:41,29:56,24:w,27:C}),t(_,[2,24]),t(_,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},t(_,[2,11]),t(_,[2,30],{33:60,27:S}),t(_,[2,32]),{31:[1,61]},t(_,[2,12]),{17:62,24:k},{25:63,27:D},t(_,[2,14]),{17:65,24:k},t(_,[2,16]),t(_,[2,17]),t(R,[2,41]),t(_,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},t(_,[2,31]),{27:[1,69]},t(_,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},t(_,[2,15]),t(_,[2,26]),t(_,[2,27]),{11:59,32:72,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},t(_,[2,33]),t(_,[2,19]),{25:73,27:D},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:(0,o.K2)(function(t,i){if(!i.recoverable){var e=new Error(t);throw e.hash=i,e}this.trace(t)},"parseError"),parse:(0,o.K2)(function(t){var i=this,e=[0],s=[],a=[null],n=[],h=this.table,r="",l=0,c=0,g=0,u=n.slice.call(arguments,1),x=Object.create(this.lexer),d={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(d.yy[p]=this.yy[p]);x.setInput(t,d.yy),d.yy.lexer=x,d.yy.parser=this,void 0===x.yylloc&&(x.yylloc={});var f=x.yylloc;n.push(f);var y=x.options&&x.options.ranges;function m(){var t;return"number"!=typeof(t=s.pop()||x.lex()||1)&&(t instanceof Array&&(t=(s=t).pop()),t=i.symbols_[t]||t),t}"function"==typeof d.yy.parseError?this.parseError=d.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,o.K2)(function(t){e.length=e.length-2*t,a.length=a.length-t,n.length=n.length-t},"popStack"),(0,o.K2)(m,"lex");for(var b,A,w,C,S,k,_,T,R,D={};;){if(w=e[e.length-1],this.defaultActions[w]?C=this.defaultActions[w]:(null==b&&(b=m()),C=h[w]&&h[w][b]),void 0===C||!C.length||!C[0]){var L="";for(k in R=[],h[w])this.terminals_[k]&&k>2&&R.push("'"+this.terminals_[k]+"'");L=x.showPosition?"Parse error on line "+(l+1)+":\n"+x.showPosition()+"\nExpecting "+R.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==b?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(L,{text:x.match,token:this.terminals_[b]||b,line:x.yylineno,loc:f,expected:R})}if(C[0]instanceof Array&&C.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+b);switch(C[0]){case 1:e.push(b),a.push(x.yytext),n.push(x.yylloc),e.push(C[1]),b=null,A?(b=A,A=null):(c=x.yyleng,r=x.yytext,l=x.yylineno,f=x.yylloc,g>0&&g--);break;case 2:if(_=this.productions_[C[1]][1],D.$=a[a.length-_],D._$={first_line:n[n.length-(_||1)].first_line,last_line:n[n.length-1].last_line,first_column:n[n.length-(_||1)].first_column,last_column:n[n.length-1].last_column},y&&(D._$.range=[n[n.length-(_||1)].range[0],n[n.length-1].range[1]]),void 0!==(S=this.performAction.apply(D,[r,c,l,d.yy,C[1],a,n].concat(u))))return S;_&&(e=e.slice(0,-1*_*2),a=a.slice(0,-1*_),n=n.slice(0,-1*_)),e.push(this.productions_[C[1]][0]),a.push(D.$),n.push(D._$),T=h[e[e.length-2]][e[e.length-1]],e.push(T);break;case 3:return!0}}return!0},"parse")},P=function(){return{EOF:1,parseError:(0,o.K2)(function(t,i){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,i)},"parseError"),setInput:(0,o.K2)(function(t,i){return this.yy=i||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,o.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,o.K2)(function(t){var i=t.length,e=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-i),this.offset-=i;var s=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),e.length-1&&(this.yylineno-=e.length-1);var a=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:e?(e.length===s.length?this.yylloc.first_column:0)+s[s.length-e.length].length-e[0].length:this.yylloc.first_column-i},this.options.ranges&&(this.yylloc.range=[a[0],a[0]+this.yyleng-i]),this.yyleng=this.yytext.length,this},"unput"),more:(0,o.K2)(function(){return this._more=!0,this},"more"),reject:(0,o.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,o.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,o.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,o.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,o.K2)(function(){var t=this.pastInput(),i=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+i+"^"},"showPosition"),test_match:(0,o.K2)(function(t,i){var e,s,a;if(this.options.backtrack_lexer&&(a={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(a.yylloc.range=this.yylloc.range.slice(0))),(s=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=s.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:s?s[s.length-1].length-s[s.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,i,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e)return e;if(this._backtrack){for(var n in a)this[n]=a[n];return!1}return!1},"test_match"),next:(0,o.K2)(function(){if(this.done)return this.EOF;var t,i,e,s;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var a=this._currentRules(),n=0;n<a.length;n++)if((e=this._input.match(this.rules[a[n]]))&&(!i||e[0].length>i[0].length)){if(i=e,s=n,this.options.backtrack_lexer){if(!1!==(t=this.test_match(e,a[n])))return t;if(this._backtrack){i=!1;continue}return!1}if(!this.options.flex)break}return i?!1!==(t=this.test_match(i,a[s]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,o.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,o.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,o.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,o.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,o.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,o.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,o.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,o.K2)(function(t,i,e,s){switch(e){case 0:case 1:case 5:case 44:break;case 2:case 3:return this.popState(),34;case 4:return 34;case 6:return 10;case 7:return this.pushState("acc_title"),19;case 8:return this.popState(),"acc_title_value";case 9:return this.pushState("acc_descr"),21;case 10:return this.popState(),"acc_descr_value";case 11:this.pushState("acc_descr_multiline");break;case 12:case 26:case 28:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:case 15:return 5;case 16:return 8;case 17:return this.pushState("axis_data"),"X_AXIS";case 18:return this.pushState("axis_data"),"Y_AXIS";case 19:return this.pushState("axis_band_data"),24;case 20:return 31;case 21:return this.pushState("data"),16;case 22:return this.pushState("data"),18;case 23:return this.pushState("data_inner"),24;case 24:return 27;case 25:return this.popState(),26;case 27:this.pushState("string");break;case 29:return"STR";case 30:return 24;case 31:return 26;case 32:return 43;case 33:return"COLON";case 34:return 44;case 35:return 28;case 36:return 45;case 37:return 46;case 38:return 48;case 39:return 50;case 40:return 47;case 41:return 41;case 42:return 49;case 43:return 42;case 45:return 35;case 46:return 36}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:(\r?\n))/i,/^(?:(\r?\n))/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:\})/i,/^(?:[^\}]*)/i,/^(?:xychart-beta\b)/i,/^(?:xychart\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\b)/i,/^(?:y-axis\b)/i,/^(?:\[)/i,/^(?:-->)/i,/^(?:line\b)/i,/^(?:bar\b)/i,/^(?:\[)/i,/^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,/^(?:\])/i,/^(?:(?:`\) \{ this\.pushState\(md_string\); \}\n<md_string>\(\?:\(\?!`"\)\.\)\+ \{ return MD_STR; \}\n<md_string>\(\?:`))/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s+)/i,/^(?:;)/i,/^(?:$)/i],conditions:{data_inner:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,24,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,18,21,22,23,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,22,24,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[],inclusive:!1},md_string:{rules:[],inclusive:!1},string:{rules:[28,29],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0}}}}();function E(){this.yy={}}return L.lexer=P,(0,o.K2)(E,"Parser"),E.prototype=L,L.Parser=E,new E}();l.parser=l;var c=l;function g(t){return"bar"===t.type}function u(t){return"band"===t.type}function x(t){return"linear"===t.type}(0,o.K2)(g,"isBarPlot"),(0,o.K2)(u,"isBandAxisData"),(0,o.K2)(x,"isLinearAxisData");var d=class{constructor(t){this.parentGroup=t}static{(0,o.K2)(this,"TextDimensionCalculatorWithFont")}getMaxDimension(t,i){if(!this.parentGroup)return{width:t.reduce((t,i)=>Math.max(i.length,t),0)*i,height:i};const e={width:0,height:0},s=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",i);for(const n of t){const t=(0,a.W6)(s,1,n),h=t?t.width:n.length*i,o=t?t.height:i;e.width=Math.max(e.width,h),e.height=Math.max(e.height,o)}return s.remove(),e}},p=class{constructor(t,i,e,s){this.axisConfig=t,this.title=i,this.textDimensionCalculator=e,this.axisThemeConfig=s,this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left",this.showTitle=!1,this.showLabel=!1,this.showTick=!1,this.showAxisLine=!1,this.outerPadding=0,this.titleTextHeight=0,this.labelTextHeight=0,this.range=[0,10],this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left"}static{(0,o.K2)(this,"BaseAxis")}setRange(t){this.range=t,"left"===this.axisPosition||"right"===this.axisPosition?this.boundingRect.height=t[1]-t[0]:this.boundingRect.width=t[1]-t[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(t){this.axisPosition=t,this.setRange(this.range)}getTickDistance(){const t=this.getRange();return Math.abs(t[0]-t[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(t=>t.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){.7*this.getTickDistance()>2*this.outerPadding&&(this.outerPadding=Math.floor(.7*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(t){let i=t.height;if(this.axisConfig.showAxisLine&&i>this.axisConfig.axisLineWidth&&(i-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){const e=this.getLabelDimension(),s=.2*t.width;this.outerPadding=Math.min(e.width/2,s);const a=e.height+2*this.axisConfig.labelPadding;this.labelTextHeight=e.height,a<=i&&(i-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&i>=this.axisConfig.tickLength&&(this.showTick=!0,i-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){const t=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),e=t.height+2*this.axisConfig.titlePadding;this.titleTextHeight=t.height,e<=i&&(i-=e,this.showTitle=!0)}this.boundingRect.width=t.width,this.boundingRect.height=t.height-i}calculateSpaceIfDrawnVertical(t){let i=t.width;if(this.axisConfig.showAxisLine&&i>this.axisConfig.axisLineWidth&&(i-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){const e=this.getLabelDimension(),s=.2*t.height;this.outerPadding=Math.min(e.height/2,s);const a=e.width+2*this.axisConfig.labelPadding;a<=i&&(i-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&i>=this.axisConfig.tickLength&&(this.showTick=!0,i-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){const t=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),e=t.height+2*this.axisConfig.titlePadding;this.titleTextHeight=t.height,e<=i&&(i-=e,this.showTitle=!0)}this.boundingRect.width=t.width-i,this.boundingRect.height=t.height}calculateSpace(t){return"left"===this.axisPosition||"right"===this.axisPosition?this.calculateSpaceIfDrawnVertical(t):this.calculateSpaceIfDrawnHorizontally(t),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}getDrawableElementsForLeftAxis(){const t=[];if(this.showAxisLine){const i=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["left-axis","axisl-line"],data:[{path:`M ${i},${this.boundingRect.y} L ${i},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["left-axis","label"],data:this.getTickValues().map(t=>({text:t.toString(),x:this.boundingRect.x+this.boundingRect.width-(this.showLabel?this.axisConfig.labelPadding:0)-(this.showTick?this.axisConfig.tickLength:0)-(this.showAxisLine?this.axisConfig.axisLineWidth:0),y:this.getScaleValue(t),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"middle",horizontalPos:"right"}))}),this.showTick){const i=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["left-axis","ticks"],data:this.getTickValues().map(t=>({path:`M ${i},${this.getScaleValue(t)} L ${i-this.axisConfig.tickLength},${this.getScaleValue(t)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["left-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.axisConfig.titlePadding,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:270,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForBottomAxis(){const t=[];if(this.showAxisLine){const i=this.boundingRect.y+this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["bottom-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${i} L ${this.boundingRect.x+this.boundingRect.width},${i}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["bottom-axis","label"],data:this.getTickValues().map(t=>({text:t.toString(),x:this.getScaleValue(t),y:this.boundingRect.y+this.axisConfig.labelPadding+(this.showTick?this.axisConfig.tickLength:0)+(this.showAxisLine?this.axisConfig.axisLineWidth:0),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){const i=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["bottom-axis","ticks"],data:this.getTickValues().map(t=>({path:`M ${this.getScaleValue(t)},${i} L ${this.getScaleValue(t)},${i+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["bottom-axis","title"],data:[{text:this.title,x:this.range[0]+(this.range[1]-this.range[0])/2,y:this.boundingRect.y+this.boundingRect.height-this.axisConfig.titlePadding-this.titleTextHeight,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForTopAxis(){const t=[];if(this.showAxisLine){const i=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["top-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${i} L ${this.boundingRect.x+this.boundingRect.width},${i}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["top-axis","label"],data:this.getTickValues().map(t=>({text:t.toString(),x:this.getScaleValue(t),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+2*this.axisConfig.titlePadding:0)+this.axisConfig.labelPadding,fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){const i=this.boundingRect.y;t.push({type:"path",groupTexts:["top-axis","ticks"],data:this.getTickValues().map(t=>({path:`M ${this.getScaleValue(t)},${i+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(t)},${i+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["top-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.axisConfig.titlePadding,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElements(){if("left"===this.axisPosition)return this.getDrawableElementsForLeftAxis();if("right"===this.axisPosition)throw Error("Drawing of right axis is not implemented");return"bottom"===this.axisPosition?this.getDrawableElementsForBottomAxis():"top"===this.axisPosition?this.getDrawableElementsForTopAxis():[]}},f=class extends p{static{(0,o.K2)(this,"BandAxis")}constructor(t,i,e,s,a){super(t,s,a,i),this.categories=e,this.scale=(0,r.WH)().domain(this.categories).range(this.getRange())}setRange(t){super.setRange(t)}recalculateScale(){this.scale=(0,r.WH)().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),o.Rm.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(t){return this.scale(t)??this.getRange()[0]}},y=class extends p{static{(0,o.K2)(this,"LinearAxis")}constructor(t,i,e,s,a){super(t,s,a,i),this.domain=e,this.scale=(0,r.m4Y)().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){const t=[...this.domain];"left"===this.axisPosition&&t.reverse(),this.scale=(0,r.m4Y)().domain(t).range(this.getRange())}getScaleValue(t){return this.scale(t)}};function m(t,i,e,s){const a=new d(s);return u(t)?new f(i,e,t.categories,t.title,a):new y(i,e,[t.min,t.max],t.title,a)}(0,o.K2)(m,"getAxis");var b=class{constructor(t,i,e,s){this.textDimensionCalculator=t,this.chartConfig=i,this.chartData=e,this.chartThemeConfig=s,this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}static{(0,o.K2)(this,"ChartTitle")}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){const i=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),e=Math.max(i.width,t.width),s=i.height+2*this.chartConfig.titlePadding;return i.width<=e&&i.height<=s&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=e,this.boundingRect.height=s,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){const t=[];return this.showChartTitle&&t.push({groupTexts:["chart-title"],type:"text",data:[{fontSize:this.chartConfig.titleFontSize,text:this.chartData.title,verticalPos:"middle",horizontalPos:"center",x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.chartThemeConfig.titleColor,rotation:0}]}),t}};function A(t,i,e,s){const a=new d(s);return new b(a,t,i,e)}(0,o.K2)(A,"getChartTitleComponent");var w=class{constructor(t,i,e,s,a){this.plotData=t,this.xAxis=i,this.yAxis=e,this.orientation=s,this.plotIndex=a}static{(0,o.K2)(this,"LinePlot")}getDrawableElement(){const t=this.plotData.data.map(t=>[this.xAxis.getScaleValue(t[0]),this.yAxis.getScaleValue(t[1])]);let i;return i="horizontal"===this.orientation?(0,r.n8j)().y(t=>t[0]).x(t=>t[1])(t):(0,r.n8j)().x(t=>t[0]).y(t=>t[1])(t),i?[{groupTexts:["plot",`line-plot-${this.plotIndex}`],type:"path",data:[{path:i,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}]:[]}},C=class{constructor(t,i,e,s,a,n){this.barData=t,this.boundingRect=i,this.xAxis=e,this.yAxis=s,this.orientation=a,this.plotIndex=n}static{(0,o.K2)(this,"BarPlot")}getDrawableElement(){const t=this.barData.data.map(t=>[this.xAxis.getScaleValue(t[0]),this.yAxis.getScaleValue(t[1])]),i=.95*Math.min(2*this.xAxis.getAxisOuterPadding(),this.xAxis.getTickDistance()),e=i/2;return"horizontal"===this.orientation?[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(t=>({x:this.boundingRect.x,y:t[0]-e,height:i,width:t[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(t=>({x:t[0]-e,y:t[1],width:i,height:this.boundingRect.y+this.boundingRect.height-t[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}},S=class{constructor(t,i,e){this.chartConfig=t,this.chartData=i,this.chartThemeConfig=e,this.boundingRect={x:0,y:0,width:0,height:0}}static{(0,o.K2)(this,"BasePlot")}setAxes(t,i){this.xAxis=t,this.yAxis=i}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){return this.boundingRect.width=t.width,this.boundingRect.height=t.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!this.xAxis||!this.yAxis)throw Error("Axes must be passed to render Plots");const t=[];for(const[i,e]of this.chartData.plots.entries())switch(e.type){case"line":{const s=new w(e,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,i);t.push(...s.getDrawableElement())}break;case"bar":{const s=new C(e,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,i);t.push(...s.getDrawableElement())}}return t}};function k(t,i,e){return new S(t,i,e)}(0,o.K2)(k,"getPlotComponent");var _,T=class{constructor(t,i,e,s){this.chartConfig=t,this.chartData=i,this.componentStore={title:A(t,i,e,s),plot:k(t,i,e),xAxis:m(i.xAxis,t.xAxis,{titleColor:e.xAxisTitleColor,labelColor:e.xAxisLabelColor,tickColor:e.xAxisTickColor,axisLineColor:e.xAxisLineColor},s),yAxis:m(i.yAxis,t.yAxis,{titleColor:e.yAxisTitleColor,labelColor:e.yAxisLabelColor,tickColor:e.yAxisTickColor,axisLineColor:e.yAxisLineColor},s)}}static{(0,o.K2)(this,"Orchestrator")}calculateVerticalSpace(){let t=this.chartConfig.width,i=this.chartConfig.height,e=0,s=0,a=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),n=Math.floor(i*this.chartConfig.plotReservedSpacePercent/100),h=this.componentStore.plot.calculateSpace({width:a,height:n});t-=h.width,i-=h.height,h=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:i}),s=h.height,i-=h.height,this.componentStore.xAxis.setAxisPosition("bottom"),h=this.componentStore.xAxis.calculateSpace({width:t,height:i}),i-=h.height,this.componentStore.yAxis.setAxisPosition("left"),h=this.componentStore.yAxis.calculateSpace({width:t,height:i}),e=h.width,t-=h.width,t>0&&(a+=t,t=0),i>0&&(n+=i,i=0),this.componentStore.plot.calculateSpace({width:a,height:n}),this.componentStore.plot.setBoundingBoxXY({x:e,y:s}),this.componentStore.xAxis.setRange([e,e+a]),this.componentStore.xAxis.setBoundingBoxXY({x:e,y:s+n}),this.componentStore.yAxis.setRange([s,s+n]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:s}),this.chartData.plots.some(t=>g(t))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizontalSpace(){let t=this.chartConfig.width,i=this.chartConfig.height,e=0,s=0,a=0,n=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),h=Math.floor(i*this.chartConfig.plotReservedSpacePercent/100),o=this.componentStore.plot.calculateSpace({width:n,height:h});t-=o.width,i-=o.height,o=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:i}),e=o.height,i-=o.height,this.componentStore.xAxis.setAxisPosition("left"),o=this.componentStore.xAxis.calculateSpace({width:t,height:i}),t-=o.width,s=o.width,this.componentStore.yAxis.setAxisPosition("top"),o=this.componentStore.yAxis.calculateSpace({width:t,height:i}),i-=o.height,a=e+o.height,t>0&&(n+=t,t=0),i>0&&(h+=i,i=0),this.componentStore.plot.calculateSpace({width:n,height:h}),this.componentStore.plot.setBoundingBoxXY({x:s,y:a}),this.componentStore.yAxis.setRange([s,s+n]),this.componentStore.yAxis.setBoundingBoxXY({x:s,y:e}),this.componentStore.xAxis.setRange([a,a+h]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:a}),this.chartData.plots.some(t=>g(t))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){"horizontal"===this.chartConfig.chartOrientation?this.calculateHorizontalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();const t=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(const i of Object.values(this.componentStore))t.push(...i.getDrawableElements());return t}},R=class{static{(0,o.K2)(this,"XYChartBuilder")}static build(t,i,e,s){return new T(t,i,e,s).getDrawableElement()}},D=0,L=M(),P=$(),E=B(),K=P.plotColorPalette.split(",").map(t=>t.trim()),v=!1,I=!1;function $(){const t=(0,h.P$)(),i=(0,h.zj)();return(0,n.$t)(t.xyChart,i.themeVariables.xyChart)}function M(){const t=(0,h.zj)();return(0,n.$t)(h.UI.xyChart,t.xyChart)}function B(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}function z(t){const i=(0,h.zj)();return(0,h.jZ)(t.trim(),i)}function W(t){_=t}function O(t){L.chartOrientation="horizontal"===t?"horizontal":"vertical"}function F(t){E.xAxis.title=z(t.text)}function X(t,i){E.xAxis={type:"linear",title:E.xAxis.title,min:t,max:i},v=!0}function N(t){E.xAxis={type:"band",title:E.xAxis.title,categories:t.map(t=>z(t.text))},v=!0}function V(t){E.yAxis.title=z(t.text)}function Y(t,i){E.yAxis={type:"linear",title:E.yAxis.title,min:t,max:i},I=!0}function H(t){const i=Math.min(...t),e=Math.max(...t),s=x(E.yAxis)?E.yAxis.min:1/0,a=x(E.yAxis)?E.yAxis.max:-1/0;E.yAxis={type:"linear",title:E.yAxis.title,min:Math.min(s,i),max:Math.max(a,e)}}function U(t){let i=[];if(0===t.length)return i;if(!v){const i=x(E.xAxis)?E.xAxis.min:1/0,e=x(E.xAxis)?E.xAxis.max:-1/0;X(Math.min(i,1),Math.max(e,t.length))}if(I||H(t),u(E.xAxis)&&(i=E.xAxis.categories.map((i,e)=>[i,t[e]])),x(E.xAxis)){const e=E.xAxis.min,s=E.xAxis.max,a=(s-e)/(t.length-1),n=[];for(let t=e;t<=s;t+=a)n.push(`${t}`);i=n.map((i,e)=>[i,t[e]])}return i}function j(t){return K[0===t?0:t%K.length]}function G(t,i){const e=U(i);E.plots.push({type:"line",strokeFill:j(D),strokeWidth:2,data:e}),D++}function Q(t,i){const e=U(i);E.plots.push({type:"bar",fill:j(D),data:e}),D++}function Z(){if(0===E.plots.length)throw Error("No Plot to render, please provide a plot with some data");return E.title=(0,h.ab)(),R.build(L,E,P,_)}function q(){return P}function J(){return L}function tt(){return E}(0,o.K2)($,"getChartDefaultThemeConfig"),(0,o.K2)(M,"getChartDefaultConfig"),(0,o.K2)(B,"getChartDefaultData"),(0,o.K2)(z,"textSanitizer"),(0,o.K2)(W,"setTmpSVGG"),(0,o.K2)(O,"setOrientation"),(0,o.K2)(F,"setXAxisTitle"),(0,o.K2)(X,"setXAxisRangeData"),(0,o.K2)(N,"setXAxisBand"),(0,o.K2)(V,"setYAxisTitle"),(0,o.K2)(Y,"setYAxisRangeData"),(0,o.K2)(H,"setYAxisRangeFromPlotData"),(0,o.K2)(U,"transformDataWithoutCategory"),(0,o.K2)(j,"getPlotColorFromPalette"),(0,o.K2)(G,"setLineData"),(0,o.K2)(Q,"setBarData"),(0,o.K2)(Z,"getDrawableElem"),(0,o.K2)(q,"getChartThemeConfig"),(0,o.K2)(J,"getChartConfig"),(0,o.K2)(tt,"getXYChartData");var it={parser:c,db:{getDrawableElem:Z,clear:(0,o.K2)(function(){(0,h.IU)(),D=0,L=M(),E={yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]},P=$(),K=P.plotColorPalette.split(",").map(t=>t.trim()),v=!1,I=!1},"clear"),setAccTitle:h.SV,getAccTitle:h.iN,setDiagramTitle:h.ke,getDiagramTitle:h.ab,getAccDescription:h.m7,setAccDescription:h.EI,setOrientation:O,setXAxisTitle:F,setXAxisRangeData:X,setXAxisBand:N,setYAxisTitle:V,setYAxisRangeData:Y,setLineData:G,setBarData:Q,setTmpSVGG:W,getChartThemeConfig:q,getChartConfig:J,getXYChartData:tt},renderer:{draw:(0,o.K2)((t,i,e,a)=>{const n=a.db,r=n.getChartThemeConfig(),l=n.getChartConfig(),c=n.getXYChartData().plots[0].data.map(t=>t[1]);function g(t){return"top"===t?"text-before-edge":"middle"}function u(t){return"left"===t?"start":"right"===t?"end":"middle"}function x(t){return`translate(${t.x}, ${t.y}) rotate(${t.rotation||0})`}(0,o.K2)(g,"getDominantBaseLine"),(0,o.K2)(u,"getTextAnchor"),(0,o.K2)(x,"getTextTransformation"),o.Rm.debug("Rendering xychart chart\n"+t);const d=(0,s.D)(i),p=d.append("g").attr("class","main"),f=p.append("rect").attr("width",l.width).attr("height",l.height).attr("class","background");(0,h.a$)(d,l.height,l.width,!0),d.attr("viewBox",`0 0 ${l.width} ${l.height}`),f.attr("fill",r.backgroundColor),n.setTmpSVGG(d.append("g").attr("class","mermaid-tmp-group"));const y=n.getDrawableElem(),m={};function b(t){let i=p,e="";for(const[s]of t.entries()){let a=p;s>0&&m[e]&&(a=m[e]),e+=t[s],i=m[e],i||(i=m[e]=a.append("g").attr("class",t[s]))}return i}(0,o.K2)(b,"getGroup");for(const s of y){if(0===s.data.length)continue;const t=b(s.groupTexts);switch(s.type){case"rect":if(t.selectAll("rect").data(s.data).enter().append("rect").attr("x",t=>t.x).attr("y",t=>t.y).attr("width",t=>t.width).attr("height",t=>t.height).attr("fill",t=>t.fill).attr("stroke",t=>t.strokeFill).attr("stroke-width",t=>t.strokeWidth),l.showDataLabel){const i=l.showDataLabelOutsideBar;if("horizontal"===l.chartOrientation){let e=function(t,i){const{data:e,label:s}=t;return i*s.length*a<=e.width-n};(0,o.K2)(e,"fitsHorizontally");const a=.7,n=10,h=s.data.map((t,i)=>({data:t,label:c[i].toString()})).filter(t=>t.data.width>0&&t.data.height>0),l=h.map(t=>{const{data:i}=t;let s=.7*i.height;for(;!e(t,s)&&s>0;)s-=1;return s}),g=Math.floor(Math.min(...l)),u=(0,o.K2)(t=>i?t.data.x+t.data.width+n:t.data.x+t.data.width-n,"determineLabelXPosition");t.selectAll("text").data(h).enter().append("text").attr("x",u).attr("y",t=>t.data.y+t.data.height/2).attr("text-anchor",i?"start":"end").attr("dominant-baseline","middle").attr("fill",r.dataLabelColor).attr("font-size",`${g}px`).text(t=>t.label)}else{let e=function(t,i,e){const{data:s,label:a}=t,n=i*a.length*.7,h=s.x+s.width/2,o=h+n/2,r=h-n/2>=s.x&&o<=s.x+s.width,l=s.y+e+i<=s.y+s.height;return r&&l};(0,o.K2)(e,"fitsInBar");const a=10,n=s.data.map((t,i)=>({data:t,label:c[i].toString()})).filter(t=>t.data.width>0&&t.data.height>0),h=n.map(t=>{const{data:i,label:s}=t;let n=i.width/(.7*s.length);for(;!e(t,n,a)&&n>0;)n-=1;return n}),l=Math.floor(Math.min(...h)),g=(0,o.K2)(t=>i?t.data.y-a:t.data.y+a,"determineLabelYPosition");t.selectAll("text").data(n).enter().append("text").attr("x",t=>t.data.x+t.data.width/2).attr("y",g).attr("text-anchor","middle").attr("dominant-baseline",i?"auto":"hanging").attr("fill",r.dataLabelColor).attr("font-size",`${l}px`).text(t=>t.label)}}break;case"text":t.selectAll("text").data(s.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",t=>t.fill).attr("font-size",t=>t.fontSize).attr("dominant-baseline",t=>g(t.verticalPos)).attr("text-anchor",t=>u(t.horizontalPos)).attr("transform",t=>x(t)).text(t=>t.text);break;case"path":t.selectAll("path").data(s.data).enter().append("path").attr("d",t=>t.path).attr("fill",t=>t.fill?t.fill:"none").attr("stroke",t=>t.strokeFill).attr("stroke-width",t=>t.strokeWidth)}}},"draw")}}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/5e95c892.67c48228.js b/docs/build/assets/js/5e95c892.67c48228.js deleted file mode 100644 index 79ef9d2d8..000000000 --- a/docs/build/assets/js/5e95c892.67c48228.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[9647],{7121(s,e,r){r.r(e),r.d(e,{default:()=>u});r(6540);var a=r(8215),c=r(7559),o=r(5500),d=r(2831),h=r(1827),t=r(4848);function u(s){return(0,t.jsx)(o.e3,{className:(0,a.A)(c.G.wrapper.docsPages),children:(0,t.jsx)(h.A,{children:(0,d.v)(s.route.routes)})})}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/6246.0bfcb39b.js b/docs/build/assets/js/6246.0bfcb39b.js deleted file mode 100644 index 1601398b9..000000000 --- a/docs/build/assets/js/6246.0bfcb39b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[6246],{2938(t,e,a){a.d(e,{m:()=>s});var r=a(797),s=class{constructor(t){this.init=t,this.records=this.init()}static{(0,r.K2)(this,"ImperativeState")}reset(){this.records=this.init()}}},6246(t,e,a){a.d(e,{diagram:()=>Vt});var r=a(3283),s=a(8343),i=a(2938),n=a(8515),o=a(3706),c=a(797),d=a(451),l=a(6750),h=function(){var t=(0,c.K2)(function(t,e,a,r){for(a=a||{},r=t.length;r--;a[t[r]]=e);return a},"o"),e=[1,2],a=[1,3],r=[1,4],s=[2,4],i=[1,9],n=[1,11],o=[1,12],d=[1,14],l=[1,15],h=[1,17],p=[1,18],T=[1,19],E=[1,25],g=[1,26],u=[1,27],_=[1,28],O=[1,29],y=[1,30],x=[1,31],m=[1,32],b=[1,33],I=[1,34],R=[1,35],f=[1,36],L=[1,37],P=[1,38],N=[1,39],w=[1,40],D=[1,42],S=[1,43],A=[1,44],k=[1,45],C=[1,46],M=[1,47],v=[1,4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,48,49,50,51,53,54,56,61,62,63,64,73],Y=[1,74],B=[1,80],K=[1,81],$=[1,82],V=[1,83],W=[1,84],F=[1,85],q=[1,86],H=[1,87],z=[1,88],j=[1,89],U=[1,90],G=[1,91],X=[1,92],Z=[1,93],J=[1,94],Q=[1,95],tt=[1,96],et=[1,97],at=[1,98],rt=[1,99],st=[1,100],it=[1,101],nt=[1,102],ot=[1,103],ct=[1,104],dt=[1,105],lt=[2,78],ht=[4,5,17,51,53,54],pt=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,51,53,54,56,61,62,63,64,73],Tt=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,50,51,53,54,56,61,62,63,64,73],Et=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,49,51,53,54,56,61,62,63,64,73],gt=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,48,51,53,54,56,61,62,63,64,73],ut=[5,52],_t=[70,71,72,73],Ot=[1,151],yt={trace:(0,c.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,SD:6,document:7,line:8,statement:9,INVALID:10,box_section:11,box_line:12,participant_statement:13,create:14,box:15,restOfLine:16,end:17,signal:18,autonumber:19,NUM:20,off:21,activate:22,actor:23,deactivate:24,note_statement:25,links_statement:26,link_statement:27,properties_statement:28,details_statement:29,title:30,legacy_title:31,acc_title:32,acc_title_value:33,acc_descr:34,acc_descr_value:35,acc_descr_multiline_value:36,loop:37,rect:38,opt:39,alt:40,else_sections:41,par:42,par_sections:43,par_over:44,critical:45,option_sections:46,break:47,option:48,and:49,else:50,participant:51,AS:52,participant_actor:53,destroy:54,actor_with_config:55,note:56,placement:57,text2:58,over:59,actor_pair:60,links:61,link:62,properties:63,details:64,spaceList:65,",":66,left_of:67,right_of:68,signaltype:69,"+":70,"-":71,"()":72,ACTOR:73,config_object:74,CONFIG_START:75,CONFIG_CONTENT:76,CONFIG_END:77,SOLID_OPEN_ARROW:78,DOTTED_OPEN_ARROW:79,SOLID_ARROW:80,SOLID_ARROW_TOP:81,SOLID_ARROW_BOTTOM:82,STICK_ARROW_TOP:83,STICK_ARROW_BOTTOM:84,SOLID_ARROW_TOP_DOTTED:85,SOLID_ARROW_BOTTOM_DOTTED:86,STICK_ARROW_TOP_DOTTED:87,STICK_ARROW_BOTTOM_DOTTED:88,SOLID_ARROW_TOP_REVERSE:89,SOLID_ARROW_BOTTOM_REVERSE:90,STICK_ARROW_TOP_REVERSE:91,STICK_ARROW_BOTTOM_REVERSE:92,SOLID_ARROW_TOP_REVERSE_DOTTED:93,SOLID_ARROW_BOTTOM_REVERSE_DOTTED:94,STICK_ARROW_TOP_REVERSE_DOTTED:95,STICK_ARROW_BOTTOM_REVERSE_DOTTED:96,BIDIRECTIONAL_SOLID_ARROW:97,DOTTED_ARROW:98,BIDIRECTIONAL_DOTTED_ARROW:99,SOLID_CROSS:100,DOTTED_CROSS:101,SOLID_POINT:102,DOTTED_POINT:103,TXT:104,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",6:"SD",10:"INVALID",14:"create",15:"box",16:"restOfLine",17:"end",19:"autonumber",20:"NUM",21:"off",22:"activate",24:"deactivate",30:"title",31:"legacy_title",32:"acc_title",33:"acc_title_value",34:"acc_descr",35:"acc_descr_value",36:"acc_descr_multiline_value",37:"loop",38:"rect",39:"opt",40:"alt",42:"par",44:"par_over",45:"critical",47:"break",48:"option",49:"and",50:"else",51:"participant",52:"AS",53:"participant_actor",54:"destroy",56:"note",59:"over",61:"links",62:"link",63:"properties",64:"details",66:",",67:"left_of",68:"right_of",70:"+",71:"-",72:"()",73:"ACTOR",75:"CONFIG_START",76:"CONFIG_CONTENT",77:"CONFIG_END",78:"SOLID_OPEN_ARROW",79:"DOTTED_OPEN_ARROW",80:"SOLID_ARROW",81:"SOLID_ARROW_TOP",82:"SOLID_ARROW_BOTTOM",83:"STICK_ARROW_TOP",84:"STICK_ARROW_BOTTOM",85:"SOLID_ARROW_TOP_DOTTED",86:"SOLID_ARROW_BOTTOM_DOTTED",87:"STICK_ARROW_TOP_DOTTED",88:"STICK_ARROW_BOTTOM_DOTTED",89:"SOLID_ARROW_TOP_REVERSE",90:"SOLID_ARROW_BOTTOM_REVERSE",91:"STICK_ARROW_TOP_REVERSE",92:"STICK_ARROW_BOTTOM_REVERSE",93:"SOLID_ARROW_TOP_REVERSE_DOTTED",94:"SOLID_ARROW_BOTTOM_REVERSE_DOTTED",95:"STICK_ARROW_TOP_REVERSE_DOTTED",96:"STICK_ARROW_BOTTOM_REVERSE_DOTTED",97:"BIDIRECTIONAL_SOLID_ARROW",98:"DOTTED_ARROW",99:"BIDIRECTIONAL_DOTTED_ARROW",100:"SOLID_CROSS",101:"DOTTED_CROSS",102:"SOLID_POINT",103:"DOTTED_POINT",104:"TXT"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[8,1],[11,0],[11,2],[12,2],[12,1],[12,1],[9,1],[9,2],[9,4],[9,2],[9,4],[9,3],[9,3],[9,2],[9,3],[9,3],[9,2],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[9,2],[9,2],[9,1],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[46,1],[46,4],[43,1],[43,4],[41,1],[41,4],[13,5],[13,3],[13,5],[13,3],[13,3],[13,5],[13,3],[13,5],[13,3],[25,4],[25,4],[26,3],[27,3],[28,3],[29,3],[65,2],[65,1],[60,3],[60,1],[57,1],[57,1],[18,5],[18,5],[18,5],[18,5],[18,6],[18,4],[55,2],[74,3],[23,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[58,1]],performAction:(0,c.K2)(function(t,e,a,r,s,i,n){var o=i.length-1;switch(s){case 3:return r.apply(i[o]),i[o];case 4:case 10:case 8:case 9:case 14:this.$=[];break;case 5:case 11:i[o-1].push(i[o]),this.$=i[o-1];break;case 6:case 7:case 12:case 13:case 67:this.$=i[o];break;case 16:i[o].type="createParticipant",this.$=i[o];break;case 17:i[o-1].unshift({type:"boxStart",boxData:r.parseBoxData(i[o-2])}),i[o-1].push({type:"boxEnd",boxText:i[o-2]}),this.$=i[o-1];break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(i[o-2]),sequenceIndexStep:Number(i[o-1]),sequenceVisible:!0,signalType:r.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceIndex:Number(i[o-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:r.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:r.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:r.LINETYPE.AUTONUMBER};break;case 23:this.$={type:"activeStart",signalType:r.LINETYPE.ACTIVE_START,actor:i[o-1].actor};break;case 24:this.$={type:"activeEnd",signalType:r.LINETYPE.ACTIVE_END,actor:i[o-1].actor};break;case 30:r.setDiagramTitle(i[o].substring(6)),this.$=i[o].substring(6);break;case 31:r.setDiagramTitle(i[o].substring(7)),this.$=i[o].substring(7);break;case 32:this.$=i[o].trim(),r.setAccTitle(this.$);break;case 33:case 34:this.$=i[o].trim(),r.setAccDescription(this.$);break;case 35:i[o-1].unshift({type:"loopStart",loopText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.LOOP_START}),i[o-1].push({type:"loopEnd",loopText:i[o-2],signalType:r.LINETYPE.LOOP_END}),this.$=i[o-1];break;case 36:i[o-1].unshift({type:"rectStart",color:r.parseMessage(i[o-2]),signalType:r.LINETYPE.RECT_START}),i[o-1].push({type:"rectEnd",color:r.parseMessage(i[o-2]),signalType:r.LINETYPE.RECT_END}),this.$=i[o-1];break;case 37:i[o-1].unshift({type:"optStart",optText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.OPT_START}),i[o-1].push({type:"optEnd",optText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.OPT_END}),this.$=i[o-1];break;case 38:i[o-1].unshift({type:"altStart",altText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.ALT_START}),i[o-1].push({type:"altEnd",signalType:r.LINETYPE.ALT_END}),this.$=i[o-1];break;case 39:i[o-1].unshift({type:"parStart",parText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.PAR_START}),i[o-1].push({type:"parEnd",signalType:r.LINETYPE.PAR_END}),this.$=i[o-1];break;case 40:i[o-1].unshift({type:"parStart",parText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.PAR_OVER_START}),i[o-1].push({type:"parEnd",signalType:r.LINETYPE.PAR_END}),this.$=i[o-1];break;case 41:i[o-1].unshift({type:"criticalStart",criticalText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.CRITICAL_START}),i[o-1].push({type:"criticalEnd",signalType:r.LINETYPE.CRITICAL_END}),this.$=i[o-1];break;case 42:i[o-1].unshift({type:"breakStart",breakText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.BREAK_START}),i[o-1].push({type:"breakEnd",optText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.BREAK_END}),this.$=i[o-1];break;case 44:this.$=i[o-3].concat([{type:"option",optionText:r.parseMessage(i[o-1]),signalType:r.LINETYPE.CRITICAL_OPTION},i[o]]);break;case 46:this.$=i[o-3].concat([{type:"and",parText:r.parseMessage(i[o-1]),signalType:r.LINETYPE.PAR_AND},i[o]]);break;case 48:this.$=i[o-3].concat([{type:"else",altText:r.parseMessage(i[o-1]),signalType:r.LINETYPE.ALT_ELSE},i[o]]);break;case 49:case 54:i[o-3].draw="participant",i[o-3].type="addParticipant",i[o-3].description=r.parseMessage(i[o-1]),this.$=i[o-3];break;case 50:case 55:i[o-1].draw="participant",i[o-1].type="addParticipant",this.$=i[o-1];break;case 51:case 56:i[o-3].draw="actor",i[o-3].type="addParticipant",i[o-3].description=r.parseMessage(i[o-1]),this.$=i[o-3];break;case 52:case 57:i[o-1].draw="actor",i[o-1].type="addParticipant",this.$=i[o-1];break;case 53:i[o-1].type="destroyParticipant",this.$=i[o-1];break;case 58:this.$=[i[o-1],{type:"addNote",placement:i[o-2],actor:i[o-1].actor,text:i[o]}];break;case 59:i[o-2]=[].concat(i[o-1],i[o-1]).slice(0,2),i[o-2][0]=i[o-2][0].actor,i[o-2][1]=i[o-2][1].actor,this.$=[i[o-1],{type:"addNote",placement:r.PLACEMENT.OVER,actor:i[o-2].slice(0,2),text:i[o]}];break;case 60:this.$=[i[o-1],{type:"addLinks",actor:i[o-1].actor,text:i[o]}];break;case 61:this.$=[i[o-1],{type:"addALink",actor:i[o-1].actor,text:i[o]}];break;case 62:this.$=[i[o-1],{type:"addProperties",actor:i[o-1].actor,text:i[o]}];break;case 63:this.$=[i[o-1],{type:"addDetails",actor:i[o-1].actor,text:i[o]}];break;case 66:this.$=[i[o-2],i[o]];break;case 68:this.$=r.PLACEMENT.LEFTOF;break;case 69:this.$=r.PLACEMENT.RIGHTOF;break;case 70:this.$=[i[o-4],i[o-1],{type:"addMessage",from:i[o-4].actor,to:i[o-1].actor,signalType:i[o-3],msg:i[o],activate:!0},{type:"activeStart",signalType:r.LINETYPE.ACTIVE_START,actor:i[o-1].actor}];break;case 71:this.$=[i[o-4],i[o-1],{type:"addMessage",from:i[o-4].actor,to:i[o-1].actor,signalType:i[o-3],msg:i[o]},{type:"activeEnd",signalType:r.LINETYPE.ACTIVE_END,actor:i[o-4].actor}];break;case 72:this.$=[i[o-4],i[o-1],{type:"addMessage",from:i[o-4].actor,to:i[o-1].actor,signalType:i[o-3],msg:i[o],activate:!0,centralConnection:r.LINETYPE.CENTRAL_CONNECTION},{type:"centralConnection",signalType:r.LINETYPE.CENTRAL_CONNECTION,actor:i[o-1].actor}];break;case 73:this.$=[i[o-4],i[o-1],{type:"addMessage",from:i[o-4].actor,to:i[o-1].actor,signalType:i[o-2],msg:i[o],activate:!1,centralConnection:r.LINETYPE.CENTRAL_CONNECTION_REVERSE},{type:"centralConnectionReverse",signalType:r.LINETYPE.CENTRAL_CONNECTION_REVERSE,actor:i[o-4].actor}];break;case 74:this.$=[i[o-5],i[o-1],{type:"addMessage",from:i[o-5].actor,to:i[o-1].actor,signalType:i[o-3],msg:i[o],activate:!0,centralConnection:r.LINETYPE.CENTRAL_CONNECTION_DUAL},{type:"centralConnection",signalType:r.LINETYPE.CENTRAL_CONNECTION,actor:i[o-1].actor},{type:"centralConnectionReverse",signalType:r.LINETYPE.CENTRAL_CONNECTION_REVERSE,actor:i[o-5].actor}];break;case 75:this.$=[i[o-3],i[o-1],{type:"addMessage",from:i[o-3].actor,to:i[o-1].actor,signalType:i[o-2],msg:i[o]}];break;case 76:this.$={type:"addParticipant",actor:i[o-1],config:i[o]};break;case 77:this.$=i[o-1].trim();break;case 78:this.$={type:"addParticipant",actor:i[o]};break;case 79:this.$=r.LINETYPE.SOLID_OPEN;break;case 80:this.$=r.LINETYPE.DOTTED_OPEN;break;case 81:this.$=r.LINETYPE.SOLID;break;case 82:this.$=r.LINETYPE.SOLID_TOP;break;case 83:this.$=r.LINETYPE.SOLID_BOTTOM;break;case 84:this.$=r.LINETYPE.STICK_TOP;break;case 85:this.$=r.LINETYPE.STICK_BOTTOM;break;case 86:this.$=r.LINETYPE.SOLID_TOP_DOTTED;break;case 87:this.$=r.LINETYPE.SOLID_BOTTOM_DOTTED;break;case 88:this.$=r.LINETYPE.STICK_TOP_DOTTED;break;case 89:this.$=r.LINETYPE.STICK_BOTTOM_DOTTED;break;case 90:this.$=r.LINETYPE.SOLID_ARROW_TOP_REVERSE;break;case 91:this.$=r.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE;break;case 92:this.$=r.LINETYPE.STICK_ARROW_TOP_REVERSE;break;case 93:this.$=r.LINETYPE.STICK_ARROW_BOTTOM_REVERSE;break;case 94:this.$=r.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED;break;case 95:this.$=r.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED;break;case 96:this.$=r.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED;break;case 97:this.$=r.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED;break;case 98:this.$=r.LINETYPE.BIDIRECTIONAL_SOLID;break;case 99:this.$=r.LINETYPE.DOTTED;break;case 100:this.$=r.LINETYPE.BIDIRECTIONAL_DOTTED;break;case 101:this.$=r.LINETYPE.SOLID_CROSS;break;case 102:this.$=r.LINETYPE.DOTTED_CROSS;break;case 103:this.$=r.LINETYPE.SOLID_POINT;break;case 104:this.$=r.LINETYPE.DOTTED_POINT;break;case 105:this.$=r.parseMessage(i[o].trim().substring(1))}},"anonymous"),table:[{3:1,4:e,5:a,6:r},{1:[3]},{3:5,4:e,5:a,6:r},{3:6,4:e,5:a,6:r},t([1,4,5,10,14,15,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,51,53,54,56,61,62,63,64,73],s,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:i,5:n,8:8,9:10,10:o,13:13,14:d,15:l,18:16,19:h,22:p,23:41,24:T,25:20,26:21,27:22,28:23,29:24,30:E,31:g,32:u,34:_,36:O,37:y,38:x,39:m,40:b,42:I,44:R,45:f,47:L,51:P,53:N,54:w,56:D,61:S,62:A,63:k,64:C,73:M},t(v,[2,5]),{9:48,13:13,14:d,15:l,18:16,19:h,22:p,23:41,24:T,25:20,26:21,27:22,28:23,29:24,30:E,31:g,32:u,34:_,36:O,37:y,38:x,39:m,40:b,42:I,44:R,45:f,47:L,51:P,53:N,54:w,56:D,61:S,62:A,63:k,64:C,73:M},t(v,[2,7]),t(v,[2,8]),t(v,[2,9]),t(v,[2,15]),{13:49,51:P,53:N,54:w},{16:[1,50]},{5:[1,51]},{5:[1,54],20:[1,52],21:[1,53]},{23:55,73:M},{23:56,73:M},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},{5:[1,61]},t(v,[2,30]),t(v,[2,31]),{33:[1,62]},{35:[1,63]},t(v,[2,34]),{16:[1,64]},{16:[1,65]},{16:[1,66]},{16:[1,67]},{16:[1,68]},{16:[1,69]},{16:[1,70]},{16:[1,71]},{23:72,55:73,73:Y},{23:75,55:76,73:Y},{23:77,73:M},{69:78,72:[1,79],78:B,79:K,80:$,81:V,82:W,83:F,84:q,85:H,86:z,87:j,88:U,89:G,90:X,91:Z,92:J,93:Q,94:tt,95:et,96:at,97:rt,98:st,99:it,100:nt,101:ot,102:ct,103:dt},{57:106,59:[1,107],67:[1,108],68:[1,109]},{23:110,73:M},{23:111,73:M},{23:112,73:M},{23:113,73:M},t([5,66,72,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104],lt),t(v,[2,6]),t(v,[2,16]),t(ht,[2,10],{11:114}),t(v,[2,18]),{5:[1,116],20:[1,115]},{5:[1,117]},t(v,[2,22]),{5:[1,118]},{5:[1,119]},t(v,[2,25]),t(v,[2,26]),t(v,[2,27]),t(v,[2,28]),t(v,[2,29]),t(v,[2,32]),t(v,[2,33]),t(pt,s,{7:120}),t(pt,s,{7:121}),t(pt,s,{7:122}),t(Tt,s,{41:123,7:124}),t(Et,s,{43:125,7:126}),t(Et,s,{7:126,43:127}),t(gt,s,{46:128,7:129}),t(pt,s,{7:130}),{5:[1,132],52:[1,131]},{5:[1,134],52:[1,133]},t(ut,lt,{74:135,75:[1,136]}),{5:[1,138],52:[1,137]},{5:[1,140],52:[1,139]},{5:[1,141]},{23:145,70:[1,142],71:[1,143],72:[1,144],73:M},{69:146,78:B,79:K,80:$,81:V,82:W,83:F,84:q,85:H,86:z,87:j,88:U,89:G,90:X,91:Z,92:J,93:Q,94:tt,95:et,96:at,97:rt,98:st,99:it,100:nt,101:ot,102:ct,103:dt},t(_t,[2,79]),t(_t,[2,80]),t(_t,[2,81]),t(_t,[2,82]),t(_t,[2,83]),t(_t,[2,84]),t(_t,[2,85]),t(_t,[2,86]),t(_t,[2,87]),t(_t,[2,88]),t(_t,[2,89]),t(_t,[2,90]),t(_t,[2,91]),t(_t,[2,92]),t(_t,[2,93]),t(_t,[2,94]),t(_t,[2,95]),t(_t,[2,96]),t(_t,[2,97]),t(_t,[2,98]),t(_t,[2,99]),t(_t,[2,100]),t(_t,[2,101]),t(_t,[2,102]),t(_t,[2,103]),t(_t,[2,104]),{23:147,73:M},{23:149,60:148,73:M},{73:[2,68]},{73:[2,69]},{58:150,104:Ot},{58:152,104:Ot},{58:153,104:Ot},{58:154,104:Ot},{4:[1,157],5:[1,159],12:156,13:158,17:[1,155],51:P,53:N,54:w},{5:[1,160]},t(v,[2,20]),t(v,[2,21]),t(v,[2,23]),t(v,[2,24]),{4:i,5:n,8:8,9:10,10:o,13:13,14:d,15:l,17:[1,161],18:16,19:h,22:p,23:41,24:T,25:20,26:21,27:22,28:23,29:24,30:E,31:g,32:u,34:_,36:O,37:y,38:x,39:m,40:b,42:I,44:R,45:f,47:L,51:P,53:N,54:w,56:D,61:S,62:A,63:k,64:C,73:M},{4:i,5:n,8:8,9:10,10:o,13:13,14:d,15:l,17:[1,162],18:16,19:h,22:p,23:41,24:T,25:20,26:21,27:22,28:23,29:24,30:E,31:g,32:u,34:_,36:O,37:y,38:x,39:m,40:b,42:I,44:R,45:f,47:L,51:P,53:N,54:w,56:D,61:S,62:A,63:k,64:C,73:M},{4:i,5:n,8:8,9:10,10:o,13:13,14:d,15:l,17:[1,163],18:16,19:h,22:p,23:41,24:T,25:20,26:21,27:22,28:23,29:24,30:E,31:g,32:u,34:_,36:O,37:y,38:x,39:m,40:b,42:I,44:R,45:f,47:L,51:P,53:N,54:w,56:D,61:S,62:A,63:k,64:C,73:M},{17:[1,164]},{4:i,5:n,8:8,9:10,10:o,13:13,14:d,15:l,17:[2,47],18:16,19:h,22:p,23:41,24:T,25:20,26:21,27:22,28:23,29:24,30:E,31:g,32:u,34:_,36:O,37:y,38:x,39:m,40:b,42:I,44:R,45:f,47:L,50:[1,165],51:P,53:N,54:w,56:D,61:S,62:A,63:k,64:C,73:M},{17:[1,166]},{4:i,5:n,8:8,9:10,10:o,13:13,14:d,15:l,17:[2,45],18:16,19:h,22:p,23:41,24:T,25:20,26:21,27:22,28:23,29:24,30:E,31:g,32:u,34:_,36:O,37:y,38:x,39:m,40:b,42:I,44:R,45:f,47:L,49:[1,167],51:P,53:N,54:w,56:D,61:S,62:A,63:k,64:C,73:M},{17:[1,168]},{17:[1,169]},{4:i,5:n,8:8,9:10,10:o,13:13,14:d,15:l,17:[2,43],18:16,19:h,22:p,23:41,24:T,25:20,26:21,27:22,28:23,29:24,30:E,31:g,32:u,34:_,36:O,37:y,38:x,39:m,40:b,42:I,44:R,45:f,47:L,48:[1,170],51:P,53:N,54:w,56:D,61:S,62:A,63:k,64:C,73:M},{4:i,5:n,8:8,9:10,10:o,13:13,14:d,15:l,17:[1,171],18:16,19:h,22:p,23:41,24:T,25:20,26:21,27:22,28:23,29:24,30:E,31:g,32:u,34:_,36:O,37:y,38:x,39:m,40:b,42:I,44:R,45:f,47:L,51:P,53:N,54:w,56:D,61:S,62:A,63:k,64:C,73:M},{16:[1,172]},t(v,[2,50]),{16:[1,173]},t(v,[2,55]),t(ut,[2,76]),{76:[1,174]},{16:[1,175]},t(v,[2,52]),{16:[1,176]},t(v,[2,57]),t(v,[2,53]),{23:177,73:M},{23:178,73:M},{23:179,73:M},{58:180,104:Ot},{23:181,72:[1,182],73:M},{58:183,104:Ot},{58:184,104:Ot},{66:[1,185],104:[2,67]},{5:[2,60]},{5:[2,105]},{5:[2,61]},{5:[2,62]},{5:[2,63]},t(v,[2,17]),t(ht,[2,11]),{13:186,51:P,53:N,54:w},t(ht,[2,13]),t(ht,[2,14]),t(v,[2,19]),t(v,[2,35]),t(v,[2,36]),t(v,[2,37]),t(v,[2,38]),{16:[1,187]},t(v,[2,39]),{16:[1,188]},t(v,[2,40]),t(v,[2,41]),{16:[1,189]},t(v,[2,42]),{5:[1,190]},{5:[1,191]},{77:[1,192]},{5:[1,193]},{5:[1,194]},{58:195,104:Ot},{58:196,104:Ot},{58:197,104:Ot},{5:[2,75]},{58:198,104:Ot},{23:199,73:M},{5:[2,58]},{5:[2,59]},{23:200,73:M},t(ht,[2,12]),t(Tt,s,{7:124,41:201}),t(Et,s,{7:126,43:202}),t(gt,s,{7:129,46:203}),t(v,[2,49]),t(v,[2,54]),t(ut,[2,77]),t(v,[2,51]),t(v,[2,56]),{5:[2,70]},{5:[2,71]},{5:[2,72]},{5:[2,73]},{58:204,104:Ot},{104:[2,66]},{17:[2,48]},{17:[2,46]},{17:[2,44]},{5:[2,74]}],defaultActions:{5:[2,1],6:[2,2],108:[2,68],109:[2,69],150:[2,60],151:[2,105],152:[2,61],153:[2,62],154:[2,63],180:[2,75],183:[2,58],184:[2,59],195:[2,70],196:[2,71],197:[2,72],198:[2,73],200:[2,66],201:[2,48],202:[2,46],203:[2,44],204:[2,74]},parseError:(0,c.K2)(function(t,e){if(!e.recoverable){var a=new Error(t);throw a.hash=e,a}this.trace(t)},"parseError"),parse:(0,c.K2)(function(t){var e=this,a=[0],r=[],s=[null],i=[],n=this.table,o="",d=0,l=0,h=0,p=i.slice.call(arguments,1),T=Object.create(this.lexer),E={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(E.yy[g]=this.yy[g]);T.setInput(t,E.yy),E.yy.lexer=T,E.yy.parser=this,void 0===T.yylloc&&(T.yylloc={});var u=T.yylloc;i.push(u);var _=T.options&&T.options.ranges;function O(){var t;return"number"!=typeof(t=r.pop()||T.lex()||1)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof E.yy.parseError?this.parseError=E.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,c.K2)(function(t){a.length=a.length-2*t,s.length=s.length-t,i.length=i.length-t},"popStack"),(0,c.K2)(O,"lex");for(var y,x,m,b,I,R,f,L,P,N={};;){if(m=a[a.length-1],this.defaultActions[m]?b=this.defaultActions[m]:(null==y&&(y=O()),b=n[m]&&n[m][y]),void 0===b||!b.length||!b[0]){var w="";for(R in P=[],n[m])this.terminals_[R]&&R>2&&P.push("'"+this.terminals_[R]+"'");w=T.showPosition?"Parse error on line "+(d+1)+":\n"+T.showPosition()+"\nExpecting "+P.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(d+1)+": Unexpected "+(1==y?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(w,{text:T.match,token:this.terminals_[y]||y,line:T.yylineno,loc:u,expected:P})}if(b[0]instanceof Array&&b.length>1)throw new Error("Parse Error: multiple actions possible at state: "+m+", token: "+y);switch(b[0]){case 1:a.push(y),s.push(T.yytext),i.push(T.yylloc),a.push(b[1]),y=null,x?(y=x,x=null):(l=T.yyleng,o=T.yytext,d=T.yylineno,u=T.yylloc,h>0&&h--);break;case 2:if(f=this.productions_[b[1]][1],N.$=s[s.length-f],N._$={first_line:i[i.length-(f||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(f||1)].first_column,last_column:i[i.length-1].last_column},_&&(N._$.range=[i[i.length-(f||1)].range[0],i[i.length-1].range[1]]),void 0!==(I=this.performAction.apply(N,[o,l,d,E.yy,b[1],s,i].concat(p))))return I;f&&(a=a.slice(0,-1*f*2),s=s.slice(0,-1*f),i=i.slice(0,-1*f)),a.push(this.productions_[b[1]][0]),s.push(N.$),i.push(N._$),L=n[a[a.length-2]][a[a.length-1]],a.push(L);break;case 3:return!0}}return!0},"parse")},xt=function(){return{EOF:1,parseError:(0,c.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,c.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,c.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,c.K2)(function(t){var e=t.length,a=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),a.length-1&&(this.yylineno-=a.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:a?(a.length===r.length?this.yylloc.first_column:0)+r[r.length-a.length].length-a[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,c.K2)(function(){return this._more=!0,this},"more"),reject:(0,c.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,c.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,c.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,c.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,c.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,c.K2)(function(t,e){var a,r,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],a=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a)return a;if(this._backtrack){for(var i in s)this[i]=s[i];return!1}return!1},"test_match"),next:(0,c.K2)(function(){if(this.done)return this.EOF;var t,e,a,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),i=0;i<s.length;i++)if((a=this._input.match(this.rules[s[i]]))&&(!e||a[0].length>e[0].length)){if(e=a,r=i,this.options.backtrack_lexer){if(!1!==(t=this.test_match(a,s[i])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,c.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,c.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,c.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,c.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,c.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,c.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,c.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,c.K2)(function(t,e,a,r){switch(a){case 0:case 59:case 92:return 5;case 1:case 2:case 3:case 4:case 5:break;case 6:return 20;case 7:return this.begin("CONFIG"),75;case 8:return 76;case 9:return this.popState(),this.begin("ALIAS"),77;case 10:return this.popState(),this.popState(),77;case 11:case 60:return e.yytext=e.yytext.trim(),73;case 12:return e.yytext=e.yytext.trim(),this.begin("ALIAS"),73;case 13:return e.yytext=e.yytext.trim(),this.popState(),73;case 14:return this.popState(),10;case 15:return e.yytext=e.yytext.trim(),this.popState(),10;case 16:return this.begin("LINE"),15;case 17:return this.begin("ID"),51;case 18:return this.begin("ID"),53;case 19:return 14;case 20:return this.begin("ID"),54;case 21:return this.popState(),this.popState(),this.begin("LINE"),52;case 22:return this.popState(),this.popState(),5;case 23:return this.begin("LINE"),37;case 24:return this.begin("LINE"),38;case 25:return this.begin("LINE"),39;case 26:return this.begin("LINE"),40;case 27:return this.begin("LINE"),50;case 28:return this.begin("LINE"),42;case 29:return this.begin("LINE"),44;case 30:return this.begin("LINE"),49;case 31:return this.begin("LINE"),45;case 32:return this.begin("LINE"),48;case 33:return this.begin("LINE"),47;case 34:return this.popState(),16;case 35:return 17;case 36:return 67;case 37:return 68;case 38:return 61;case 39:return 62;case 40:return 63;case 41:return 64;case 42:return 59;case 43:return 56;case 44:return this.begin("ID"),22;case 45:return this.begin("ID"),24;case 46:return 30;case 47:return 31;case 48:return this.begin("acc_title"),32;case 49:return this.popState(),"acc_title_value";case 50:return this.begin("acc_descr"),34;case 51:return this.popState(),"acc_descr_value";case 52:this.begin("acc_descr_multiline");break;case 53:this.popState();break;case 54:return"acc_descr_multiline_value";case 55:return 6;case 56:return 19;case 57:return 21;case 58:return 66;case 61:return 80;case 62:return 97;case 63:return 98;case 64:return 99;case 65:return 78;case 66:return 79;case 67:return 100;case 68:return 101;case 69:return 102;case 70:return 103;case 71:return 85;case 72:return 86;case 73:return 87;case 74:return 88;case 75:return 93;case 76:return 94;case 77:return 95;case 78:return 96;case 79:return 81;case 80:return 82;case 81:return 83;case 82:return 84;case 83:return 89;case 84:return 90;case 85:return 91;case 86:return 92;case 87:case 88:return 104;case 89:return 70;case 90:return 71;case 91:return 72;case 93:return 10}},"anonymous"),rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:([0-9]+(\.[0-9]{1,2})?|\.[0-9]{1,2})(?=[ \n]+))/i,/^(?:@\{)/i,/^(?:[^\}]+)/i,/^(?:\}(?=\s+as\s))/i,/^(?:\})/i,/^(?:[^\<->\->:\n,;@\s]+(?=@\{))/i,/^(?:[^<>:\n,;@\s]+(?=\s+as\s))/i,/^(?:[^<>:\n,;@]+(?=\s*[\n;#]|$))/i,/^(?:[^<>:\n,;@]*<[^\n]*)/i,/^(?:[^\n]+)/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:create\b)/i,/^(?:destroy\b)/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:par_over\b)/i,/^(?:and\b)/i,/^(?:critical\b)/i,/^(?:option\b)/i,/^(?:break\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\/\\\+\()\+<\->\->:\n,;]+((?!(-x|--x|-\)|--\)|-\|\\|-\\|-\/|-\/\/|-\|\/|\/\|-|\\\|-|\/\/-|\\\\-|\/\|-|--\|\\|--|\(\)))[\-]*[^\+<\->\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:<<->>)/i,/^(?:-->>)/i,/^(?:<<-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?:--\|\\)/i,/^(?:--\|\/)/i,/^(?:--\\\\)/i,/^(?:--\/\/)/i,/^(?:\/\|--)/i,/^(?:\\\|--)/i,/^(?:\/\/--)/i,/^(?:\\\\--)/i,/^(?:-\|\\)/i,/^(?:-\|\/)/i,/^(?:-\\\\)/i,/^(?:-\/\/)/i,/^(?:\/\|-)/i,/^(?:\\\|-)/i,/^(?:\/\/-)/i,/^(?:\\\\-)/i,/^(?::(?:(?:no)?wrap)?[^#\n;]*)/i,/^(?::)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:\(\))/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[53,54],inclusive:!1},acc_descr:{rules:[51],inclusive:!1},acc_title:{rules:[49],inclusive:!1},ID:{rules:[2,3,7,11,12,13,14,15],inclusive:!1},ALIAS:{rules:[2,3,21,22],inclusive:!1},LINE:{rules:[2,3,34],inclusive:!1},CONFIG:{rules:[8,9,10],inclusive:!1},CONFIG_DATA:{rules:[],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,6,16,17,18,19,20,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,50,52,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93],inclusive:!0}}}}();function mt(){this.yy={}}return yt.lexer=xt,(0,c.K2)(mt,"Parser"),mt.prototype=yt,yt.Parser=mt,new mt}();h.parser=h;var p=h,T={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31,PAR_OVER_START:32,BIDIRECTIONAL_SOLID:33,BIDIRECTIONAL_DOTTED:34,SOLID_TOP:41,SOLID_BOTTOM:42,STICK_TOP:43,STICK_BOTTOM:44,SOLID_ARROW_TOP_REVERSE:45,SOLID_ARROW_BOTTOM_REVERSE:46,STICK_ARROW_TOP_REVERSE:47,STICK_ARROW_BOTTOM_REVERSE:48,SOLID_TOP_DOTTED:51,SOLID_BOTTOM_DOTTED:52,STICK_TOP_DOTTED:53,STICK_BOTTOM_DOTTED:54,SOLID_ARROW_TOP_REVERSE_DOTTED:55,SOLID_ARROW_BOTTOM_REVERSE_DOTTED:56,STICK_ARROW_TOP_REVERSE_DOTTED:57,STICK_ARROW_BOTTOM_REVERSE_DOTTED:58,CENTRAL_CONNECTION:59,CENTRAL_CONNECTION_REVERSE:60,CENTRAL_CONNECTION_DUAL:61},E={FILLED:0,OPEN:1},g={LEFTOF:0,RIGHTOF:1,OVER:2},u="actor",_="control",O="database",y="entity",x=class{constructor(){this.state=new i.m(()=>({prevActor:void 0,actors:new Map,createdActors:new Map,destroyedActors:new Map,boxes:[],messages:[],notes:[],sequenceNumbersEnabled:!1,wrapEnabled:void 0,currentBox:void 0,lastCreated:void 0,lastDestroyed:void 0})),this.setAccTitle=o.SV,this.setAccDescription=o.EI,this.setDiagramTitle=o.ke,this.getAccTitle=o.iN,this.getAccDescription=o.m7,this.getDiagramTitle=o.ab,this.apply=this.apply.bind(this),this.parseBoxData=this.parseBoxData.bind(this),this.parseMessage=this.parseMessage.bind(this),this.clear(),this.setWrap((0,o.D7)().wrap),this.LINETYPE=T,this.ARROWTYPE=E,this.PLACEMENT=g}static{(0,c.K2)(this,"SequenceDB")}addBox(t){this.state.records.boxes.push({name:t.text,wrap:t.wrap??this.autoWrap(),fill:t.color,actorKeys:[]}),this.state.records.currentBox=this.state.records.boxes.slice(-1)[0]}addActor(t,e,a,s,i){let n,o=this.state.records.currentBox;if(void 0!==i){let t;t=i.includes("\n")?i+"\n":"{\n"+i+"\n}",n=(0,r.H)(t,{schema:r.r})}s=n?.type??s,!n?.alias||a&&a.text!==e||(a={text:n.alias,wrap:a?.wrap,type:s});const c=this.state.records.actors.get(t);if(c){if(this.state.records.currentBox&&c.box&&this.state.records.currentBox!==c.box)throw new Error(`A same participant should only be defined in one Box: ${c.name} can't be in '${c.box.name}' and in '${this.state.records.currentBox.name}' at the same time.`);if(o=c.box?c.box:this.state.records.currentBox,c.box=o,c&&e===c.name&&null==a)return}if(null==a?.text&&(a={text:e,type:s}),null!=s&&null!=a.text||(a={text:e,type:s}),this.state.records.actors.set(t,{box:o,name:e,description:a.text,wrap:a.wrap??this.autoWrap(),prevActor:this.state.records.prevActor,links:{},properties:{},actorCnt:null,rectData:null,type:s??"participant"}),this.state.records.prevActor){const e=this.state.records.actors.get(this.state.records.prevActor);e&&(e.nextActor=t)}this.state.records.currentBox&&this.state.records.currentBox.actorKeys.push(t),this.state.records.prevActor=t}activationCount(t){let e,a=0;if(!t)return 0;for(e=0;e<this.state.records.messages.length;e++)this.state.records.messages[e].type===this.LINETYPE.ACTIVE_START&&this.state.records.messages[e].from===t&&a++,this.state.records.messages[e].type===this.LINETYPE.ACTIVE_END&&this.state.records.messages[e].from===t&&a--;return a}addMessage(t,e,a,r){this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:t,to:e,message:a.text,wrap:a.wrap??this.autoWrap(),answer:r})}addSignal(t,e,a,r,s=!1,i){if(r===this.LINETYPE.ACTIVE_END){if(this.activationCount(t??"")<1){const e=new Error("Trying to inactivate an inactive participant ("+t+")");throw e.hash={text:"->>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},e}}return this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:t,to:e,message:a?.text??"",wrap:a?.wrap??this.autoWrap(),type:r,activate:s,centralConnection:i??0}),!0}hasAtLeastOneBox(){return this.state.records.boxes.length>0}hasAtLeastOneBoxWithTitle(){return this.state.records.boxes.some(t=>t.name)}getMessages(){return this.state.records.messages}getBoxes(){return this.state.records.boxes}getActors(){return this.state.records.actors}getCreatedActors(){return this.state.records.createdActors}getDestroyedActors(){return this.state.records.destroyedActors}getActor(t){return this.state.records.actors.get(t)}getActorKeys(){return[...this.state.records.actors.keys()]}enableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!0}disableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!1}showSequenceNumbers(){return this.state.records.sequenceNumbersEnabled}setWrap(t){this.state.records.wrapEnabled=t}extractWrap(t){if(void 0===t)return{};t=t.trim();const e=null!==/^:?wrap:/.exec(t)||null===/^:?nowrap:/.exec(t)&&void 0;return{cleanedText:(void 0===e?t:t.replace(/^:?(?:no)?wrap:/,"")).trim(),wrap:e}}autoWrap(){return void 0!==this.state.records.wrapEnabled?this.state.records.wrapEnabled:(0,o.D7)().sequence?.wrap??!1}clear(){this.state.reset(),(0,o.IU)()}parseMessage(t){const e=t.trim(),{wrap:a,cleanedText:r}=this.extractWrap(e),s={text:r,wrap:a};return c.Rm.debug(`parseMessage: ${JSON.stringify(s)}`),s}parseBoxData(t){const e=/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/.exec(t);let a=e?.[1]?e[1].trim():"transparent",r=e?.[2]?e[2].trim():void 0;if(window?.CSS)window.CSS.supports("color",a)||(a="transparent",r=t.trim());else{const e=(new Option).style;e.color=a,e.color!==a&&(a="transparent",r=t.trim())}const{wrap:s,cleanedText:i}=this.extractWrap(r);return{text:i?(0,o.jZ)(i,(0,o.D7)()):void 0,color:a,wrap:s}}addNote(t,e,a){const r={actor:t,placement:e,message:a.text,wrap:a.wrap??this.autoWrap()},s=[].concat(t,t);this.state.records.notes.push(r),this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:s[0],to:s[1],message:a.text,wrap:a.wrap??this.autoWrap(),type:this.LINETYPE.NOTE,placement:e})}addLinks(t,e){const a=this.getActor(t);try{let t=(0,o.jZ)(e.text,(0,o.D7)());t=t.replace(/=/g,"="),t=t.replace(/&/g,"&");const r=JSON.parse(t);this.insertLinks(a,r)}catch(r){c.Rm.error("error while parsing actor link text",r)}}addALink(t,e){const a=this.getActor(t);try{const t={};let r=(0,o.jZ)(e.text,(0,o.D7)());const s=r.indexOf("@");r=r.replace(/=/g,"="),r=r.replace(/&/g,"&");const i=r.slice(0,s-1).trim(),n=r.slice(s+1).trim();t[i]=n,this.insertLinks(a,t)}catch(r){c.Rm.error("error while parsing actor link text",r)}}insertLinks(t,e){if(null==t.links)t.links=e;else for(const a in e)t.links[a]=e[a]}addProperties(t,e){const a=this.getActor(t);try{const t=(0,o.jZ)(e.text,(0,o.D7)()),r=JSON.parse(t);this.insertProperties(a,r)}catch(r){c.Rm.error("error while parsing actor properties text",r)}}insertProperties(t,e){if(null==t.properties)t.properties=e;else for(const a in e)t.properties[a]=e[a]}boxEnd(){this.state.records.currentBox=void 0}addDetails(t,e){const a=this.getActor(t),r=document.getElementById(e.text);try{const t=r.innerHTML,e=JSON.parse(t);e.properties&&this.insertProperties(a,e.properties),e.links&&this.insertLinks(a,e.links)}catch(s){c.Rm.error("error while parsing actor details text",s)}}getActorProperty(t,e){if(void 0!==t?.properties)return t.properties[e]}apply(t){if(Array.isArray(t))t.forEach(t=>{this.apply(t)});else switch(t.type){case"sequenceIndex":this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:void 0,to:void 0,message:{start:t.sequenceIndex,step:t.sequenceIndexStep,visible:t.sequenceVisible},wrap:!1,type:t.signalType});break;case"addParticipant":this.addActor(t.actor,t.actor,t.description,t.draw,t.config);break;case"createParticipant":if(this.state.records.actors.has(t.actor))throw new Error("It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior");this.state.records.lastCreated=t.actor,this.addActor(t.actor,t.actor,t.description,t.draw,t.config),this.state.records.createdActors.set(t.actor,this.state.records.messages.length);break;case"destroyParticipant":this.state.records.lastDestroyed=t.actor,this.state.records.destroyedActors.set(t.actor,this.state.records.messages.length);break;case"activeStart":case"centralConnection":case"centralConnectionReverse":case"activeEnd":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"addNote":this.addNote(t.actor,t.placement,t.text);break;case"addLinks":this.addLinks(t.actor,t.text);break;case"addALink":this.addALink(t.actor,t.text);break;case"addProperties":this.addProperties(t.actor,t.text);break;case"addDetails":this.addDetails(t.actor,t.text);break;case"addMessage":if(this.state.records.lastCreated){if(t.to!==this.state.records.lastCreated)throw new Error("The created participant "+this.state.records.lastCreated.name+" does not have an associated creating message after its declaration. Please check the sequence diagram.");this.state.records.lastCreated=void 0}else if(this.state.records.lastDestroyed){if(t.to!==this.state.records.lastDestroyed&&t.from!==this.state.records.lastDestroyed)throw new Error("The destroyed participant "+this.state.records.lastDestroyed.name+" does not have an associated destroying message after its declaration. Please check the sequence diagram.");this.state.records.lastDestroyed=void 0}this.addSignal(t.from,t.to,t.msg,t.signalType,t.activate,t.centralConnection);break;case"boxStart":this.addBox(t.boxData);break;case"boxEnd":this.boxEnd();break;case"loopStart":this.addSignal(void 0,void 0,t.loopText,t.signalType);break;case"loopEnd":case"rectEnd":case"optEnd":case"altEnd":case"parEnd":case"criticalEnd":case"breakEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"rectStart":this.addSignal(void 0,void 0,t.color,t.signalType);break;case"optStart":this.addSignal(void 0,void 0,t.optText,t.signalType);break;case"altStart":case"else":this.addSignal(void 0,void 0,t.altText,t.signalType);break;case"setAccTitle":(0,o.SV)(t.text);break;case"parStart":case"and":this.addSignal(void 0,void 0,t.parText,t.signalType);break;case"criticalStart":this.addSignal(void 0,void 0,t.criticalText,t.signalType);break;case"option":this.addSignal(void 0,void 0,t.optionText,t.signalType);break;case"breakStart":this.addSignal(void 0,void 0,t.breakText,t.signalType)}}getConfig(){return(0,o.D7)().sequence}},m=(0,c.K2)(t=>{const e=t.dropShadow??"none",{look:a}=(0,o.D7)();return`.actor {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n stroke-width: ${t.strokeWidth??1};\n }\n\n rect.actor.outer-path[data-look="neo"] {\n filter: ${e};\n }\n\n rect.note[data-look="neo"] {\n stroke:${t.noteBorderColor};\n fill:${t.noteBkgColor};\n filter: ${e};\n }\n\n text.actor > tspan {\n fill: ${t.actorTextColor};\n stroke: none;\n }\n\n .actor-line {\n stroke: ${t.actorLineColor};\n }\n\n .innerArc {\n stroke-width: 1.5;\n stroke-dasharray: none;\n }\n\n .messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: ${t.signalColor};\n }\n\n .messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: ${t.signalColor};\n }\n\n [id$="-arrowhead"] path {\n fill: ${t.signalColor};\n stroke: ${t.signalColor};\n }\n\n .sequenceNumber {\n fill: ${t.sequenceNumberColor};\n }\n\n [id$="-sequencenumber"] {\n fill: ${t.signalColor};\n }\n\n [id$="-crosshead"] path {\n fill: ${t.signalColor};\n stroke: ${t.signalColor};\n }\n\n .messageText {\n fill: ${t.signalTextColor};\n stroke: none;\n }\n\n .labelBox {\n stroke: ${t.labelBoxBorderColor};\n fill: ${t.labelBoxBkgColor};\n filter: ${"neo"===a?e:"none"};\n }\n\n .labelText, .labelText > tspan {\n fill: ${t.labelTextColor};\n stroke: none;\n }\n\n .loopText, .loopText > tspan {\n fill: ${t.loopTextColor};\n stroke: none;\n }\n\n .sectionTitle, .sectionTitle > tspan {\n fill: ${t.loopTextColor};\n stroke: none;\n }\n\n .loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: ${t.labelBoxBorderColor};\n fill: ${t.labelBoxBorderColor};\n }\n\n .note {\n //stroke: #decc93;\n stroke: ${t.noteBorderColor};\n fill: ${t.noteBkgColor};\n }\n\n .noteText, .noteText > tspan {\n fill: ${t.noteTextColor};\n stroke: none;\n ${t.noteFontWeight?`font-weight: ${t.noteFontWeight};`:""}\n }\n\n .activation0 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .activation1 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .activation2 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .actorPopupMenu {\n position: absolute;\n }\n\n .actorPopupMenuPanel {\n position: absolute;\n fill: ${t.actorBkg};\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));\n}\n .actor-man circle, line {\n fill: ${t.actorBkg};\n stroke-width: 2px;\n }\n\n g rect.rect {\n filter: ${e};\n stroke: ${t.nodeBorder};\n }\n`},"getStyles"),b="actor-top",I="actor-bottom",R="actor-box",f="actor-man",L=new Set(["redux-color","redux-dark-color"]),P=(0,c.K2)(function(t,e){const a=(0,s.tk)(t,e);return"neo"===(0,o.zj)().look&&a.attr("data-look","neo"),a},"drawRect"),N=(0,c.K2)(function(t,e,a,r,s){if(void 0===e.links||null===e.links||0===Object.keys(e.links).length)return{height:0,width:0};const i=e.links,n=e.actorCnt,o=e.rectData;var c="none";s&&(c="block !important");const d=t.append("g");d.attr("id","actor"+n+"_popup"),d.attr("class","actorPopupMenu"),d.attr("display",c);var h="";void 0!==o.class&&(h=" "+o.class);let p=o.width>a?o.width:a;const T=d.append("rect");if(T.attr("class","actorPopupMenuPanel"+h),T.attr("x",o.x),T.attr("y",o.height),T.attr("fill",o.fill),T.attr("stroke",o.stroke),T.attr("width",p),T.attr("height",o.height),T.attr("rx",o.rx),T.attr("ry",o.ry),null!=i){var E=20;for(let t in i){var g=d.append("a"),u=(0,l.J)(i[t]);g.attr("xlink:href",u),g.attr("target","_blank"),nt(r)(t,g,o.x+10,o.height+E,p,20,{class:"actor"},r),E+=30}}return T.attr("height",E),{height:o.height+E,width:p}},"drawPopup"),w=(0,c.K2)(function(t){return"var pu = document.getElementById('"+t+"'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }"},"popupMenuToggle"),D=(0,c.K2)(async function(t,e,a=null){let r=t.append("foreignObject");const s=await(0,o.dj)(e.text,(0,o.zj)()),i=r.append("xhtml:div").attr("style","width: fit-content;").attr("xmlns","http://www.w3.org/1999/xhtml").html(s).node().getBoundingClientRect();if(r.attr("height",Math.round(i.height)).attr("width",Math.round(i.width)),"noteText"===e.class){const a=t.node().firstChild;a.setAttribute("height",i.height+2*e.textMargin);const s=a.getBBox();r.attr("x",Math.round(s.x+s.width/2-i.width/2)).attr("y",Math.round(s.y+s.height/2-i.height/2))}else if(a){let{startx:t,stopx:s,starty:n}=a;if(t>s){const e=t;t=s,s=e}r.attr("x",Math.round(t+Math.abs(t-s)/2-i.width/2)),"loopText"===e.class?r.attr("y",Math.round(n)):r.attr("y",Math.round(n-i.height))}return[r]},"drawKatex"),S=(0,c.K2)(function(t,e){let a=0,r=0;const s=e.text.split(o.Y2.lineBreakRegex),[i,d]=(0,n.I5)(e.fontSize);let l=[],h=0,p=(0,c.K2)(()=>e.y,"yfunc");if(void 0!==e.valign&&void 0!==e.textMargin&&e.textMargin>0)switch(e.valign){case"top":case"start":p=(0,c.K2)(()=>Math.round(e.y+e.textMargin),"yfunc");break;case"middle":case"center":p=(0,c.K2)(()=>Math.round(e.y+(a+r+e.textMargin)/2),"yfunc");break;case"bottom":case"end":p=(0,c.K2)(()=>Math.round(e.y+(a+r+2*e.textMargin)-e.textMargin),"yfunc")}if(void 0!==e.anchor&&void 0!==e.textMargin&&void 0!==e.width)switch(e.anchor){case"left":case"start":e.x=Math.round(e.x+e.textMargin),e.anchor="start",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"middle":case"center":e.x=Math.round(e.x+e.width/2),e.anchor="middle",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"right":case"end":e.x=Math.round(e.x+e.width-e.textMargin),e.anchor="end",e.dominantBaseline="middle",e.alignmentBaseline="middle"}for(let[o,c]of s.entries()){void 0!==e.textMargin&&0===e.textMargin&&void 0!==i&&(h=o*i);const s=t.append("text");s.attr("x",e.x),s.attr("y",p()),void 0!==e.anchor&&s.attr("text-anchor",e.anchor).attr("dominant-baseline",e.dominantBaseline).attr("alignment-baseline",e.alignmentBaseline),void 0!==e.fontFamily&&s.style("font-family",e.fontFamily),void 0!==d&&s.style("font-size",d),void 0!==e.fontWeight&&s.style("font-weight",e.fontWeight),void 0!==e.fill&&s.attr("fill",e.fill),void 0!==e.class&&s.attr("class",e.class),void 0!==e.dy?s.attr("dy",e.dy):0!==h&&s.attr("dy",h);const T=c||n.pe;if(e.tspan){const t=s.append("tspan");t.attr("x",e.x),void 0!==e.fill&&t.attr("fill",e.fill),t.text(T)}else s.text(T);void 0!==e.valign&&void 0!==e.textMargin&&e.textMargin>0&&(r+=(s._groups||s)[0][0].getBBox().height,a=r),l.push(s)}return l},"drawText"),A=(0,c.K2)(function(t,e){function a(t,e,a,r,s){return t+","+e+" "+(t+a)+","+e+" "+(t+a)+","+(e+r-s)+" "+(t+a-1.2*s)+","+(e+r)+" "+t+","+(e+r)}(0,c.K2)(a,"genPoints");const r=t.append("polygon");return r.attr("points",a(e.x,e.y,e.width,e.height,7)),r.attr("class","labelBox"),e.y=e.y+e.height/2,S(t,e),r},"drawLabel"),k=-1,C=(0,c.K2)((t,e,a,r)=>{t.select&&a.forEach(a=>{const s=e.get(a),i=t.select("#actor"+s.actorCnt);!r.mirrorActors&&s.stopy?i.attr("y2",s.stopy+s.height/2):r.mirrorActors&&i.attr("y2",s.stopy)})},"fixLifeLineHeights"),M=(0,c.K2)(function(t,e,a,r,i){const n=r?e.stopy:e.starty,c=e.x+e.width/2,d=n+e.height,{look:l,theme:h,themeVariables:p}=a,{bkgColorArray:T,borderColorArray:E}=p,g=t.append("g").lower();var u=g;r||(k++,Object.keys(e.links||{}).length&&!a.forceMenus&&u.attr("onclick",w(`actor${k}_popup`)).attr("cursor","pointer"),u.append("line").attr("id","actor"+k).attr("x1",c).attr("y1",d).attr("x2",c).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name).attr("data-et","life-line").attr("data-id",e.name),u=g.append("g"),e.actorCnt=k,null!=e.links&&u.attr("id","root-"+k),"neo"===l&&u.attr("data-look","neo"));const _=(0,s.PB)();var O="actor";e.properties?.class?O=e.properties.class:_.fill="#eaeaea",O+=r?` ${I}`:` ${b}`,_.x=e.x,_.y=n,_.width=e.width,_.height=e.height,_.class=O,_.rx=3,_.ry=3,_.name=e.name,"neo"===l&&(_.rx=6,_.ry=6);const y=P(u,_),x=i.get(e.name)??0;if(L.has(h)&&(y.style("stroke",E[x%E.length]),y.style("fill",T[x%E.length])),"neo"===l&&y.attr("filter","url(#drop-shadow)"),e.rectData=_,e.properties?.icon){const t=e.properties.icon.trim();"@"===t.charAt(0)?(0,s.CP)(u,_.x+_.width-20,_.y+10,t.substr(1)):(0,s.aC)(u,_.x+_.width-20,_.y+10,t)}r||(u.attr("data-et","participant"),u.attr("data-type","participant"),u.attr("data-id",e.name)),it(a,(0,o.Wi)(e.description))(e.description,u,_.x,_.y,_.width,_.height,{class:`actor ${R}`},a);let m=e.height;if(y.node){const t=y.node().getBBox();e.height=t.height,m=t.height}return m},"drawActorTypeParticipant"),v=(0,c.K2)(function(t,e,a,r,i){const n=r?e.stopy:e.starty,c=e.x+e.width/2,d=n+e.height,{look:l,theme:h,themeVariables:p}=a,{bkgColorArray:T,borderColorArray:E}=p,g=t.append("g").lower();var u=g;r||(k++,Object.keys(e.links||{}).length&&!a.forceMenus&&u.attr("onclick",w(`actor${k}_popup`)).attr("cursor","pointer"),u.append("line").attr("id","actor"+k).attr("x1",c).attr("y1",d).attr("x2",c).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name).attr("data-et","life-line").attr("data-id",e.name),u=g.append("g"),e.actorCnt=k,null!=e.links&&u.attr("id","root-"+k),"neo"===l&&u.attr("data-look","neo"));const _=(0,s.PB)();var O="actor";e.properties?.class?O=e.properties.class:_.fill="#eaeaea",O+=r?` ${I}`:` ${b}`,_.x=e.x,_.y=n,_.width=e.width,_.height=e.height,_.class=O,_.name=e.name;const y={..._,x:_.x+-6,y:_.y+6,class:"actor"},x=P(u,_),m=P(u,y);e.rectData=_,"neo"===l&&u.attr("filter","url(#drop-shadow)");const f=i.get(e.name)??0;if(L.has(h)&&(x.style("stroke",E[f%E.length]),x.style("fill",T[f%E.length]),m.style("stroke",E[f%E.length]),m.style("fill",T[f%E.length])),e.properties?.icon){const t=e.properties.icon.trim();"@"===t.charAt(0)?(0,s.CP)(u,_.x+_.width-20,_.y+10,t.substr(1)):(0,s.aC)(u,_.x+_.width-20,_.y+10,t)}it(a,(0,o.Wi)(e.description))(e.description,u,_.x-6,_.y+6,_.width,_.height,{class:`actor ${R}`},a);let N=e.height;if(x.node){const t=x.node().getBBox();e.height=t.height,N=t.height}return r||(u.attr("data-et","participant"),u.attr("data-type","collections"),u.attr("data-id",e.name)),N},"drawActorTypeCollections"),Y=(0,c.K2)(function(t,e,a,r,i){const n=r?e.stopy:e.starty,c=e.x+e.width/2,d=n+e.height,{look:l,theme:h,themeVariables:p}=a,{bkgColorArray:T,borderColorArray:E}=p,g=t.append("g").lower();let u=g;r||(k++,Object.keys(e.links||{}).length&&!a.forceMenus&&u.attr("onclick",w(`actor${k}_popup`)).attr("cursor","pointer"),u.append("line").attr("id","actor"+k).attr("x1",c).attr("y1",d).attr("x2",c).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name).attr("data-et","life-line").attr("data-id",e.name),u=g.append("g"),e.actorCnt=k,null!=e.links&&u.attr("id","root-"+k),"neo"===l&&u.attr("data-look","neo"));const _=(0,s.PB)();let O="actor";e.properties?.class?O=e.properties.class:_.fill="#eaeaea",O+=r?` ${I}`:` ${b}`,u.attr("class",O),_.x=e.x,_.y=n,_.width=e.width,_.height=e.height,_.name=e.name;const y=_.height/2,x=y/(2.5+_.height/50),m=u.append("g"),f=u.append("g"),P=`M ${_.x},${_.y+y}\n a ${x},${y} 0 0 0 0,${_.height}\n h ${_.width-2*x}\n a ${x},${y} 0 0 0 0,-${_.height}\n Z\n `;m.append("path").attr("d",P),f.append("path").attr("d",`M ${_.x},${_.y+y}\n a ${x},${y} 0 0 0 0,${_.height}`),m.attr("transform",`translate(${x}, ${-_.height/2})`),f.attr("transform",`translate(${_.width-x}, ${-_.height/2})`),e.rectData=_,"neo"===l&&m.attr("filter","url(#drop-shadow)");const N=i.get(e.name)??0;if(L.has(h)&&(m.style("stroke",E[N%E.length]),m.style("fill",T[N%E.length]),f.style("stroke",E[N%E.length]),f.style("fill",T[N%E.length])),e.properties?.icon){const t=e.properties.icon.trim(),a=_.x+_.width-20,r=_.y+10;"@"===t.charAt(0)?(0,s.CP)(u,a,r,t.substr(1)):(0,s.aC)(u,a,r,t)}it(a,(0,o.Wi)(e.description))(e.description,u,_.x,_.y,_.width,_.height,{class:`actor ${R}`},a);let D=e.height;const S=m.select("path:last-child");if(S.node()){const t=S.node().getBBox();e.height=t.height,D=t.height}return r||(u.attr("data-et","participant"),u.attr("data-type","queue"),u.attr("data-id",e.name)),D},"drawActorTypeQueue"),B=(0,c.K2)(function(t,e,a,r,i,n){const c=r?e.stopy:e.starty,d=e.x+e.width/2,l=c+75,{look:h,theme:p,themeVariables:T}=a,{bkgColorArray:E,borderColorArray:g,actorBorder:u,actorBkg:_}=T,O=t.append("g").lower();r||(k++,O.append("line").attr("id","actor"+k).attr("x1",d).attr("y1",l).attr("x2",d).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name).attr("data-et","life-line").attr("data-id",e.name),e.actorCnt=k);const y=t.append("g");let x=f;x+=r?` ${I}`:` ${b}`,y.attr("class",x),y.attr("name",e.name);const m=(0,s.PB)();m.x=e.x,m.y=c,m.fill="#eaeaea",m.width=e.width,m.height=e.height,m.class="actor";const R=e.x+e.width/2,P=c+32;y.append("defs").append("marker").attr("id",i+"-filled-head-control").attr("refX",11).attr("refY",5.8).attr("markerWidth",20).attr("markerHeight",28).attr("orient","172.5").attr("stroke-width",1.2).append("path").attr("d","M 14.4 5.6 L 7.2 10.4 L 8.8 5.6 L 7.2 0.8 Z"),y.append("circle").attr("cx",R).attr("cy",P).attr("r",22).attr("filter",""+("neo"===h?"url(#drop-shadow)":"")),y.append("line").attr("marker-end","url(#"+i+"-filled-head-control)").attr("transform",`translate(${R}, ${P-22})`);const N=n.get(e.name)??0;L.has(p)?(y.style("stroke",g[N%g.length]),y.style("fill",E[N%g.length])):(y.style("stroke",u),y.style("fill",_));const w=y.node().getBBox();return e.height=w.height+2*(a?.sequence?.labelBoxHeight??0),it(a,(0,o.Wi)(e.description))(e.description,y,m.x,m.y+22+(r?5:12),m.width,m.height,{class:`actor ${f}`},a),r||(y.attr("data-et","participant"),y.attr("data-type","control"),y.attr("data-id",e.name)),e.height},"drawActorTypeControl"),K=(0,c.K2)(function(t,e,a,r,i){const n=r?e.stopy:e.starty,c=e.x+e.width/2,d=n+75,{look:l,theme:h,themeVariables:p}=a,{bkgColorArray:T,borderColorArray:E}=p,g=t.append("g").lower(),u=t.append("g");let _="actor";_+=r?` ${I}`:` ${b}`,u.attr("class",_),u.attr("name",e.name);const O=(0,s.PB)();O.x=e.x,O.y=n,O.fill="#eaeaea",O.width=e.width,O.height=e.height,O.class="actor";const y=e.x+e.width/2,x=n+(r?10:25),m=22;u.append("circle").attr("cx",y).attr("cy",x).attr("r",m).attr("width",e.width).attr("height",e.height),u.append("line").attr("x1",y-m).attr("x2",y+m).attr("y1",x+m).attr("y2",x+m).attr("stroke-width",2),"neo"===l&&u.attr("filter","url(#drop-shadow)");const R=i.get(e.name)??0;L.has(h)&&(u.style("stroke",E[R%E.length]),u.style("fill",T[R%E.length]));const P=u.node().getBBox();return e.height=P.height+(a?.sequence?.labelBoxHeight??0),r||(k++,g.append("line").attr("id","actor"+k).attr("x1",c).attr("y1",d).attr("x2",c).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name).attr("data-et","life-line").attr("data-id",e.name),e.actorCnt=k),it(a,(0,o.Wi)(e.description))(e.description,u,O.x,O.y+(r?15:30),O.width,O.height,{class:`actor ${f}`},a),r?u.attr("transform","translate(0, 22)"):(u.attr("transform","translate(0, 6)"),u.attr("data-et","participant"),u.attr("data-type","entity"),u.attr("data-id",e.name)),e.height},"drawActorTypeEntity"),$=(0,c.K2)(function(t,e,a,r,i){const n=r?e.stopy:e.starty,c=e.x+e.width/2,d=n+e.height+2*a.boxTextMargin,{theme:l,themeVariables:h,look:p}=a,{bkgColorArray:T,borderColorArray:E,actorBorder:g}=h,u=t.append("g").lower();let _=u;r||(k++,Object.keys(e.links||{}).length&&!a.forceMenus&&_.attr("onclick",w(`actor${k}_popup`)).attr("cursor","pointer"),_.append("line").attr("id","actor"+k).attr("x1",c).attr("y1",d).attr("x2",c).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name).attr("data-et","life-line").attr("data-id",e.name),_=u.append("g"),e.actorCnt=k,null!=e.links&&_.attr("id","root-"+k),"neo"===p&&_.attr("data-look","neo"));const O=(0,s.PB)();let y="actor";e.properties?.class?y=e.properties.class:O.fill="#eaeaea",y+=r?` ${I}`:` ${b}`,O.x=e.x,O.y=n,O.width=e.width,O.height=e.height,O.class=y,O.name=e.name,O.x=e.x,O.y=n;const x=O.width/3,m=O.width/3,f=x/2,P=f/(2.5+x/50),N=_.append("g");N.attr("class",y);const D=`\n M ${O.x},${O.y+P}\n a ${f},${P} 0 0 0 ${x},0\n a ${f},${P} 0 0 0 -${x},0\n l 0,${m-2*P}\n a ${f},${P} 0 0 0 ${x},0\n l 0,-${m-2*P}\n`;N.append("path").attr("d",D),"neo"===p&&N.attr("filter","url(#drop-shadow)");const S=i.get(e.name)??0;L.has(l)?(N.style("stroke",E[S%E.length]),N.style("fill",T[S%E.length])):N.style("stroke",g),N.attr("transform",`translate(${x}, ${P})`),e.rectData=O,it(a,(0,o.Wi)(e.description))(e.description,_,O.x,O.y+35,O.width,O.height,{class:`actor ${R}`},a);const A=N.select("path:last-child");if(A.node()){const t=A.node().getBBox();e.height=t.height+(a.sequence.labelBoxHeight??0)}return r||(_.attr("data-et","participant"),_.attr("data-type","database"),_.attr("data-id",e.name)),e.height},"drawActorTypeDatabase"),V=(0,c.K2)(function(t,e,a,r,i){const n=r?e.stopy:e.starty,c=e.x+e.width/2,d=n+80,l=t.append("g").lower(),{look:h,theme:p,themeVariables:T}=a,{bkgColorArray:E,borderColorArray:g,actorBorder:u}=T;r||(k++,l.append("line").attr("id","actor"+k).attr("x1",c).attr("y1",d).attr("x2",c).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name).attr("data-et","life-line").attr("data-id",e.name),e.actorCnt=k);const _=t.append("g");let O=f;O+=r?` ${I}`:` ${b}`,_.attr("class",O),_.attr("name",e.name);const y=(0,s.PB)();y.x=e.x,y.y=n,y.fill="#eaeaea",y.width=e.width,y.height=e.height,y.class="actor",_.append("line").attr("id","actor-man-torso"+k).attr("x1",e.x+e.width/2-55).attr("y1",n+12).attr("x2",e.x+e.width/2-15).attr("y2",n+12),_.append("line").attr("id","actor-man-arms"+k).attr("x1",e.x+e.width/2-55).attr("y1",n+2).attr("x2",e.x+e.width/2-55).attr("y2",n+22),_.append("circle").attr("cx",e.x+e.width/2).attr("cy",n+12).attr("r",22),"neo"===h&&_.attr("filter","url(#drop-shadow)");const x=i.get(e.name)??0;L.has(p)?(_.style("stroke",g[x%g.length]),_.style("fill",E[x%g.length])):_.style("stroke",u);const m=_.node().getBBox();return e.height=m.height+(a.sequence.labelBoxHeight??0),it(a,(0,o.Wi)(e.description))(e.description,_,y.x,y.y+15,y.width,y.height,{class:`actor ${f}`},a),_.attr("transform","translate(0,21)"),r||(_.attr("data-et","participant"),_.attr("data-type","boundary"),_.attr("data-id",e.name)),e.height},"drawActorTypeBoundary"),W=(0,c.K2)(function(t,e,a,r,i){const n=r?e.stopy:e.starty,c=e.x+e.width/2,d=n+80,{look:l,theme:h,themeVariables:p}=a,{bkgColorArray:T,borderColorArray:E,actorBorder:g}=p,u=t.append("g").lower();r||(k++,u.append("line").attr("id","actor"+k).attr("x1",c).attr("y1",d).attr("x2",c).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name).attr("data-et","life-line").attr("data-id",e.name),e.actorCnt=k);const _=t.append("g");let O=f;O+=r?` ${I}`:` ${b}`,_.attr("class",O),_.attr("name",e.name),r||_.attr("data-et","participant").attr("data-type","actor").attr("data-id",e.name);const y="neo"===l?.5:1,x="neo"===l?n+30*(1-y):n;_.append("line").attr("id","actor-man-torso"+k).attr("x1",c).attr("y1",x+25*y).attr("x2",c).attr("y2",x+45*y),_.append("line").attr("id","actor-man-arms"+k).attr("x1",c-18*y).attr("y1",x+33*y).attr("x2",c+18*y).attr("y2",x+33*y),_.append("line").attr("x1",c-18*y).attr("y1",x+60*y).attr("x2",c).attr("y2",x+45*y),_.append("line").attr("x1",c).attr("y1",x+45*y).attr("x2",c+16*y).attr("y2",x+60*y);const m=_.append("circle");m.attr("cx",e.x+e.width/2),m.attr("cy",x+10*y),m.attr("r",15*y),m.attr("width",e.width*y),m.attr("height",e.height*y);const R=_.node().getBBox();e.height=R.height;const P=(0,s.PB)();P.x=e.x,P.y=x,P.fill="#eaeaea",P.width=e.width,P.height=e.height/y,P.class="actor",P.rx=3,P.ry=3;const N=i.get(e.name)??0;return L.has(h)?(_.style("stroke",E[N%E.length]),_.style("fill",T[N%E.length])):_.style("stroke",g),it(a,(0,o.Wi)(e.description))(e.description,_,P.x,x+35*y-("neo"===l?10:0),P.width,P.height,{class:`actor ${f}`},a),e.height},"drawActorTypeActor"),F=(0,c.K2)(async function(t,e,a,r,s,i,n){const o=n??new Map([...i.db.getActors().values()].map((t,e)=>[t.name,e]));switch(e.type){case"actor":return await W(t,e,a,r,o);case"participant":return await M(t,e,a,r,o);case"boundary":return await V(t,e,a,r,o);case"control":return await B(t,e,a,r,s,o);case"entity":return await K(t,e,a,r,o);case"database":return await $(t,e,a,r,o);case"collections":return await v(t,e,a,r,o);case"queue":return await Y(t,e,a,r,o)}},"drawActor"),q=(0,c.K2)(function(t,e,a){const r=t.append("g");U(r,e),e.name&&it(a)(e.name,r,e.x,e.y+a.boxTextMargin+(e.textMaxHeight||0)/2,e.width,0,{class:"text"},a),r.lower()},"drawBox"),H=(0,c.K2)(function(t){return t.append("g")},"anchorElement"),z=(0,c.K2)(function(t,e,a,r,i,n,o){const{theme:c,themeVariables:d}=r,{bkgColorArray:l,borderColorArray:h,mainBkg:p}=d,T=(0,s.PB)(),E=e.anchored,g=e.actor;T.x=e.startx,T.y=e.starty,T.class="activation"+i%3,T.width=e.stopx-e.startx,T.height=a-e.starty;const u=P(E,T),_=(o??new Map([...n.db.getActors().values()].map((t,e)=>[t.name,e]))).get(g)??0;L.has(c)&&(u.style("stroke",h[_%h.length]),u.style("fill",l[_%h.length]??p))},"drawActivation"),j=(0,c.K2)(async function(t,e,a,r,i){const{boxMargin:n,boxTextMargin:d,labelBoxHeight:l,labelBoxWidth:h,messageFontFamily:p,messageFontSize:T,messageFontWeight:E}=r,g=t.append("g").attr("data-et","control-structure").attr("data-id","i"+i.id),u=(0,c.K2)(function(t,e,a,r){return g.append("line").attr("x1",t).attr("y1",e).attr("x2",a).attr("y2",r).attr("class","loopLine")},"drawLoopLine");u(e.startx,e.starty,e.stopx,e.starty),u(e.stopx,e.starty,e.stopx,e.stopy),u(e.startx,e.stopy,e.stopx,e.stopy),u(e.startx,e.starty,e.startx,e.stopy),void 0!==e.sections&&e.sections.forEach(function(t){u(e.startx,t.y,e.stopx,t.y).style("stroke-dasharray","3, 3")});let _=(0,s.HT)();_.text=a,_.x=e.startx,_.y=e.starty,_.fontFamily=p,_.fontSize=T,_.fontWeight=E,_.anchor="middle",_.valign="middle",_.tspan=!1,_.width=Math.max(h??0,50),_.height=l+("neo"===r.look?15:0)||20,_.textMargin=d,_.class="labelText",A(g,_),_=rt(),_.text=e.title,_.x=e.startx+h/2+(e.stopx-e.startx)/2,_.y=e.starty+n+d,_.anchor="middle",_.valign="middle",_.textMargin=d,_.class="loopText",_.fontFamily=p,_.fontSize=T,_.fontWeight=E,_.wrap=!0;let O=(0,o.Wi)(_.text)?await D(g,_,e):S(g,_);if(void 0!==e.sectionTitles)for(const[s,c]of Object.entries(e.sectionTitles))if(c.message){_.text=c.message,_.x=e.startx+(e.stopx-e.startx)/2,_.y=e.sections[s].y+n+d,_.class="sectionTitle",_.anchor="middle",_.valign="middle",_.tspan=!1,_.fontFamily=p,_.fontSize=T,_.fontWeight=E,_.wrap=e.wrap,(0,o.Wi)(_.text)?(e.starty=e.sections[s].y,await D(g,_,e)):S(g,_);let t=Math.round(O.map(t=>(t._groups||t)[0][0].getBBox().height).reduce((t,e)=>t+e));e.sections[s].height+=t-(n+d)}return e.height=Math.round(e.stopy-e.starty),g},"drawLoop"),U=(0,c.K2)(function(t,e){(0,s.lC)(t,e)},"drawBackgroundRect"),G=(0,c.K2)(function(t,e){t.append("defs").append("symbol").attr("id",e+"-database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),X=(0,c.K2)(function(t,e){t.append("defs").append("symbol").attr("id",e+"-computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),Z=(0,c.K2)(function(t,e){t.append("defs").append("symbol").attr("id",e+"-clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),J=(0,c.K2)(function(t,e){t.append("defs").append("marker").attr("id",e+"-arrowhead").attr("refX",7.9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M -1 0 L 10 5 L 0 10 z")},"insertArrowHead"),Q=(0,c.K2)(function(t,e){t.append("defs").append("marker").attr("id",e+"-filled-head").attr("refX",15.5).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),tt=(0,c.K2)(function(t,e){t.append("defs").append("marker").attr("id",e+"-sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},"insertSequenceNumber"),et=(0,c.K2)(function(t,e){t.append("defs").append("marker").attr("id",e+"-crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",4.5).append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1pt").attr("d","M 1,2 L 6,7 M 6,2 L 1,7")},"insertArrowCrossHead"),at=(0,c.K2)(function(t,e){const{theme:a}=e;t.append("defs").append("filter").attr("id","drop-shadow").attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",""+("redux"===a||"redux-color"===a?"#000000":"#FFFFFF"))},"insertDropShadow"),rt=(0,c.K2)(function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},"getTextObj"),st=(0,c.K2)(function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),it=function(){function t(t,e,a,r,i,n,o){s(e.append("text").attr("x",a+i/2).attr("y",r+n/2+5).style("text-anchor","middle").text(t),o)}function e(t,e,a,r,i,c,d,l){const{actorFontSize:h,actorFontFamily:p,actorFontWeight:T}=l,[E,g]=(0,n.I5)(h),u=t.split(o.Y2.lineBreakRegex);for(let n=0;n<u.length;n++){const t=n*E-E*(u.length-1)/2,o=e.append("text").attr("x",a+i/2).attr("y",r).style("text-anchor","middle").style("font-size",g).style("font-weight",T).style("font-family",p);o.append("tspan").attr("x",a+i/2).attr("dy",t).text(u[n]),o.attr("y",r+c/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),s(o,d)}}function a(t,a,r,i,n,o,c,d){const l=a.append("switch"),h=l.append("foreignObject").attr("x",r).attr("y",i).attr("width",n).attr("height",o).append("xhtml:div").style("display","table").style("height","100%").style("width","100%");h.append("div").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(t),e(t,l,r,i,n,o,c,d),s(h,c)}async function r(t,a,r,i,n,c,d,l){const h=await(0,o.Dl)(t,(0,o.zj)()),p=a.append("switch"),T=p.append("foreignObject").attr("x",r+n/2-h.width/2).attr("y",i+c/2-h.height/2).attr("width",h.width).attr("height",h.height).append("xhtml:div").style("height","100%").style("width","100%");T.append("div").style("text-align","center").style("vertical-align","middle").html(await(0,o.dj)(t,(0,o.zj)())),e(t,p,r,i,n,c,d,l),s(T,d)}function s(t,e){for(const a in e)e.hasOwnProperty(a)&&t.attr(a,e[a])}return(0,c.K2)(t,"byText"),(0,c.K2)(e,"byTspan"),(0,c.K2)(a,"byFo"),(0,c.K2)(r,"byKatex"),(0,c.K2)(s,"_setTextAttrs"),function(s,i=!1){return i?r:"fo"===s.textPlacement?a:"old"===s.textPlacement?t:e}}(),nt=function(){function t(t,e,a,s,i,n,o){r(e.append("text").attr("x",a).attr("y",s).style("text-anchor","start").text(t),o)}function e(t,e,a,s,i,n,c,d){const{actorFontSize:l,actorFontFamily:h,actorFontWeight:p}=d,T=t.split(o.Y2.lineBreakRegex);for(let o=0;o<T.length;o++){const t=o*l-l*(T.length-1)/2,i=e.append("text").attr("x",a).attr("y",s).style("text-anchor","start").style("font-size",l).style("font-weight",p).style("font-family",h);i.append("tspan").attr("x",a).attr("dy",t).text(T[o]),i.attr("y",s+n/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),r(i,c)}}function a(t,a,s,i,n,o,c,d){const l=a.append("switch"),h=l.append("foreignObject").attr("x",s).attr("y",i).attr("width",n).attr("height",o).append("xhtml:div").style("display","table").style("height","100%").style("width","100%");h.append("div").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(t),e(t,l,s,i,0,o,c,d),r(h,c)}function r(t,e){for(const a in e)e.hasOwnProperty(a)&&t.attr(a,e[a])}return(0,c.K2)(t,"byText"),(0,c.K2)(e,"byTspan"),(0,c.K2)(a,"byFo"),(0,c.K2)(r,"_setTextAttrs"),function(r){return"fo"===r.textPlacement?a:"old"===r.textPlacement?t:e}}(),ot=(0,c.K2)(function(t,e){t.append("defs").append("marker").attr("id",e+"-solidTopArrowHead").attr("refX",7.9).attr("refY",7.25).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M 0 0 L 10 8 L 0 8 z")},"insertSolidTopArrowHead"),ct=(0,c.K2)(function(t,e){t.append("defs").append("marker").attr("id",e+"-solidBottomArrowHead").attr("refX",7.9).attr("refY",.75).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M 0 0 L 10 0 L 0 8 z")},"insertSolidBottomArrowHead"),dt=(0,c.K2)(function(t,e){t.append("defs").append("marker").attr("id",e+"-stickTopArrowHead").attr("refX",7.5).attr("refY",7).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M 0 0 L 7 7").attr("stroke","black").attr("stroke-width",1.5).attr("fill","none")},"insertStickTopArrowHead"),lt=(0,c.K2)(function(t,e){t.append("defs").append("marker").attr("id",e+"-stickBottomArrowHead").attr("refX",7.5).attr("refY",0).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M 0 7 L 7 0").attr("stroke","black").attr("stroke-width",1.5).attr("fill","none")},"insertStickBottomArrowHead"),ht={drawRect:P,drawText:S,drawLabel:A,drawActor:F,drawBox:q,drawPopup:N,anchorElement:H,drawActivation:z,drawLoop:j,drawBackgroundRect:U,insertArrowHead:J,insertArrowFilledHead:Q,insertSequenceNumber:tt,insertArrowCrossHead:et,insertDatabaseIcon:G,insertComputerIcon:X,insertClockIcon:Z,getTextObj:rt,getNoteRect:st,fixLifeLineHeights:C,sanitizeUrl:l.J,insertDropShadow:at,insertSolidTopArrowHead:ot,insertSolidBottomArrowHead:ct,insertStickTopArrowHead:dt,insertStickBottomArrowHead:lt},pt={},Tt={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],models:{getHeight:(0,c.K2)(function(){return Math.max.apply(null,0===this.actors.length?[0]:this.actors.map(t=>t.height||0))+(0===this.loops.length?0:this.loops.map(t=>t.height||0).reduce((t,e)=>t+e))+(0===this.messages.length?0:this.messages.map(t=>t.height||0).reduce((t,e)=>t+e))+(0===this.notes.length?0:this.notes.map(t=>t.height||0).reduce((t,e)=>t+e))},"getHeight"),clear:(0,c.K2)(function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},"clear"),addBox:(0,c.K2)(function(t){this.boxes.push(t)},"addBox"),addActor:(0,c.K2)(function(t){this.actors.push(t)},"addActor"),addLoop:(0,c.K2)(function(t){this.loops.push(t)},"addLoop"),addMessage:(0,c.K2)(function(t){this.messages.push(t)},"addMessage"),addNote:(0,c.K2)(function(t){this.notes.push(t)},"addNote"),lastActor:(0,c.K2)(function(){return this.actors[this.actors.length-1]},"lastActor"),lastLoop:(0,c.K2)(function(){return this.loops[this.loops.length-1]},"lastLoop"),lastMessage:(0,c.K2)(function(){return this.messages[this.messages.length-1]},"lastMessage"),lastNote:(0,c.K2)(function(){return this.notes[this.notes.length-1]},"lastNote"),actors:[],boxes:[],loops:[],messages:[],notes:[]},init:(0,c.K2)(function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,Rt((0,o.D7)())},"init"),updateVal:(0,c.K2)(function(t,e,a,r){void 0===t[e]?t[e]=a:t[e]=r(a,t[e])},"updateVal"),updateBounds:(0,c.K2)(function(t,e,a,r){const s=this;let i=0;function n(n){return(0,c.K2)(function(o){i++;const c=s.sequenceItems.length-i+1;s.updateVal(o,"starty",e-c*pt.boxMargin,Math.min),s.updateVal(o,"stopy",r+c*pt.boxMargin,Math.max),s.updateVal(Tt.data,"startx",t-c*pt.boxMargin,Math.min),s.updateVal(Tt.data,"stopx",a+c*pt.boxMargin,Math.max),"activation"!==n&&(s.updateVal(o,"startx",t-c*pt.boxMargin,Math.min),s.updateVal(o,"stopx",a+c*pt.boxMargin,Math.max),s.updateVal(Tt.data,"starty",e-c*pt.boxMargin,Math.min),s.updateVal(Tt.data,"stopy",r+c*pt.boxMargin,Math.max))},"updateItemBounds")}(0,c.K2)(n,"updateFn"),this.sequenceItems.forEach(n()),this.activations.forEach(n("activation"))},"updateBounds"),insert:(0,c.K2)(function(t,e,a,r){const s=o.Y2.getMin(t,a),i=o.Y2.getMax(t,a),n=o.Y2.getMin(e,r),c=o.Y2.getMax(e,r);this.updateVal(Tt.data,"startx",s,Math.min),this.updateVal(Tt.data,"starty",n,Math.min),this.updateVal(Tt.data,"stopx",i,Math.max),this.updateVal(Tt.data,"stopy",c,Math.max),this.updateBounds(s,n,i,c)},"insert"),newActivation:(0,c.K2)(function(t,e,a){const r=a.get(t.from),s=ft(t.from).length||0,i=r.x+r.width/2+(s-1)*pt.activationWidth/2;this.activations.push({startx:i,starty:this.verticalPos+2,stopx:i+pt.activationWidth,stopy:void 0,actor:t.from,anchored:ht.anchorElement(e)})},"newActivation"),endActivation:(0,c.K2)(function(t){const e=this.activations.map(function(t){return t.actor}).lastIndexOf(t.from);return this.activations.splice(e,1)[0]},"endActivation"),createLoop:(0,c.K2)(function(t={message:void 0,wrap:!1,width:void 0},e){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:t.message,wrap:t.wrap,width:t.width,height:0,fill:e}},"createLoop"),newLoop:(0,c.K2)(function(t={message:void 0,wrap:!1,width:void 0},e){this.sequenceItems.push(this.createLoop(t,e))},"newLoop"),endLoop:(0,c.K2)(function(){return this.sequenceItems.pop()},"endLoop"),isLoopOverlap:(0,c.K2)(function(){return!!this.sequenceItems.length&&this.sequenceItems[this.sequenceItems.length-1].overlap},"isLoopOverlap"),addSectionToLoop:(0,c.K2)(function(t){const e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push({y:Tt.getVerticalPos(),height:0}),e.sectionTitles.push(t),this.sequenceItems.push(e)},"addSectionToLoop"),saveVerticalPos:(0,c.K2)(function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},"saveVerticalPos"),resetVerticalPos:(0,c.K2)(function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},"resetVerticalPos"),bumpVerticalPos:(0,c.K2)(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=o.Y2.getMax(this.data.stopy,this.verticalPos)},"bumpVerticalPos"),getVerticalPos:(0,c.K2)(function(){return this.verticalPos},"getVerticalPos"),getBounds:(0,c.K2)(function(){return{bounds:this.data,models:this.models}},"getBounds")},Et=(0,c.K2)(async function(t,e,a){Tt.bumpVerticalPos(pt.boxMargin),e.height=pt.boxMargin,e.starty=Tt.getVerticalPos();const r=(0,s.PB)();r.x=e.startx,r.y=e.starty,r.width=e.width||pt.width,r.class="note";const i=t.append("g");i.attr("data-et","note"),i.attr("data-id","i"+a);const n=ht.drawRect(i,r),c=(0,s.HT)();c.x=e.startx,c.y=e.starty,c.width=r.width,c.dy="1em",c.text=e.message,c.class="noteText",c.fontFamily=pt.noteFontFamily,c.fontSize=pt.noteFontSize,c.fontWeight=pt.noteFontWeight,c.anchor=pt.noteAlign,c.textMargin=pt.noteMargin,c.valign="center";const d=(0,o.Wi)(c.text)?await D(i,c):S(i,c),l=Math.round(d.map(t=>(t._groups||t)[0][0].getBBox().height).reduce((t,e)=>t+e));n.attr("height",l+2*pt.noteMargin),e.height+=l+2*pt.noteMargin,Tt.bumpVerticalPos(l+2*pt.noteMargin),e.stopy=e.starty+l+2*pt.noteMargin,e.stopx=e.startx+r.width,Tt.insert(e.startx,e.starty,e.stopx,e.stopy),Tt.models.addNote(e)},"drawNote"),gt=(0,c.K2)(function(t,e,a,r,s,i,n){const o=r.db.getActors(),d=o.get(e.from),l=o.get(e.to),h=a.sequenceVisible;let p=d.x+d.width/2,T=l.x+l.width/2;const E=p<=T,g=vt(e,r),u=t.append("g"),_=(0,c.K2)((t,e)=>{const a=t?16.5:-16.5;return e?-a:a},"getCircleOffset"),O=(0,c.K2)(t=>{u.append("circle").attr("cx",t).attr("cy",n).attr("r",5).attr("width",10).attr("height",10)},"drawCircle"),{CENTRAL_CONNECTION:y,CENTRAL_CONNECTION_REVERSE:x,CENTRAL_CONNECTION_DUAL:m}=r.db.LINETYPE;if(h)switch(e.centralConnection){case y:g&&(T+=_(E,!0));break;case x:g||(p+=_(E,!1));break;case m:g?T+=_(E,!0):p+=_(E,!1)}switch(e.centralConnection){case y:O(T);break;case x:O(p);break;case m:O(p),O(T)}},"drawCentralConnection"),ut=(0,c.K2)(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont"),_t=(0,c.K2)(t=>({fontFamily:t.noteFontFamily,fontSize:t.noteFontSize,fontWeight:t.noteFontWeight}),"noteFont"),Ot=(0,c.K2)(t=>({fontFamily:t.actorFontFamily,fontSize:t.actorFontSize,fontWeight:t.actorFontWeight}),"actorFont");async function yt(t,e){Tt.bumpVerticalPos(10);const{startx:a,stopx:r,message:s}=e,i=o.Y2.splitBreaks(s).length,c=(0,o.Wi)(s),d=c?await(0,o.Dl)(s,(0,o.D7)()):n._K.calculateTextDimensions(s,ut(pt));if(!c){const t=d.height/i;e.height+=t,Tt.bumpVerticalPos(t)}let l,h=d.height-10;const p=d.width;if(a===r){l=Tt.getVerticalPos()+h,pt.rightAngles||(h+=pt.boxMargin,l=Tt.getVerticalPos()+h),h+=30;const t=o.Y2.getMax(p/2,pt.width/2);Tt.insert(a-t,Tt.getVerticalPos()-10+h,r+t,Tt.getVerticalPos()+30+h)}else h+=pt.boxMargin,l=Tt.getVerticalPos()+h,Tt.insert(a,l-10,r,l);return Tt.bumpVerticalPos(h),e.height+=h,e.stopy=e.starty+e.height,Tt.insert(e.fromBounds,e.starty,e.toBounds,e.stopy),l}(0,c.K2)(yt,"boundMessage");var xt=(0,c.K2)(async function(t,e,a,r,i,c){const{startx:d,stopx:l,starty:h,message:p,type:T,sequenceIndex:E,sequenceVisible:g}=e,u=n._K.calculateTextDimensions(p,ut(pt)),_=(0,s.HT)();_.x=Math.min(d,l),_.y=h+10,_.width=Math.abs(l-d),_.class="messageText",_.dy="1em",_.text=p,_.fontFamily=pt.messageFontFamily,_.fontSize=pt.messageFontSize,_.fontWeight=pt.messageFontWeight,_.anchor=pt.messageAlign,_.valign="center",_.textMargin=pt.wrapPadding,_.tspan=!1,(0,o.Wi)(_.text)?await D(t,_,{startx:d,stopx:l,starty:a}):S(t,_);const O=u.width;let y;if(d===l){const s=g||pt.showSequenceNumbers,n=vt(i,r),c=Yt(i,r),h=d+(s&&(n||c)?10:0);y=pt.rightAngles?t.append("path").attr("d",`M ${h},${a} H ${d+o.Y2.getMax(pt.width/2,O/2)} V ${a+25} H ${d}`):t.append("path").attr("d","M "+h+","+a+" C "+(h+60)+","+(a-10)+" "+(d+60)+","+(a+30)+" "+d+","+(a+20)),Ct(i,r)&>(t,i,e,r,d,l,a)}else y=t.append("line"),y.attr("x1",d),y.attr("y1",a),y.attr("x2",l),y.attr("y2",a),Ct(i,r)&>(t,i,e,r,d,l,a);T===r.db.LINETYPE.DOTTED||T===r.db.LINETYPE.DOTTED_CROSS||T===r.db.LINETYPE.DOTTED_POINT||T===r.db.LINETYPE.DOTTED_OPEN||T===r.db.LINETYPE.BIDIRECTIONAL_DOTTED||T===r.db.LINETYPE.SOLID_TOP_DOTTED||T===r.db.LINETYPE.SOLID_BOTTOM_DOTTED||T===r.db.LINETYPE.STICK_TOP_DOTTED||T===r.db.LINETYPE.STICK_BOTTOM_DOTTED||T===r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED||T===r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED||T===r.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED||T===r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED?(y.style("stroke-dasharray","3, 3"),y.attr("class","messageLine1")):y.attr("class","messageLine0"),y.attr("data-et","message"),y.attr("data-id","i"+e.id),y.attr("data-from",e.from),y.attr("data-to",e.to);let x="";if(pt.arrowMarkerAbsolute&&(x=(0,o.ID)(!0)),y.attr("stroke-width",2),y.attr("stroke","none"),y.style("fill","none"),T!==r.db.LINETYPE.SOLID_TOP&&T!==r.db.LINETYPE.SOLID_TOP_DOTTED||y.attr("marker-end","url("+x+"#"+c+"-solidTopArrowHead)"),T!==r.db.LINETYPE.SOLID_BOTTOM&&T!==r.db.LINETYPE.SOLID_BOTTOM_DOTTED||y.attr("marker-end","url("+x+"#"+c+"-solidBottomArrowHead)"),T!==r.db.LINETYPE.STICK_TOP&&T!==r.db.LINETYPE.STICK_TOP_DOTTED||y.attr("marker-end","url("+x+"#"+c+"-stickTopArrowHead)"),T!==r.db.LINETYPE.STICK_BOTTOM&&T!==r.db.LINETYPE.STICK_BOTTOM_DOTTED||y.attr("marker-end","url("+x+"#"+c+"-stickBottomArrowHead)"),T!==r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE&&T!==r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED||y.attr("marker-start","url("+x+"#"+c+"-solidBottomArrowHead)"),T!==r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE&&T!==r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED||y.attr("marker-start","url("+x+"#"+c+"-solidTopArrowHead)"),T!==r.db.LINETYPE.STICK_ARROW_TOP_REVERSE&&T!==r.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED||y.attr("marker-start","url("+x+"#"+c+"-stickBottomArrowHead)"),T!==r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE&&T!==r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED||y.attr("marker-start","url("+x+"#"+c+"-stickTopArrowHead)"),T!==r.db.LINETYPE.SOLID&&T!==r.db.LINETYPE.DOTTED||y.attr("marker-end","url("+x+"#"+c+"-arrowhead)"),T!==r.db.LINETYPE.BIDIRECTIONAL_SOLID&&T!==r.db.LINETYPE.BIDIRECTIONAL_DOTTED||(y.attr("marker-start","url("+x+"#"+c+"-arrowhead)"),y.attr("marker-end","url("+x+"#"+c+"-arrowhead)")),T!==r.db.LINETYPE.SOLID_POINT&&T!==r.db.LINETYPE.DOTTED_POINT||y.attr("marker-end","url("+x+"#"+c+"-filled-head)"),T!==r.db.LINETYPE.SOLID_CROSS&&T!==r.db.LINETYPE.DOTTED_CROSS||y.attr("marker-end","url("+x+"#"+c+"-crosshead)"),g||pt.showSequenceNumbers){const s=T===r.db.LINETYPE.BIDIRECTIONAL_SOLID||T===r.db.LINETYPE.BIDIRECTIONAL_DOTTED,n=T===r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE||T===r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED||T===r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE||T===r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED||T===r.db.LINETYPE.STICK_ARROW_TOP_REVERSE||T===r.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED||T===r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE||T===r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,o=6,h=Ct(i,r);let p=d,g=l;s?(d<l?p=d+2*o:(p=d-o+(h?-5:0),p+=i?.centralConnection===r.db.LINETYPE.CENTRAL_CONNECTION_DUAL||i?.centralConnection===r.db.LINETYPE.CENTRAL_CONNECTION_REVERSE?-7.5:0),y.attr("x1",p)):n?(l>d?g=l-2*o:(g=l-o,p+=i?.centralConnection===r.db.LINETYPE.CENTRAL_CONNECTION_DUAL||i?.centralConnection===r.db.LINETYPE.CENTRAL_CONNECTION_REVERSE?-7.5:0),g+=h?15:0,y.attr("x2",g),y.attr("x1",p)):y.attr("x1",d+o);let u=0;const _=d<=l;u=d===l?e.fromBounds+1:n?_?e.toBounds-1:e.fromBounds+1:_?e.fromBounds+1:e.toBounds-1;let O="12px";const m=E.toString().length;m>5?O="7px":m>3&&(O="9px"),t.append("line").attr("x1",u).attr("y1",a).attr("x2",u).attr("y2",a).attr("stroke-width",0).attr("marker-start","url("+x+"#"+c+"-sequencenumber)"),t.append("text").attr("x",u).attr("y",a+4).attr("font-family","sans-serif").attr("font-size",O).attr("text-anchor","middle").attr("class","sequenceNumber").text(E)}},"drawMessage"),mt=(0,c.K2)(function(t,e,a,r,s,i,n){let c,d=0,l=0,h=0;for(const p of r){const t=e.get(p),r=t.box;c&&c!=r&&(n||Tt.models.addBox(c),l+=pt.boxMargin+c.margin),r&&r!=c&&(n||(r.x=d+l,r.y=s),l+=r.margin),t.width=o.Y2.getMax(t.width||pt.width,pt.width),t.height=o.Y2.getMax(t.height||pt.height,pt.height),t.margin=t.margin||pt.actorMargin,h=o.Y2.getMax(h,t.height),a.get(t.name)&&(l+=t.width/2),t.x=d+l,t.starty=Tt.getVerticalPos(),Tt.insert(t.x,s,t.x+t.width,t.height),d+=t.width+l,t.box&&(t.box.width=d+r.margin-t.box.x),l=t.margin,c=t.box,Tt.models.addActor(t)}c&&!n&&Tt.models.addBox(c),Tt.bumpVerticalPos(h)},"addActorRenderingData"),bt=(0,c.K2)(async function(t,e,a,r,s,i,n){if(r){let r=0;Tt.bumpVerticalPos(2*pt.boxMargin);for(const c of a){const a=e.get(c);a.stopy||(a.stopy=Tt.getVerticalPos());const d=await ht.drawActor(t,a,pt,!0,s,i,n);r=o.Y2.getMax(r,d)}Tt.bumpVerticalPos(r+pt.boxMargin)}else for(const o of a){const a=e.get(o);await ht.drawActor(t,a,pt,!1,s,i,n)}},"drawActors"),It=(0,c.K2)(function(t,e,a,r){let s=0,i=0;for(const n of a){const a=e.get(n),o=St(a),c=ht.drawPopup(t,a,o,pt,pt.forceMenus,r);c.height>s&&(s=c.height),c.width+a.x>i&&(i=c.width+a.x)}return{maxHeight:s,maxWidth:i}},"drawActorsPopup"),Rt=(0,c.K2)(function(t){(0,o.hH)(pt,t),t.fontFamily&&(pt.actorFontFamily=pt.noteFontFamily=pt.messageFontFamily=t.fontFamily),t.fontSize&&(pt.actorFontSize=pt.noteFontSize=pt.messageFontSize=t.fontSize),t.fontWeight&&(pt.actorFontWeight=pt.noteFontWeight=pt.messageFontWeight=t.fontWeight)},"setConf"),ft=(0,c.K2)(function(t){return Tt.activations.filter(function(e){return e.actor===t})},"actorActivations"),Lt=(0,c.K2)(function(t,e){const a=e.get(t),r=ft(t);return[r.reduce(function(t,e){return o.Y2.getMin(t,e.startx)},a.x+a.width/2-1),r.reduce(function(t,e){return o.Y2.getMax(t,e.stopx)},a.x+a.width/2+1)]},"activationBounds");function Pt(t,e,a,r,s){Tt.bumpVerticalPos(a);let i=r;if(e.id&&e.message&&t[e.id]){const a=t[e.id].width,s=ut(pt);e.message=n._K.wrapLabel(`[${e.message}]`,a-2*pt.wrapPadding,s),e.width=a,e.wrap=!0;const d=n._K.calculateTextDimensions(e.message,s),l=o.Y2.getMax(d.height,pt.labelBoxHeight);i=r+l,c.Rm.debug(`${l} - ${e.message}`)}s(e),Tt.bumpVerticalPos(i)}function Nt(t,e,a,r,s,i,n){function o(a,r){a.x<s.get(t.from).x?(Tt.insert(e.stopx-r,e.starty,e.startx,e.stopy+a.height/2+pt.noteMargin),e.stopx=e.stopx+r):(Tt.insert(e.startx,e.starty,e.stopx+r,e.stopy+a.height/2+pt.noteMargin),e.stopx=e.stopx-r)}function d(a,r){a.x<s.get(t.to).x?(Tt.insert(e.startx-r,e.starty,e.stopx,e.stopy+a.height/2+pt.noteMargin),e.startx=e.startx+r):(Tt.insert(e.stopx,e.starty,e.startx+r,e.stopy+a.height/2+pt.noteMargin),e.startx=e.startx-r)}(0,c.K2)(o,"receiverAdjustment"),(0,c.K2)(d,"senderAdjustment");const l=[u,_,y,O];if(i.get(t.to)==r){const e=s.get(t.to);o(e,l.includes(e.type)?21:e.width/2+3),e.starty=a-e.height/2,Tt.bumpVerticalPos(e.height/2)}else if(n.get(t.from)==r){const e=s.get(t.from);if(pt.mirrorActors){d(e,l.includes(e.type)?18:e.width/2)}e.stopy=a-e.height/2,Tt.bumpVerticalPos(e.height/2)}else if(n.get(t.to)==r){const e=s.get(t.to);if(pt.mirrorActors){o(e,l.includes(e.type)?21:e.width/2+3)}e.stopy=a-e.height/2,Tt.bumpVerticalPos(e.height/2)}}(0,c.K2)(Pt,"adjustLoopHeightForWrap"),(0,c.K2)(Nt,"adjustCreatedDestroyedData");var wt=(0,c.K2)(async function(t,e,a,r){const{securityLevel:s,sequence:i,look:n}=(0,o.D7)();let l;pt=i,"sandbox"===s&&(l=(0,d.Ltv)("#i"+e));const h="sandbox"===s?(0,d.Ltv)(l.nodes()[0].contentDocument.body):(0,d.Ltv)("body"),p="sandbox"===s?l.nodes()[0].contentDocument:document;Tt.init(),c.Rm.debug(r.db);const T="sandbox"===s?h.select(`[id="${e}"]`):(0,d.Ltv)(`[id="${e}"]`),E=r.db.getActors(),g=r.db.getCreatedActors(),u=r.db.getDestroyedActors(),_=r.db.getBoxes();let O=r.db.getActorKeys();const y=r.db.getMessages(),x=r.db.getDiagramTitle(),m=r.db.hasAtLeastOneBox(),b=r.db.hasAtLeastOneBoxWithTitle(),I=await Dt(E,y,r);if(pt.height=await At(E,I,_),ht.insertComputerIcon(T,e),ht.insertDatabaseIcon(T,e),ht.insertClockIcon(T,e),m&&(Tt.bumpVerticalPos(pt.boxMargin),b&&Tt.bumpVerticalPos(_[0].textMaxHeight)),!0===pt.hideUnusedParticipants){const t=new Set;y.forEach(e=>{t.add(e.from),t.add(e.to)}),O=O.filter(e=>t.has(e))}const R=new Map(O.map((t,e)=>[E.get(t)?.name??t,e]));mt(T,E,g,O,0,y,!1);const f=await Kt(y,E,I,r);function L(t,e){const a=Tt.endActivation(t);a.starty+18>e&&(a.starty=e-6,e+=12),ht.drawActivation(T,a,e,pt,ft(t.from).length,r,R),Tt.insert(a.startx,e-10,a.stopx,e)}ht.insertArrowHead(T,e),ht.insertArrowCrossHead(T,e),ht.insertArrowFilledHead(T,e),ht.insertSequenceNumber(T,e),ht.insertSolidTopArrowHead(T,e),ht.insertSolidBottomArrowHead(T,e),ht.insertStickTopArrowHead(T,e),ht.insertStickBottomArrowHead(T,e),"neo"===n&&ht.insertDropShadow(T,pt),(0,c.K2)(L,"activeEnd");let P=1,N=1;const w=[],D=[];let S=0;for(const o of y){let t,e,a;switch(o.type){case r.db.LINETYPE.NOTE:Tt.resetVerticalPos(),e=o.noteModel,await Et(T,e,o.id);break;case r.db.LINETYPE.ACTIVE_START:case r.db.LINETYPE.CENTRAL_CONNECTION:case r.db.LINETYPE.CENTRAL_CONNECTION_REVERSE:Tt.newActivation(o,T,E);break;case r.db.LINETYPE.ACTIVE_END:L(o,Tt.getVerticalPos());break;case r.db.LINETYPE.LOOP_START:Pt(f,o,pt.boxMargin,pt.boxMargin+pt.boxTextMargin,t=>Tt.newLoop(t));break;case r.db.LINETYPE.LOOP_END:t=Tt.endLoop(),await ht.drawLoop(T,t,"loop",pt,o),Tt.bumpVerticalPos(t.stopy-Tt.getVerticalPos()),Tt.models.addLoop(t);break;case r.db.LINETYPE.RECT_START:Pt(f,o,pt.boxMargin,pt.boxMargin,t=>Tt.newLoop(void 0,t.message));break;case r.db.LINETYPE.RECT_END:t=Tt.endLoop(),D.push(t),Tt.models.addLoop(t),Tt.bumpVerticalPos(t.stopy-Tt.getVerticalPos());break;case r.db.LINETYPE.OPT_START:Pt(f,o,pt.boxMargin,pt.boxMargin+pt.boxTextMargin,t=>Tt.newLoop(t));break;case r.db.LINETYPE.OPT_END:t=Tt.endLoop(),await ht.drawLoop(T,t,"opt",pt,o),Tt.bumpVerticalPos(t.stopy-Tt.getVerticalPos()),Tt.models.addLoop(t);break;case r.db.LINETYPE.ALT_START:Pt(f,o,pt.boxMargin,pt.boxMargin+pt.boxTextMargin,t=>Tt.newLoop(t));break;case r.db.LINETYPE.ALT_ELSE:Pt(f,o,pt.boxMargin+pt.boxTextMargin,pt.boxMargin,t=>Tt.addSectionToLoop(t));break;case r.db.LINETYPE.ALT_END:t=Tt.endLoop(),await ht.drawLoop(T,t,"alt",pt,o),Tt.bumpVerticalPos(t.stopy-Tt.getVerticalPos()),Tt.models.addLoop(t);break;case r.db.LINETYPE.PAR_START:case r.db.LINETYPE.PAR_OVER_START:Pt(f,o,pt.boxMargin,pt.boxMargin+pt.boxTextMargin,t=>Tt.newLoop(t)),Tt.saveVerticalPos();break;case r.db.LINETYPE.PAR_AND:Pt(f,o,pt.boxMargin+pt.boxTextMargin,pt.boxMargin,t=>Tt.addSectionToLoop(t));break;case r.db.LINETYPE.PAR_END:t=Tt.endLoop(),await ht.drawLoop(T,t,"par",pt,o),Tt.bumpVerticalPos(t.stopy-Tt.getVerticalPos()),Tt.models.addLoop(t);break;case r.db.LINETYPE.AUTONUMBER:P=o.message.start||P,N=o.message.step||N,o.message.visible?r.db.enableSequenceNumbers():r.db.disableSequenceNumbers();break;case r.db.LINETYPE.CRITICAL_START:Pt(f,o,pt.boxMargin,pt.boxMargin+pt.boxTextMargin,t=>Tt.newLoop(t));break;case r.db.LINETYPE.CRITICAL_OPTION:Pt(f,o,pt.boxMargin+pt.boxTextMargin,pt.boxMargin,t=>Tt.addSectionToLoop(t));break;case r.db.LINETYPE.CRITICAL_END:t=Tt.endLoop(),await ht.drawLoop(T,t,"critical",pt,o),Tt.bumpVerticalPos(t.stopy-Tt.getVerticalPos()),Tt.models.addLoop(t);break;case r.db.LINETYPE.BREAK_START:Pt(f,o,pt.boxMargin,pt.boxMargin+pt.boxTextMargin,t=>Tt.newLoop(t));break;case r.db.LINETYPE.BREAK_END:t=Tt.endLoop(),await ht.drawLoop(T,t,"break",pt,o),Tt.bumpVerticalPos(t.stopy-Tt.getVerticalPos()),Tt.models.addLoop(t);break;default:try{a=o.msgModel,a.starty=Tt.getVerticalPos(),a.sequenceIndex=P,a.sequenceVisible=r.db.showSequenceNumbers(),a.id=o.id,a.from=o.from,a.to=o.to;const t=await yt(0,a);Nt(o,a,t,S,E,g,u),w.push({messageModel:a,lineStartY:t,msg:o}),Tt.models.addMessage(a)}catch(V){c.Rm.error("error while drawing message",V)}}[r.db.LINETYPE.SOLID_OPEN,r.db.LINETYPE.DOTTED_OPEN,r.db.LINETYPE.SOLID,r.db.LINETYPE.SOLID_TOP,r.db.LINETYPE.SOLID_BOTTOM,r.db.LINETYPE.STICK_TOP,r.db.LINETYPE.STICK_BOTTOM,r.db.LINETYPE.SOLID_TOP_DOTTED,r.db.LINETYPE.SOLID_BOTTOM_DOTTED,r.db.LINETYPE.STICK_TOP_DOTTED,r.db.LINETYPE.STICK_BOTTOM_DOTTED,r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE,r.db.LINETYPE.STICK_ARROW_TOP_REVERSE,r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE,r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,r.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED,r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,r.db.LINETYPE.DOTTED,r.db.LINETYPE.SOLID_CROSS,r.db.LINETYPE.DOTTED_CROSS,r.db.LINETYPE.SOLID_POINT,r.db.LINETYPE.DOTTED_POINT,r.db.LINETYPE.BIDIRECTIONAL_SOLID,r.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(o.type)&&(P=Math.round(100*(P+N))/100),S++}c.Rm.debug("createdActors",g),c.Rm.debug("destroyedActors",u),await bt(T,E,O,!1,e,r,R);for(const o of w)await xt(T,o.messageModel,o.lineStartY,r,o.msg,e);pt.mirrorActors&&await bt(T,E,O,!0,e,r,R),D.forEach(t=>ht.drawBackgroundRect(T,t)),C(T,E,O,pt);for(const o of Tt.models.boxes){o.height=Tt.getVerticalPos()-o.y,Tt.insert(o.x,o.y,o.x+o.width,o.height);const t=2*pt.boxMargin;o.startx=o.x-t,o.starty=o.y-.25*t,o.stopx=o.startx+o.width+2*t,o.stopy=o.starty+o.height+.75*t,o.stroke="rgb(0,0,0, 0.5)",ht.drawBox(T,o,pt)}m&&Tt.bumpVerticalPos(pt.boxMargin);const A=It(T,E,O,p),{bounds:k}=Tt.getBounds();void 0===k.startx&&(k.startx=0),void 0===k.starty&&(k.starty=0),void 0===k.stopx&&(k.stopx=0),void 0===k.stopy&&(k.stopy=0);let M=k.stopy-k.starty;M<A.maxHeight&&(M=A.maxHeight);let v=M+2*pt.diagramMarginY;pt.mirrorActors&&(v=v-pt.boxMargin+pt.bottomMarginAdj);let Y=k.stopx-k.startx;Y<A.maxWidth&&(Y=A.maxWidth);const B=Y+2*pt.diagramMarginX;x&&T.append("text").text(x).attr("x",(k.stopx-k.startx)/2-2*pt.diagramMarginX).attr("y",-25),(0,o.a$)(T,v,B,pt.useMaxWidth);const K=x?40:0,$=E.size&&"neo"===n?30:0;T.attr("viewBox",k.startx-pt.diagramMarginX+" -"+(pt.diagramMarginY+K)+" "+B+" "+(v+K+$)),c.Rm.debug("models:",Tt.models)},"draw");async function Dt(t,e,a){const r={};for(const s of e)if(t.get(s.to)&&t.get(s.from)){const e=t.get(s.to);if(s.placement===a.db.PLACEMENT.LEFTOF&&!e.prevActor)continue;if(s.placement===a.db.PLACEMENT.RIGHTOF&&!e.nextActor)continue;const i=void 0!==s.placement,c=!i,d=i?_t(pt):ut(pt),l=s.wrap?n._K.wrapLabel(s.message,pt.width-2*pt.wrapPadding,d):s.message,h=((0,o.Wi)(l)?await(0,o.Dl)(s.message,(0,o.D7)()):n._K.calculateTextDimensions(l,d)).width+2*pt.wrapPadding;c&&s.from===e.nextActor?r[s.to]=o.Y2.getMax(r[s.to]||0,h):c&&s.from===e.prevActor?r[s.from]=o.Y2.getMax(r[s.from]||0,h):c&&s.from===s.to?(r[s.from]=o.Y2.getMax(r[s.from]||0,h/2),r[s.to]=o.Y2.getMax(r[s.to]||0,h/2)):s.placement===a.db.PLACEMENT.RIGHTOF?r[s.from]=o.Y2.getMax(r[s.from]||0,h):s.placement===a.db.PLACEMENT.LEFTOF?r[e.prevActor]=o.Y2.getMax(r[e.prevActor]||0,h):s.placement===a.db.PLACEMENT.OVER&&(e.prevActor&&(r[e.prevActor]=o.Y2.getMax(r[e.prevActor]||0,h/2)),e.nextActor&&(r[s.from]=o.Y2.getMax(r[s.from]||0,h/2)))}return c.Rm.debug("maxMessageWidthPerActor:",r),r}(0,c.K2)(Dt,"getMaxMessageWidthPerActor");var St=(0,c.K2)(function(t){let e=0;const a=Ot(pt);for(const r in t.links){const t=n._K.calculateTextDimensions(r,a).width+2*pt.wrapPadding+2*pt.boxMargin;e<t&&(e=t)}return e},"getRequiredPopupWidth");async function At(t,e,a){let r=0;for(const i of t.keys()){const e=t.get(i);e.wrap&&(e.description=n._K.wrapLabel(e.description,pt.width-2*pt.wrapPadding,Ot(pt)));const a=(0,o.Wi)(e.description)?await(0,o.Dl)(e.description,(0,o.D7)()):n._K.calculateTextDimensions(e.description,Ot(pt));e.width=e.wrap?pt.width:o.Y2.getMax(pt.width,a.width+2*pt.wrapPadding),e.height=e.wrap?o.Y2.getMax(a.height,pt.height):pt.height,r=o.Y2.getMax(r,e.height)}for(const i in e){const a=t.get(i);if(!a)continue;const r=t.get(a.nextActor);if(!r){const t=e[i]+pt.actorMargin-a.width/2;a.margin=o.Y2.getMax(t,pt.actorMargin);continue}const s=e[i]+pt.actorMargin-a.width/2-r.width/2;a.margin=o.Y2.getMax(s,pt.actorMargin)}let s=0;return a.forEach(e=>{const a=ut(pt);let r=e.actorKeys.reduce((e,a)=>e+(t.get(a).width+(t.get(a).margin||0)),0);r+=8*pt.boxMargin,r-=2*pt.boxTextMargin,e.wrap&&(e.name=n._K.wrapLabel(e.name,r-2*pt.wrapPadding,a));const i=n._K.calculateTextDimensions(e.name,a);s=o.Y2.getMax(i.height,s);const c=o.Y2.getMax(r,i.width+2*pt.wrapPadding);if(e.margin=pt.boxTextMargin,r<c){const t=(c-r)/2;e.margin+=t}}),a.forEach(t=>t.textMaxHeight=s),o.Y2.getMax(r,pt.height)}(0,c.K2)(At,"calculateActorMargins");var kt=(0,c.K2)(async function(t,e,a){const r=e.get(t.from),s=e.get(t.to),i=r.x,d=s.x,l=t.wrap&&t.message;let h=(0,o.Wi)(t.message)?await(0,o.Dl)(t.message,(0,o.D7)()):n._K.calculateTextDimensions(l?n._K.wrapLabel(t.message,pt.width,_t(pt)):t.message,_t(pt));const p={width:l?pt.width:o.Y2.getMax(pt.width,h.width+2*pt.noteMargin),height:0,startx:r.x,stopx:0,starty:0,stopy:0,message:t.message};return t.placement===a.db.PLACEMENT.RIGHTOF?(p.width=l?o.Y2.getMax(pt.width,h.width):o.Y2.getMax(r.width/2+s.width/2,h.width+2*pt.noteMargin),p.startx=i+(r.width+pt.actorMargin)/2):t.placement===a.db.PLACEMENT.LEFTOF?(p.width=l?o.Y2.getMax(pt.width,h.width+2*pt.noteMargin):o.Y2.getMax(r.width/2+s.width/2,h.width+2*pt.noteMargin),p.startx=i-p.width+(r.width-pt.actorMargin)/2):t.to===t.from?(h=n._K.calculateTextDimensions(l?n._K.wrapLabel(t.message,o.Y2.getMax(pt.width,r.width),_t(pt)):t.message,_t(pt)),p.width=l?o.Y2.getMax(pt.width,r.width):o.Y2.getMax(r.width,pt.width,h.width+2*pt.noteMargin),p.startx=i+(r.width-p.width)/2):(p.width=Math.abs(i+r.width/2-(d+s.width/2))+pt.actorMargin,p.startx=i<d?i+r.width/2-pt.actorMargin/2:d+s.width/2-pt.actorMargin/2),l&&(p.message=n._K.wrapLabel(t.message,p.width-2*pt.wrapPadding,_t(pt))),c.Rm.debug(`NM:[${p.startx},${p.stopx},${p.starty},${p.stopy}:${p.width},${p.height}=${t.message}]`),p},"buildNoteModel"),Ct=(0,c.K2)(function(t,e){const{CENTRAL_CONNECTION:a,CENTRAL_CONNECTION_REVERSE:r,CENTRAL_CONNECTION_DUAL:s}=e.db.LINETYPE;return[a,r,s].includes(t.centralConnection)},"hasCentralConnection"),Mt=(0,c.K2)(function(t,e,a){const{CENTRAL_CONNECTION_REVERSE:r,CENTRAL_CONNECTION_DUAL:s,BIDIRECTIONAL_SOLID:i,BIDIRECTIONAL_DOTTED:n}=e.db.LINETYPE;let o=0;return t.centralConnection!==r&&t.centralConnection!==s||(o+=4),t.centralConnection!==r&&t.centralConnection!==s||t.type!==i&&t.type!==n||(o+=a?0:-6),o},"calculateCentralConnectionOffset"),vt=(0,c.K2)(function(t,e){const{SOLID_ARROW_TOP_REVERSE:a,SOLID_ARROW_TOP_REVERSE_DOTTED:r,SOLID_ARROW_BOTTOM_REVERSE:s,SOLID_ARROW_BOTTOM_REVERSE_DOTTED:i,STICK_ARROW_TOP_REVERSE:n,STICK_ARROW_TOP_REVERSE_DOTTED:o,STICK_ARROW_BOTTOM_REVERSE:c,STICK_ARROW_BOTTOM_REVERSE_DOTTED:d}=e.db.LINETYPE;return[a,r,s,i,n,o,c,d].includes(t.type)},"isReverseArrowType"),Yt=(0,c.K2)(function(t,e){const{BIDIRECTIONAL_SOLID:a,BIDIRECTIONAL_DOTTED:r}=e.db.LINETYPE;return[a,r].includes(t.type)},"isBidirectionalArrowType"),Bt=(0,c.K2)(function(t,e,a){const{look:r}=(0,o.D7)();if(![a.db.LINETYPE.SOLID_OPEN,a.db.LINETYPE.DOTTED_OPEN,a.db.LINETYPE.SOLID,a.db.LINETYPE.SOLID_TOP,a.db.LINETYPE.SOLID_BOTTOM,a.db.LINETYPE.STICK_TOP,a.db.LINETYPE.STICK_BOTTOM,a.db.LINETYPE.SOLID_TOP_DOTTED,a.db.LINETYPE.SOLID_BOTTOM_DOTTED,a.db.LINETYPE.STICK_TOP_DOTTED,a.db.LINETYPE.STICK_BOTTOM_DOTTED,a.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,a.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE,a.db.LINETYPE.STICK_ARROW_TOP_REVERSE,a.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE,a.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,a.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,a.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED,a.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,a.db.LINETYPE.DOTTED,a.db.LINETYPE.SOLID_CROSS,a.db.LINETYPE.DOTTED_CROSS,a.db.LINETYPE.SOLID_POINT,a.db.LINETYPE.DOTTED_POINT,a.db.LINETYPE.BIDIRECTIONAL_SOLID,a.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(t.type))return{};const[s,i]=Lt(t.from,e),[d,l]=Lt(t.to,e),h=s<=d;let p=h?i:s,T=h?d:l;if("neo"===r){const e=3;t.type!==a.db.LINETYPE.SOLID_OPEN&&(T+=h?-e:e),t.type!==a.db.LINETYPE.BIDIRECTIONAL_SOLID&&t.type!==a.db.LINETYPE.BIDIRECTIONAL_DOTTED||(p+=h?e:-e)}p+=Mt(t,a,h);const E=Math.abs(d-l)>2,g=(0,c.K2)(t=>h?-t:t,"adjustValue");t.from===t.to?T=p:(t.activate&&!E&&(T+=g(pt.activationWidth/2-1)),[a.db.LINETYPE.SOLID_OPEN,a.db.LINETYPE.DOTTED_OPEN,a.db.LINETYPE.STICK_TOP,a.db.LINETYPE.STICK_BOTTOM,a.db.LINETYPE.STICK_TOP_DOTTED,a.db.LINETYPE.STICK_BOTTOM_DOTTED,a.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,a.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,a.db.LINETYPE.STICK_ARROW_TOP_REVERSE,a.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE,a.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED,a.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,a.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,a.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE].includes(t.type)||(T+=g(3)),[a.db.LINETYPE.BIDIRECTIONAL_SOLID,a.db.LINETYPE.BIDIRECTIONAL_DOTTED,a.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,a.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,a.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,a.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE].includes(t.type)&&(p-=g(3)));const u=[s,i,d,l],_=Math.abs(p-T);t.wrap&&t.message&&(t.message=n._K.wrapLabel(t.message,o.Y2.getMax(_+2*pt.wrapPadding,pt.width),ut(pt)));const O=n._K.calculateTextDimensions(t.message,ut(pt));return{width:o.Y2.getMax(t.wrap?0:O.width+2*pt.wrapPadding,_+2*pt.wrapPadding,pt.width),height:0,startx:p,stopx:T,starty:0,stopy:0,message:t.message,type:t.type,wrap:t.wrap,fromBounds:Math.min.apply(null,u),toBounds:Math.max.apply(null,u)}},"buildMessageModel"),Kt=(0,c.K2)(async function(t,e,a,r){const s={},i=[];let n,d,l;for(const c of t){switch(c.type){case r.db.LINETYPE.LOOP_START:case r.db.LINETYPE.ALT_START:case r.db.LINETYPE.OPT_START:case r.db.LINETYPE.PAR_START:case r.db.LINETYPE.PAR_OVER_START:case r.db.LINETYPE.CRITICAL_START:case r.db.LINETYPE.BREAK_START:i.push({id:c.id,msg:c.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case r.db.LINETYPE.ALT_ELSE:case r.db.LINETYPE.PAR_AND:case r.db.LINETYPE.CRITICAL_OPTION:c.message&&(n=i.pop(),s[n.id]=n,s[c.id]=n,i.push(n));break;case r.db.LINETYPE.LOOP_END:case r.db.LINETYPE.ALT_END:case r.db.LINETYPE.OPT_END:case r.db.LINETYPE.PAR_END:case r.db.LINETYPE.CRITICAL_END:case r.db.LINETYPE.BREAK_END:n=i.pop(),s[n.id]=n;break;case r.db.LINETYPE.ACTIVE_START:{const t=e.get(c.from?c.from:c.to.actor),a=ft(c.from?c.from:c.to.actor).length,r=t.x+t.width/2+(a-1)*pt.activationWidth/2,s={startx:r,stopx:r+pt.activationWidth,actor:c.from,enabled:!0};Tt.activations.push(s)}break;case r.db.LINETYPE.ACTIVE_END:{const t=Tt.activations.map(t=>t.actor).lastIndexOf(c.from);Tt.activations.splice(t,1).splice(0,1)}}void 0!==c.placement?(d=await kt(c,e,r),c.noteModel=d,i.forEach(t=>{n=t,n.from=o.Y2.getMin(n.from,d.startx),n.to=o.Y2.getMax(n.to,d.startx+d.width),n.width=o.Y2.getMax(n.width,Math.abs(n.from-n.to))-pt.labelBoxWidth})):(l=Bt(c,e,r),c.msgModel=l,l.startx&&l.stopx&&i.length>0&&i.forEach(t=>{if(n=t,l.startx===l.stopx){const t=e.get(c.from),a=e.get(c.to);n.from=o.Y2.getMin(t.x-l.width/2,t.x-t.width/2,n.from),n.to=o.Y2.getMax(a.x+l.width/2,a.x+t.width/2,n.to),n.width=o.Y2.getMax(n.width,Math.abs(n.to-n.from))-pt.labelBoxWidth}else n.from=o.Y2.getMin(l.startx,n.from),n.to=o.Y2.getMax(l.stopx,n.to),n.width=o.Y2.getMax(n.width,l.width)-pt.labelBoxWidth}))}return Tt.activations=[],c.Rm.debug("Loop type widths:",s),s},"calculateLoopBounds"),$t={bounds:Tt,drawActors:bt,drawActorsPopup:It,setConf:Rt,draw:wt},Vt={parser:p,get db(){return new x},renderer:$t,styles:m,init:(0,c.K2)(t=>{t.sequence||(t.sequence={}),t.wrap&&(t.sequence.wrap=t.wrap,(0,o.XV)({sequence:{wrap:t.wrap}}))},"init")}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/6288.53f1fe4a.js b/docs/build/assets/js/6288.53f1fe4a.js deleted file mode 100644 index 7c3ee6a54..000000000 --- a/docs/build/assets/js/6288.53f1fe4a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[6288],{6288(a,s,c){c.d(s,{createInfoServices:()=>e.v});var e=c(9511);c(9302)}}]); \ No newline at end of file diff --git a/docs/build/assets/js/6402.14cd02a1.js b/docs/build/assets/js/6402.14cd02a1.js deleted file mode 100644 index 89745af5d..000000000 --- a/docs/build/assets/js/6402.14cd02a1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[6402],{6402(c,e,a){a.d(e,{createArchitectureServices:()=>h.S});var h=a(5016);a(9302)}}]); \ No newline at end of file diff --git a/docs/build/assets/js/6678.7929a5db.js b/docs/build/assets/js/6678.7929a5db.js deleted file mode 100644 index aaf7e4f52..000000000 --- a/docs/build/assets/js/6678.7929a5db.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[6678],{6678(t,e,a){a.d(e,{diagram:()=>E});var r=a(8213),n=a(5871),i=a(8515),s=a(3706),o=a(797),l=a(8731),c={showLegend:!0,ticks:5,max:null,min:0,graticule:"circle"},d={axes:[],curves:[],options:c},g=structuredClone(d),h=s.UI.radar,u=(0,o.K2)(()=>(0,i.$t)({...h,...(0,s.zj)().radar}),"getConfig"),p=(0,o.K2)(()=>g.axes,"getAxes"),x=(0,o.K2)(()=>g.curves,"getCurves"),m=(0,o.K2)(()=>g.options,"getOptions"),$=(0,o.K2)(t=>{g.axes=t.map(t=>({name:t.name,label:t.label??t.name}))},"setAxes"),f=(0,o.K2)(t=>{g.curves=t.map(t=>({name:t.name,label:t.label??t.name,entries:y(t.entries)}))},"setCurves"),y=(0,o.K2)(t=>{if(null==t[0].axis)return t.map(t=>t.value);const e=p();if(0===e.length)throw new Error("Axes must be populated before curves for reference entries");return e.map(e=>{const a=t.find(t=>t.axis?.$refText===e.name);if(void 0===a)throw new Error("Missing entry for axis "+e.label);return a.value})},"computeCurveEntries"),v={getAxes:p,getCurves:x,getOptions:m,setAxes:$,setCurves:f,setOptions:(0,o.K2)(t=>{const e=t.reduce((t,e)=>(t[e.name]=e,t),{});g.options={showLegend:e.showLegend?.value??c.showLegend,ticks:e.ticks?.value??c.ticks,max:e.max?.value??c.max,min:e.min?.value??c.min,graticule:e.graticule?.value??c.graticule}},"setOptions"),getConfig:u,clear:(0,o.K2)(()=>{(0,s.IU)(),g=structuredClone(d)},"clear"),setAccTitle:s.SV,getAccTitle:s.iN,setDiagramTitle:s.ke,getDiagramTitle:s.ab,getAccDescription:s.m7,setAccDescription:s.EI},b=(0,o.K2)(t=>{(0,n.S)(t,v);const{axes:e,curves:a,options:r}=t;v.setAxes(e),v.setCurves(a),v.setOptions(r)},"populate"),w={parse:(0,o.K2)(async t=>{const e=await(0,l.qg)("radar",t);o.Rm.debug(e),b(e)},"parse")},C=(0,o.K2)((t,e,a,n)=>{const i=n.db,s=i.getAxes(),o=i.getCurves(),l=i.getOptions(),c=i.getConfig(),d=i.getDiagramTitle(),g=(0,r.D)(e),h=M(g,c),u=l.max??Math.max(...o.map(t=>Math.max(...t.entries))),p=l.min,x=Math.min(c.width,c.height)/2;K(h,s,x,l.ticks,l.graticule),L(h,s,x,c),k(h,s,o,p,u,l.graticule,c),O(h,o,l.showLegend,c),h.append("text").attr("class","radarTitle").text(d).attr("x",0).attr("y",-c.height/2-c.marginTop)},"draw"),M=(0,o.K2)((t,e)=>{const a=e.width+e.marginLeft+e.marginRight,r=e.height+e.marginTop+e.marginBottom,n=e.marginLeft+e.width/2,i=e.marginTop+e.height/2;return(0,s.a$)(t,r,a,e.useMaxWidth??!0),t.attr("viewBox",`0 0 ${a} ${r}`),t.append("g").attr("transform",`translate(${n}, ${i})`)},"drawFrame"),K=(0,o.K2)((t,e,a,r,n)=>{if("circle"===n)for(let i=0;i<r;i++){const e=a*(i+1)/r;t.append("circle").attr("r",e).attr("class","radarGraticule")}else if("polygon"===n){const n=e.length;for(let i=0;i<r;i++){const s=a*(i+1)/r,o=e.map((t,e)=>{const a=2*e*Math.PI/n-Math.PI/2;return`${s*Math.cos(a)},${s*Math.sin(a)}`}).join(" ");t.append("polygon").attr("points",o).attr("class","radarGraticule")}}},"drawGraticule"),L=(0,o.K2)((t,e,a,r)=>{const n=e.length;for(let i=0;i<n;i++){const s=e[i].label,o=2*i*Math.PI/n-Math.PI/2;t.append("line").attr("x1",0).attr("y1",0).attr("x2",a*r.axisScaleFactor*Math.cos(o)).attr("y2",a*r.axisScaleFactor*Math.sin(o)).attr("class","radarAxisLine"),t.append("text").text(s).attr("x",a*r.axisLabelFactor*Math.cos(o)).attr("y",a*r.axisLabelFactor*Math.sin(o)).attr("class","radarAxisLabel")}},"drawAxes");function k(t,e,a,r,n,i,s){const o=e.length,l=Math.min(s.width,s.height)/2;a.forEach((e,a)=>{if(e.entries.length!==o)return;const c=e.entries.map((t,e)=>{const a=2*Math.PI*e/o-Math.PI/2,i=T(t,r,n,l);return{x:i*Math.cos(a),y:i*Math.sin(a)}});"circle"===i?t.append("path").attr("d",A(c,s.curveTension)).attr("class",`radarCurve-${a}`):"polygon"===i&&t.append("polygon").attr("points",c.map(t=>`${t.x},${t.y}`).join(" ")).attr("class",`radarCurve-${a}`)})}function T(t,e,a,r){return r*(Math.min(Math.max(t,e),a)-e)/(a-e)}function A(t,e){const a=t.length;let r=`M${t[0].x},${t[0].y}`;for(let n=0;n<a;n++){const i=t[(n-1+a)%a],s=t[n],o=t[(n+1)%a],l=t[(n+2)%a],c={x:s.x+(o.x-i.x)*e,y:s.y+(o.y-i.y)*e},d={x:o.x-(l.x-s.x)*e,y:o.y-(l.y-s.y)*e};r+=` C${c.x},${c.y} ${d.x},${d.y} ${o.x},${o.y}`}return`${r} Z`}function O(t,e,a,r){if(!a)return;const n=3*(r.width/2+r.marginRight)/4,i=3*-(r.height/2+r.marginTop)/4;e.forEach((e,a)=>{const r=t.append("g").attr("transform",`translate(${n}, ${i+20*a})`);r.append("rect").attr("width",12).attr("height",12).attr("class",`radarLegendBox-${a}`),r.append("text").attr("x",16).attr("y",0).attr("class","radarLegendText").text(e.label)})}(0,o.K2)(k,"drawCurves"),(0,o.K2)(T,"relativeRadius"),(0,o.K2)(A,"closedRoundCurve"),(0,o.K2)(O,"drawLegend");var S={draw:C},I=(0,o.K2)((t,e)=>{let a="";for(let r=0;r<t.THEME_COLOR_LIMIT;r++){const n=t[`cScale${r}`];a+=`\n\t\t.radarCurve-${r} {\n\t\t\tcolor: ${n};\n\t\t\tfill: ${n};\n\t\t\tfill-opacity: ${e.curveOpacity};\n\t\t\tstroke: ${n};\n\t\t\tstroke-width: ${e.curveStrokeWidth};\n\t\t}\n\t\t.radarLegendBox-${r} {\n\t\t\tfill: ${n};\n\t\t\tfill-opacity: ${e.curveOpacity};\n\t\t\tstroke: ${n};\n\t\t}\n\t\t`}return a},"genIndexStyles"),z=(0,o.K2)(t=>{const e=(0,s.P$)(),a=(0,s.zj)(),r=(0,i.$t)(e,a.themeVariables);return{themeVariables:r,radarOptions:(0,i.$t)(r.radar,t)}},"buildRadarStyleOptions"),E={parser:w,db:v,renderer:S,styles:(0,o.K2)(({radar:t}={})=>{const{themeVariables:e,radarOptions:a}=z(t);return`\n\t.radarTitle {\n\t\tfont-size: ${e.fontSize};\n\t\tcolor: ${e.titleColor};\n\t\tdominant-baseline: hanging;\n\t\ttext-anchor: middle;\n\t}\n\t.radarAxisLine {\n\t\tstroke: ${a.axisColor};\n\t\tstroke-width: ${a.axisStrokeWidth};\n\t}\n\t.radarAxisLabel {\n\t\tdominant-baseline: middle;\n\t\ttext-anchor: middle;\n\t\tfont-size: ${a.axisLabelFontSize}px;\n\t\tcolor: ${a.axisColor};\n\t}\n\t.radarGraticule {\n\t\tfill: ${a.graticuleColor};\n\t\tfill-opacity: ${a.graticuleOpacity};\n\t\tstroke: ${a.graticuleColor};\n\t\tstroke-width: ${a.graticuleStrokeWidth};\n\t}\n\t.radarLegendText {\n\t\ttext-anchor: start;\n\t\tfont-size: ${a.legendFontSize}px;\n\t\tdominant-baseline: hanging;\n\t}\n\t${I(e,a)}\n\t`},"styles")}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/6735.f24050f0.js b/docs/build/assets/js/6735.f24050f0.js deleted file mode 100644 index 2fe309420..000000000 --- a/docs/build/assets/js/6735.f24050f0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[6735],{6735(e,a,s){s.d(a,{createEventModelingServices:()=>c.g});var c=s(2968);s(9302)}}]); \ No newline at end of file diff --git a/docs/build/assets/js/685.51378b69.js b/docs/build/assets/js/685.51378b69.js deleted file mode 100644 index 6cc7768bc..000000000 --- a/docs/build/assets/js/685.51378b69.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[685],{685(e,t,s){s.d(t,{diagram:()=>p});var i=s(9625),n=s(4345),r=s(3848),a=(s(6615),s(1334),s(273),s(5105),s(8013),s(5739),s(8515)),l=s(3706),o=s(797),c=function(){var e=(0,o.K2)(function(e,t,s,i){for(s=s||{},i=e.length;i--;s[e[i]]=t);return s},"o"),t=[1,3],s=[1,4],i=[1,5],n=[1,6],r=[5,6,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],a=[1,22],l=[2,7],c=[1,26],h=[1,27],u=[1,28],y=[1,29],m=[1,33],d=[1,34],E=[1,35],p=[1,36],R=[1,37],_=[1,38],f=[1,24],g=[1,31],S=[1,32],I=[1,30],b=[1,39],T=[1,40],k=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],N=[1,61],q=[89,90],C=[5,8,9,11,13,21,22,23,24,27,29,41,42,43,44,45,46,54,61,63,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],A=[27,29],L=[1,70],v=[1,71],$=[1,72],O=[1,73],x=[1,74],w=[1,75],D=[1,76],M=[1,83],F=[1,80],K=[1,84],P=[1,85],V=[1,86],U=[1,87],Y=[1,88],B=[1,89],Q=[1,90],H=[1,91],j=[1,92],W=[5,8,9,11,13,21,22,23,24,27,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],z=[63,64],G=[1,101],X=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,76,77,89,90],J=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],Z=[1,110],ee=[1,106],te=[1,107],se=[1,108],ie=[1,109],ne=[1,111],re=[1,116],ae=[1,117],le=[1,114],oe=[1,115],ce={trace:(0,o.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,acc_title:9,acc_title_value:10,acc_descr:11,acc_descr_value:12,acc_descr_multiline_value:13,requirementDef:14,elementDef:15,relationshipDef:16,direction:17,styleStatement:18,classDefStatement:19,classStatement:20,direction_tb:21,direction_bt:22,direction_rl:23,direction_lr:24,requirementType:25,requirementName:26,STRUCT_START:27,requirementBody:28,STYLE_SEPARATOR:29,idList:30,ID:31,COLONSEP:32,id:33,TEXT:34,text:35,RISK:36,riskLevel:37,VERIFYMTHD:38,verifyType:39,STRUCT_STOP:40,REQUIREMENT:41,FUNCTIONAL_REQUIREMENT:42,INTERFACE_REQUIREMENT:43,PERFORMANCE_REQUIREMENT:44,PHYSICAL_REQUIREMENT:45,DESIGN_CONSTRAINT:46,LOW_RISK:47,MED_RISK:48,HIGH_RISK:49,VERIFY_ANALYSIS:50,VERIFY_DEMONSTRATION:51,VERIFY_INSPECTION:52,VERIFY_TEST:53,ELEMENT:54,elementName:55,elementBody:56,TYPE:57,type:58,DOCREF:59,ref:60,END_ARROW_L:61,relationship:62,LINE:63,END_ARROW_R:64,CONTAINS:65,COPIES:66,DERIVES:67,SATISFIES:68,VERIFIES:69,REFINES:70,TRACES:71,CLASSDEF:72,stylesOpt:73,CLASS:74,ALPHA:75,COMMA:76,STYLE:77,style:78,styleComponent:79,NUM:80,COLON:81,UNIT:82,SPACE:83,BRKT:84,PCT:85,MINUS:86,LABEL:87,SEMICOLON:88,unqString:89,qString:90,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",9:"acc_title",10:"acc_title_value",11:"acc_descr",12:"acc_descr_value",13:"acc_descr_multiline_value",21:"direction_tb",22:"direction_bt",23:"direction_rl",24:"direction_lr",27:"STRUCT_START",29:"STYLE_SEPARATOR",31:"ID",32:"COLONSEP",34:"TEXT",36:"RISK",38:"VERIFYMTHD",40:"STRUCT_STOP",41:"REQUIREMENT",42:"FUNCTIONAL_REQUIREMENT",43:"INTERFACE_REQUIREMENT",44:"PERFORMANCE_REQUIREMENT",45:"PHYSICAL_REQUIREMENT",46:"DESIGN_CONSTRAINT",47:"LOW_RISK",48:"MED_RISK",49:"HIGH_RISK",50:"VERIFY_ANALYSIS",51:"VERIFY_DEMONSTRATION",52:"VERIFY_INSPECTION",53:"VERIFY_TEST",54:"ELEMENT",57:"TYPE",59:"DOCREF",61:"END_ARROW_L",63:"LINE",64:"END_ARROW_R",65:"CONTAINS",66:"COPIES",67:"DERIVES",68:"SATISFIES",69:"VERIFIES",70:"REFINES",71:"TRACES",72:"CLASSDEF",74:"CLASS",75:"ALPHA",76:"COMMA",77:"STYLE",80:"NUM",81:"COLON",82:"UNIT",83:"SPACE",84:"BRKT",85:"PCT",86:"MINUS",87:"LABEL",88:"SEMICOLON",89:"unqString",90:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,2],[4,2],[4,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[17,1],[17,1],[17,1],[17,1],[14,5],[14,7],[28,5],[28,5],[28,5],[28,5],[28,2],[28,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[37,1],[37,1],[37,1],[39,1],[39,1],[39,1],[39,1],[15,5],[15,7],[56,5],[56,5],[56,2],[56,1],[16,5],[16,5],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[19,3],[20,3],[20,3],[30,1],[30,3],[30,1],[30,3],[18,3],[73,1],[73,3],[78,1],[78,2],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[26,1],[26,1],[33,1],[33,1],[35,1],[35,1],[55,1],[55,1],[58,1],[58,1],[60,1],[60,1]],performAction:(0,o.K2)(function(e,t,s,i,n,r,a){var l=r.length-1;switch(n){case 4:this.$=r[l].trim(),i.setAccTitle(this.$);break;case 5:case 6:this.$=r[l].trim(),i.setAccDescription(this.$);break;case 7:this.$=[];break;case 17:i.setDirection("TB");break;case 18:i.setDirection("BT");break;case 19:i.setDirection("RL");break;case 20:i.setDirection("LR");break;case 21:i.addRequirement(r[l-3],r[l-4]);break;case 22:i.addRequirement(r[l-5],r[l-6]),i.setClass([r[l-5]],r[l-3]);break;case 23:i.setNewReqId(r[l-2]);break;case 24:i.setNewReqText(r[l-2]);break;case 25:i.setNewReqRisk(r[l-2]);break;case 26:i.setNewReqVerifyMethod(r[l-2]);break;case 29:this.$=i.RequirementType.REQUIREMENT;break;case 30:this.$=i.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 31:this.$=i.RequirementType.INTERFACE_REQUIREMENT;break;case 32:this.$=i.RequirementType.PERFORMANCE_REQUIREMENT;break;case 33:this.$=i.RequirementType.PHYSICAL_REQUIREMENT;break;case 34:this.$=i.RequirementType.DESIGN_CONSTRAINT;break;case 35:this.$=i.RiskLevel.LOW_RISK;break;case 36:this.$=i.RiskLevel.MED_RISK;break;case 37:this.$=i.RiskLevel.HIGH_RISK;break;case 38:this.$=i.VerifyType.VERIFY_ANALYSIS;break;case 39:this.$=i.VerifyType.VERIFY_DEMONSTRATION;break;case 40:this.$=i.VerifyType.VERIFY_INSPECTION;break;case 41:this.$=i.VerifyType.VERIFY_TEST;break;case 42:i.addElement(r[l-3]);break;case 43:i.addElement(r[l-5]),i.setClass([r[l-5]],r[l-3]);break;case 44:i.setNewElementType(r[l-2]);break;case 45:i.setNewElementDocRef(r[l-2]);break;case 48:i.addRelationship(r[l-2],r[l],r[l-4]);break;case 49:i.addRelationship(r[l-2],r[l-4],r[l]);break;case 50:this.$=i.Relationships.CONTAINS;break;case 51:this.$=i.Relationships.COPIES;break;case 52:this.$=i.Relationships.DERIVES;break;case 53:this.$=i.Relationships.SATISFIES;break;case 54:this.$=i.Relationships.VERIFIES;break;case 55:this.$=i.Relationships.REFINES;break;case 56:this.$=i.Relationships.TRACES;break;case 57:this.$=r[l-2],i.defineClass(r[l-1],r[l]);break;case 58:i.setClass(r[l-1],r[l]);break;case 59:i.setClass([r[l-2]],r[l]);break;case 60:case 62:case 65:this.$=[r[l]];break;case 61:case 63:this.$=r[l-2].concat([r[l]]);break;case 64:this.$=r[l-2],i.setCssStyle(r[l-1],r[l]);break;case 66:r[l-2].push(r[l]),this.$=r[l-2];break;case 68:this.$=r[l-1]+r[l]}},"anonymous"),table:[{3:1,4:2,6:t,9:s,11:i,13:n},{1:[3]},{3:8,4:2,5:[1,7],6:t,9:s,11:i,13:n},{5:[1,9]},{10:[1,10]},{12:[1,11]},e(r,[2,6]),{3:12,4:2,6:t,9:s,11:i,13:n},{1:[2,2]},{4:17,5:a,7:13,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:c,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:_,54:f,72:g,74:S,77:I,89:b,90:T},e(r,[2,4]),e(r,[2,5]),{1:[2,1]},{8:[1,41]},{4:17,5:a,7:42,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:c,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:43,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:c,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:44,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:c,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:45,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:c,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:46,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:c,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:47,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:c,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:48,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:c,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:49,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:c,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:50,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:c,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{26:51,89:[1,52],90:[1,53]},{55:54,89:[1,55],90:[1,56]},{29:[1,59],61:[1,57],63:[1,58]},e(k,[2,17]),e(k,[2,18]),e(k,[2,19]),e(k,[2,20]),{30:60,33:62,75:N,89:b,90:T},{30:63,33:62,75:N,89:b,90:T},{30:64,33:62,75:N,89:b,90:T},e(q,[2,29]),e(q,[2,30]),e(q,[2,31]),e(q,[2,32]),e(q,[2,33]),e(q,[2,34]),e(C,[2,81]),e(C,[2,82]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{27:[1,65],29:[1,66]},e(A,[2,79]),e(A,[2,80]),{27:[1,67],29:[1,68]},e(A,[2,85]),e(A,[2,86]),{62:69,65:L,66:v,67:$,68:O,69:x,70:w,71:D},{62:77,65:L,66:v,67:$,68:O,69:x,70:w,71:D},{30:78,33:62,75:N,89:b,90:T},{73:79,75:M,76:F,78:81,79:82,80:K,81:P,82:V,83:U,84:Y,85:B,86:Q,87:H,88:j},e(W,[2,60]),e(W,[2,62]),{73:93,75:M,76:F,78:81,79:82,80:K,81:P,82:V,83:U,84:Y,85:B,86:Q,87:H,88:j},{30:94,33:62,75:N,76:F,89:b,90:T},{5:[1,95]},{30:96,33:62,75:N,89:b,90:T},{5:[1,97]},{30:98,33:62,75:N,89:b,90:T},{63:[1,99]},e(z,[2,50]),e(z,[2,51]),e(z,[2,52]),e(z,[2,53]),e(z,[2,54]),e(z,[2,55]),e(z,[2,56]),{64:[1,100]},e(k,[2,59],{76:F}),e(k,[2,64],{76:G}),{33:103,75:[1,102],89:b,90:T},e(X,[2,65],{79:104,75:M,80:K,81:P,82:V,83:U,84:Y,85:B,86:Q,87:H,88:j}),e(J,[2,67]),e(J,[2,69]),e(J,[2,70]),e(J,[2,71]),e(J,[2,72]),e(J,[2,73]),e(J,[2,74]),e(J,[2,75]),e(J,[2,76]),e(J,[2,77]),e(J,[2,78]),e(k,[2,57],{76:G}),e(k,[2,58],{76:F}),{5:Z,28:105,31:ee,34:te,36:se,38:ie,40:ne},{27:[1,112],76:F},{5:re,40:ae,56:113,57:le,59:oe},{27:[1,118],76:F},{33:119,89:b,90:T},{33:120,89:b,90:T},{75:M,78:121,79:82,80:K,81:P,82:V,83:U,84:Y,85:B,86:Q,87:H,88:j},e(W,[2,61]),e(W,[2,63]),e(J,[2,68]),e(k,[2,21]),{32:[1,122]},{32:[1,123]},{32:[1,124]},{32:[1,125]},{5:Z,28:126,31:ee,34:te,36:se,38:ie,40:ne},e(k,[2,28]),{5:[1,127]},e(k,[2,42]),{32:[1,128]},{32:[1,129]},{5:re,40:ae,56:130,57:le,59:oe},e(k,[2,47]),{5:[1,131]},e(k,[2,48]),e(k,[2,49]),e(X,[2,66],{79:104,75:M,80:K,81:P,82:V,83:U,84:Y,85:B,86:Q,87:H,88:j}),{33:132,89:b,90:T},{35:133,89:[1,134],90:[1,135]},{37:136,47:[1,137],48:[1,138],49:[1,139]},{39:140,50:[1,141],51:[1,142],52:[1,143],53:[1,144]},e(k,[2,27]),{5:Z,28:145,31:ee,34:te,36:se,38:ie,40:ne},{58:146,89:[1,147],90:[1,148]},{60:149,89:[1,150],90:[1,151]},e(k,[2,46]),{5:re,40:ae,56:152,57:le,59:oe},{5:[1,153]},{5:[1,154]},{5:[2,83]},{5:[2,84]},{5:[1,155]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[1,156]},{5:[2,38]},{5:[2,39]},{5:[2,40]},{5:[2,41]},e(k,[2,22]),{5:[1,157]},{5:[2,87]},{5:[2,88]},{5:[1,158]},{5:[2,89]},{5:[2,90]},e(k,[2,43]),{5:Z,28:159,31:ee,34:te,36:se,38:ie,40:ne},{5:Z,28:160,31:ee,34:te,36:se,38:ie,40:ne},{5:Z,28:161,31:ee,34:te,36:se,38:ie,40:ne},{5:Z,28:162,31:ee,34:te,36:se,38:ie,40:ne},{5:re,40:ae,56:163,57:le,59:oe},{5:re,40:ae,56:164,57:le,59:oe},e(k,[2,23]),e(k,[2,24]),e(k,[2,25]),e(k,[2,26]),e(k,[2,44]),e(k,[2,45])],defaultActions:{8:[2,2],12:[2,1],41:[2,3],42:[2,8],43:[2,9],44:[2,10],45:[2,11],46:[2,12],47:[2,13],48:[2,14],49:[2,15],50:[2,16],134:[2,83],135:[2,84],137:[2,35],138:[2,36],139:[2,37],141:[2,38],142:[2,39],143:[2,40],144:[2,41],147:[2,87],148:[2,88],150:[2,89],151:[2,90]},parseError:(0,o.K2)(function(e,t){if(!t.recoverable){var s=new Error(e);throw s.hash=t,s}this.trace(e)},"parseError"),parse:(0,o.K2)(function(e){var t=this,s=[0],i=[],n=[null],r=[],a=this.table,l="",c=0,h=0,u=0,y=r.slice.call(arguments,1),m=Object.create(this.lexer),d={yy:{}};for(var E in this.yy)Object.prototype.hasOwnProperty.call(this.yy,E)&&(d.yy[E]=this.yy[E]);m.setInput(e,d.yy),d.yy.lexer=m,d.yy.parser=this,void 0===m.yylloc&&(m.yylloc={});var p=m.yylloc;r.push(p);var R=m.options&&m.options.ranges;function _(){var e;return"number"!=typeof(e=i.pop()||m.lex()||1)&&(e instanceof Array&&(e=(i=e).pop()),e=t.symbols_[e]||e),e}"function"==typeof d.yy.parseError?this.parseError=d.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,o.K2)(function(e){s.length=s.length-2*e,n.length=n.length-e,r.length=r.length-e},"popStack"),(0,o.K2)(_,"lex");for(var f,g,S,I,b,T,k,N,q,C={};;){if(S=s[s.length-1],this.defaultActions[S]?I=this.defaultActions[S]:(null==f&&(f=_()),I=a[S]&&a[S][f]),void 0===I||!I.length||!I[0]){var A="";for(T in q=[],a[S])this.terminals_[T]&&T>2&&q.push("'"+this.terminals_[T]+"'");A=m.showPosition?"Parse error on line "+(c+1)+":\n"+m.showPosition()+"\nExpecting "+q.join(", ")+", got '"+(this.terminals_[f]||f)+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==f?"end of input":"'"+(this.terminals_[f]||f)+"'"),this.parseError(A,{text:m.match,token:this.terminals_[f]||f,line:m.yylineno,loc:p,expected:q})}if(I[0]instanceof Array&&I.length>1)throw new Error("Parse Error: multiple actions possible at state: "+S+", token: "+f);switch(I[0]){case 1:s.push(f),n.push(m.yytext),r.push(m.yylloc),s.push(I[1]),f=null,g?(f=g,g=null):(h=m.yyleng,l=m.yytext,c=m.yylineno,p=m.yylloc,u>0&&u--);break;case 2:if(k=this.productions_[I[1]][1],C.$=n[n.length-k],C._$={first_line:r[r.length-(k||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(k||1)].first_column,last_column:r[r.length-1].last_column},R&&(C._$.range=[r[r.length-(k||1)].range[0],r[r.length-1].range[1]]),void 0!==(b=this.performAction.apply(C,[l,h,c,d.yy,I[1],n,r].concat(y))))return b;k&&(s=s.slice(0,-1*k*2),n=n.slice(0,-1*k),r=r.slice(0,-1*k)),s.push(this.productions_[I[1]][0]),n.push(C.$),r.push(C._$),N=a[s[s.length-2]][s[s.length-1]],s.push(N);break;case 3:return!0}}return!0},"parse")},he=function(){return{EOF:1,parseError:(0,o.K2)(function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},"parseError"),setInput:(0,o.K2)(function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,o.K2)(function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},"input"),unput:(0,o.K2)(function(e){var t=e.length,s=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},"unput"),more:(0,o.K2)(function(){return this._more=!0,this},"more"),reject:(0,o.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,o.K2)(function(e){this.unput(this.match.slice(e))},"less"),pastInput:(0,o.K2)(function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,o.K2)(function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,o.K2)(function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},"showPosition"),test_match:(0,o.K2)(function(e,t){var s,i,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(i=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],s=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var r in n)this[r]=n[r];return!1}return!1},"test_match"),next:(0,o.K2)(function(){if(this.done)return this.EOF;var e,t,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;r<n.length;r++)if((s=this._input.match(this.rules[n[r]]))&&(!t||s[0].length>t[0].length)){if(t=s,i=r,this.options.backtrack_lexer){if(!1!==(e=this.test_match(s,n[r])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,n[i]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,o.K2)(function(){var e=this.next();return e||this.lex()},"lex"),begin:(0,o.K2)(function(e){this.conditionStack.push(e)},"begin"),popState:(0,o.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,o.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,o.K2)(function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},"topState"),pushState:(0,o.K2)(function(e){this.begin(e)},"pushState"),stateStackSize:(0,o.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,o.K2)(function(e,t,s,i){switch(s){case 0:return"title";case 1:return this.begin("acc_title"),9;case 2:return this.popState(),"acc_title_value";case 3:return this.begin("acc_descr"),11;case 4:return this.popState(),"acc_descr_value";case 5:this.begin("acc_descr_multiline");break;case 6:case 58:case 65:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:return 21;case 9:return 22;case 10:return 23;case 11:return 24;case 12:return 5;case 13:case 14:case 15:case 56:break;case 16:return 8;case 17:return 6;case 18:return 27;case 19:return 40;case 20:return 29;case 21:return 32;case 22:return 31;case 23:return 34;case 24:return 36;case 25:return 38;case 26:return 41;case 27:return 42;case 28:return 43;case 29:return 44;case 30:return 45;case 31:return 46;case 32:return 47;case 33:return 48;case 34:return 49;case 35:return 50;case 36:return 51;case 37:return 52;case 38:return 53;case 39:return 54;case 40:return 65;case 41:return 66;case 42:return 67;case 43:return 68;case 44:return 69;case 45:return 70;case 46:return 71;case 47:return 57;case 48:return 59;case 49:return this.begin("style"),77;case 50:case 68:return 75;case 51:return 81;case 52:return 88;case 53:return"PERCENT";case 54:return 86;case 55:return 84;case 57:case 64:this.begin("string");break;case 59:return this.begin("style"),72;case 60:return this.begin("style"),74;case 61:return 61;case 62:return 64;case 63:return 63;case 66:return"qString";case 67:return t.yytext=t.yytext.trim(),89;case 69:return 80;case 70:return 76}},"anonymous"),rules:[/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::{3})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:style\b)/i,/^(?:\w+)/i,/^(?::)/i,/^(?:;)/i,/^(?:%)/i,/^(?:-)/i,/^(?:#)/i,/^(?: )/i,/^(?:["])/i,/^(?:\n)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^:,\r\n\{\<\>\-\=]*)/i,/^(?:\w+)/i,/^(?:[0-9]+)/i,/^(?:,)/i],conditions:{acc_descr_multiline:{rules:[6,7,68,69,70],inclusive:!1},acc_descr:{rules:[4,68,69,70],inclusive:!1},acc_title:{rules:[2,68,69,70],inclusive:!1},style:{rules:[50,51,52,53,54,55,56,57,58,68,69,70],inclusive:!1},unqString:{rules:[68,69,70],inclusive:!1},token:{rules:[68,69,70],inclusive:!1},string:{rules:[65,66,68,69,70],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,59,60,61,62,63,64,67,68,69,70],inclusive:!0}}}}();function ue(){this.yy={}}return ce.lexer=he,(0,o.K2)(ue,"Parser"),ue.prototype=ce,ce.Parser=ue,new ue}();c.parser=c;var h=c,u=class{constructor(){this.relations=[],this.latestRequirement=this.getInitialRequirement(),this.requirements=new Map,this.latestElement=this.getInitialElement(),this.elements=new Map,this.classes=new Map,this.direction="TB",this.RequirementType={REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"},this.RiskLevel={LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"},this.VerifyType={VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"},this.Relationships={CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"},this.setAccTitle=l.SV,this.getAccTitle=l.iN,this.setAccDescription=l.EI,this.getAccDescription=l.m7,this.setDiagramTitle=l.ke,this.getDiagramTitle=l.ab,this.getConfig=(0,o.K2)(()=>(0,l.D7)().requirement,"getConfig"),this.clear(),this.setDirection=this.setDirection.bind(this),this.addRequirement=this.addRequirement.bind(this),this.setNewReqId=this.setNewReqId.bind(this),this.setNewReqRisk=this.setNewReqRisk.bind(this),this.setNewReqText=this.setNewReqText.bind(this),this.setNewReqVerifyMethod=this.setNewReqVerifyMethod.bind(this),this.addElement=this.addElement.bind(this),this.setNewElementType=this.setNewElementType.bind(this),this.setNewElementDocRef=this.setNewElementDocRef.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setCssStyle=this.setCssStyle.bind(this),this.setClass=this.setClass.bind(this),this.defineClass=this.defineClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{(0,o.K2)(this,"RequirementDB")}getDirection(){return this.direction}setDirection(e){this.direction=e}resetLatestRequirement(){this.latestRequirement=this.getInitialRequirement()}resetLatestElement(){this.latestElement=this.getInitialElement()}getInitialRequirement(){return{requirementId:"",text:"",risk:"",verifyMethod:"",name:"",type:"",cssStyles:[],classes:["default"]}}getInitialElement(){return{name:"",type:"",docRef:"",cssStyles:[],classes:["default"]}}addRequirement(e,t){return this.requirements.has(e)||this.requirements.set(e,{name:e,type:t,requirementId:this.latestRequirement.requirementId,text:this.latestRequirement.text,risk:this.latestRequirement.risk,verifyMethod:this.latestRequirement.verifyMethod,cssStyles:[],classes:["default"]}),this.resetLatestRequirement(),this.requirements.get(e)}getRequirements(){return this.requirements}setNewReqId(e){void 0!==this.latestRequirement&&(this.latestRequirement.requirementId=e)}setNewReqText(e){void 0!==this.latestRequirement&&(this.latestRequirement.text=e)}setNewReqRisk(e){void 0!==this.latestRequirement&&(this.latestRequirement.risk=e)}setNewReqVerifyMethod(e){void 0!==this.latestRequirement&&(this.latestRequirement.verifyMethod=e)}addElement(e){return this.elements.has(e)||(this.elements.set(e,{name:e,type:this.latestElement.type,docRef:this.latestElement.docRef,cssStyles:[],classes:["default"]}),o.Rm.info("Added new element: ",e)),this.resetLatestElement(),this.elements.get(e)}getElements(){return this.elements}setNewElementType(e){void 0!==this.latestElement&&(this.latestElement.type=e)}setNewElementDocRef(e){void 0!==this.latestElement&&(this.latestElement.docRef=e)}addRelationship(e,t,s){this.relations.push({type:e,src:t,dst:s})}getRelationships(){return this.relations}clear(){this.relations=[],this.resetLatestRequirement(),this.requirements=new Map,this.resetLatestElement(),this.elements=new Map,this.classes=new Map,(0,l.IU)()}setCssStyle(e,t){for(const s of e){const e=this.requirements.get(s)??this.elements.get(s);if(!t||!e)return;for(const s of t)s.includes(",")?e.cssStyles.push(...s.split(",")):e.cssStyles.push(s)}}setClass(e,t){for(const s of e){const e=this.requirements.get(s)??this.elements.get(s);if(e)for(const s of t){e.classes.push(s);const t=this.classes.get(s)?.styles;t&&e.cssStyles.push(...t)}}}defineClass(e,t){for(const s of e){let e=this.classes.get(s);void 0===e&&(e={id:s,styles:[],textStyles:[]},this.classes.set(s,e)),t&&t.forEach(function(t){if(/color/.exec(t)){const s=t.replace("fill","bgFill");e.textStyles.push(s)}e.styles.push(t)}),this.requirements.forEach(e=>{e.classes.includes(s)&&e.cssStyles.push(...t.flatMap(e=>e.split(",")))}),this.elements.forEach(e=>{e.classes.includes(s)&&e.cssStyles.push(...t.flatMap(e=>e.split(",")))})}}getClasses(){return this.classes}getData(){const e=(0,l.D7)(),t=[],s=[];for(const i of this.requirements.values()){const s=i;s.id=i.name,s.cssStyles=i.cssStyles,s.cssClasses=i.classes.join(" "),s.shape="requirementBox",s.look=e.look,s.colorIndex=t.length,t.push(s)}for(const i of this.elements.values()){const s=i;s.shape="requirementBox",s.look=e.look,s.id=i.name,s.cssStyles=i.cssStyles,s.cssClasses=i.classes.join(" "),s.colorIndex=t.length,t.push(s)}for(const i of this.relations){let t=0;const n=i.type===this.Relationships.CONTAINS,r={id:`${i.src}-${i.dst}-${t}`,start:this.requirements.get(i.src)?.name??this.elements.get(i.src)?.name,end:this.requirements.get(i.dst)?.name??this.elements.get(i.dst)?.name,label:`<<${i.type}>>`,classes:"relationshipLine",style:["fill:none",n?"":"stroke-dasharray: 10,7"],labelpos:"c",thickness:"normal",type:"normal",pattern:n?"normal":"dashed",arrowTypeStart:n?"requirement_contains":"",arrowTypeEnd:n?"":"requirement_arrow",look:e.look,labelType:"markdown"};s.push(r),t++}return{nodes:t,edges:s,other:{},config:e,direction:this.getDirection()}}},y=(0,o.K2)(e=>{const t=(0,l.zj)(),{themeVariables:s,look:i}=t,{bkgColorArray:n,borderColorArray:r}=s;if(!r?.length)return"";let a="";for(let l=0;l<e.THEME_COLOR_LIMIT;l++)a+=`\n\n [data-look="${i}"][data-color-id="color-${l}"].node path {\n stroke: ${r[l]};\n fill: ${n?.length?n[l]:""};\n }\n\n [data-look="${i}"][data-color-id="color-${l}"].node rect {\n stroke: ${r[l]};\n fill: ${n?.length?n[l]:""};\n }\n `;return a},"genColor"),m=(0,o.K2)(e=>{const t=(0,l.zj)(),{look:s,themeVariables:i}=t,{requirementEdgeLabelBackground:n}=i;return`\n ${y(e)}\n marker {\n fill: ${e.relationColor};\n stroke: ${e.relationColor};\n }\n\n marker.cross {\n stroke: ${e.lineColor};\n }\n\n svg {\n font-family: ${e.fontFamily};\n font-size: ${e.fontSize};\n }\n\n .reqBox {\n fill: ${e.requirementBackground};\n fill-opacity: 1.0;\n stroke: ${e.requirementBorderColor};\n stroke-width: ${e.requirementBorderSize};\n }\n \n .reqTitle, .reqLabel{\n fill: ${e.requirementTextColor};\n }\n .reqLabelBox {\n fill: ${e.relationLabelBackground};\n fill-opacity: 1.0;\n }\n\n .req-title-line {\n stroke: ${e.requirementBorderColor};\n stroke-width: ${e.requirementBorderSize};\n }\n .relationshipLine {\n stroke: ${e.relationColor};\n stroke-width: ${"neo"===s?e.strokeWidth:"1px"};\n }\n .relationshipLabel {\n fill: ${e.relationLabelColor};\n }\n .edgeLabel {\n background-color: ${e.edgeLabelBackground};\n }\n .edgeLabel .label rect {\n fill: ${e.edgeLabelBackground};\n }\n .edgeLabel .label text {\n fill: ${e.relationLabelColor};\n }\n .divider {\n stroke: ${e.nodeBorder};\n stroke-width: 1;\n }\n .label {\n font-family: ${e.fontFamily};\n color: ${e.nodeTextColor||e.textColor};\n }\n .label text,span {\n fill: ${e.nodeTextColor||e.textColor};\n color: ${e.nodeTextColor||e.textColor};\n }\n .labelBkg {\n background-color: ${n??e.edgeLabelBackground};\n }\n\n`},"getStyles"),d={};(0,o.VA)(d,{draw:()=>E});var E=(0,o.K2)(async function(e,t,s,c){o.Rm.info("REF0:"),o.Rm.info("Drawing requirement diagram (unified)",t);const{securityLevel:h,state:u,layout:y,look:m}=(0,l.D7)(),d=c.db.getData(),E=(0,i.A)(t,h);d.type=c.type,d.layoutAlgorithm=(0,r.q7)(y),d.nodeSpacing=u?.nodeSpacing??50,d.rankSpacing=u?.rankSpacing??50,d.markers="neo"===m?["requirement_contains_neo","requirement_arrow_neo"]:["requirement_contains","requirement_arrow"],d.diagramId=t,await(0,r.XX)(d,E);a._K.insertTitle(E,"requirementDiagramTitleText",u?.titleTopMargin??25,c.db.getDiagramTitle()),(0,n.P)(E,8,"requirementDiagram",u?.useMaxWidth??!0)},"draw"),p={parser:h,get db(){return new u},renderer:d,styles:m}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/697.e1117f89.js b/docs/build/assets/js/697.e1117f89.js deleted file mode 100644 index 49786e654..000000000 --- a/docs/build/assets/js/697.e1117f89.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[697],{3126(t,e,n){n.d(e,{T:()=>I});var r=n(9142),o=n(9610),s=n(7422),i=n(1662),c=n(9471),u=n(9779),a=n(9893),h=n(2049),f=n(8446),l=n(9912),d=n(7271),A=n(3858),v=Object.prototype.hasOwnProperty;const p=function(t){if(null==t)return!0;if((0,f.A)(t)&&((0,h.A)(t)||"string"==typeof t||"function"==typeof t.splice||(0,l.A)(t)||(0,A.A)(t)||(0,a.A)(t)))return!t.length;var e=(0,u.A)(t);if("[object Map]"==e||"[object Set]"==e)return!t.size;if((0,d.A)(t))return!(0,c.A)(t).length;for(var n in t)if(v.call(t,n))return!1;return!0};var _=n(8058),b=n(9592),g=n(3588),y=n(4326),j=n(2062),O=n(5707);const w=function(t){return t!=t};const m=function(t,e,n){for(var r=n-1,o=t.length;++r<o;)if(t[r]===e)return r;return-1};const C=function(t,e,n){return e==e?m(t,e,n):(0,O.A)(t,w,n)};const P=function(t,e){return!!(null==t?0:t.length)&&C(t,e,0)>-1};const E=function(t,e,n){for(var r=-1,o=null==t?0:t.length;++r<o;)if(n(e,t[r]))return!0;return!1};var z=n(4099),L=n(9857);const N=function(){};var S=n(9959),D=L.A&&1/(0,S.A)(new L.A([,-0]))[1]==1/0?function(t){return new L.A(t)}:N;const F=D;const T=function(t,e,n){var r=-1,o=P,s=t.length,i=!0,c=[],u=c;if(n)i=!1,o=E;else if(s>=200){var a=e?null:F(t);if(a)return(0,S.A)(a);i=!1,o=z.A,u=new j.A}else u=e?[]:c;t:for(;++r<s;){var h=t[r],f=e?e(h):h;if(h=n||0!==h?h:0,i&&f==f){for(var l=u.length;l--;)if(u[l]===f)continue t;e&&u.push(f),c.push(h)}else o(u,f,n)||(u!==c&&u.push(f),c.push(h))}return c};var k=n(3533);const x=(0,y.A)(function(t){return T((0,g.A)(t,1,k.A,!0))});var M=n(8207),$=n(9463),B="\0";class I{constructor(t={}){this._isDirected=!Object.prototype.hasOwnProperty.call(t,"directed")||t.directed,this._isMultigraph=!!Object.prototype.hasOwnProperty.call(t,"multigraph")&&t.multigraph,this._isCompound=!!Object.prototype.hasOwnProperty.call(t,"compound")&&t.compound,this._label=void 0,this._defaultNodeLabelFn=r.A(void 0),this._defaultEdgeLabelFn=r.A(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[B]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(t){return this._label=t,this}graph(){return this._label}setDefaultNodeLabel(t){return o.A(t)||(t=r.A(t)),this._defaultNodeLabelFn=t,this}nodeCount(){return this._nodeCount}nodes(){return s.A(this._nodes)}sources(){var t=this;return i.A(this.nodes(),function(e){return p(t._in[e])})}sinks(){var t=this;return i.A(this.nodes(),function(e){return p(t._out[e])})}setNodes(t,e){var n=arguments,r=this;return _.A(t,function(t){n.length>1?r.setNode(t,e):r.setNode(t)}),this}setNode(t,e){return Object.prototype.hasOwnProperty.call(this._nodes,t)?(arguments.length>1&&(this._nodes[t]=e),this):(this._nodes[t]=arguments.length>1?e:this._defaultNodeLabelFn(t),this._isCompound&&(this._parent[t]=B,this._children[t]={},this._children[B][t]=!0),this._in[t]={},this._preds[t]={},this._out[t]={},this._sucs[t]={},++this._nodeCount,this)}node(t){return this._nodes[t]}hasNode(t){return Object.prototype.hasOwnProperty.call(this._nodes,t)}removeNode(t){if(Object.prototype.hasOwnProperty.call(this._nodes,t)){var e=t=>this.removeEdge(this._edgeObjs[t]);delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],_.A(this.children(t),t=>{this.setParent(t)}),delete this._children[t]),_.A(s.A(this._in[t]),e),delete this._in[t],delete this._preds[t],_.A(s.A(this._out[t]),e),delete this._out[t],delete this._sucs[t],--this._nodeCount}return this}setParent(t,e){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(b.A(e))e=B;else{for(var n=e+="";!b.A(n);n=this.parent(n))if(n===t)throw new Error("Setting "+e+" as parent of "+t+" would create a cycle");this.setNode(e)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=e,this._children[e][t]=!0,this}_removeFromParentsChildList(t){delete this._children[this._parent[t]][t]}parent(t){if(this._isCompound){var e=this._parent[t];if(e!==B)return e}}children(t){if(b.A(t)&&(t=B),this._isCompound){var e=this._children[t];if(e)return s.A(e)}else{if(t===B)return this.nodes();if(this.hasNode(t))return[]}}predecessors(t){var e=this._preds[t];if(e)return s.A(e)}successors(t){var e=this._sucs[t];if(e)return s.A(e)}neighbors(t){var e=this.predecessors(t);if(e)return x(e,this.successors(t))}isLeaf(t){return 0===(this.isDirected()?this.successors(t):this.neighbors(t)).length}filterNodes(t){var e=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});e.setGraph(this.graph());var n=this;_.A(this._nodes,function(n,r){t(r)&&e.setNode(r,n)}),_.A(this._edgeObjs,function(t){e.hasNode(t.v)&&e.hasNode(t.w)&&e.setEdge(t,n.edge(t))});var r={};function o(t){var s=n.parent(t);return void 0===s||e.hasNode(s)?(r[t]=s,s):s in r?r[s]:o(s)}return this._isCompound&&_.A(e.nodes(),function(t){e.setParent(t,o(t))}),e}setDefaultEdgeLabel(t){return o.A(t)||(t=r.A(t)),this._defaultEdgeLabelFn=t,this}edgeCount(){return this._edgeCount}edges(){return M.A(this._edgeObjs)}setPath(t,e){var n=this,r=arguments;return $.A(t,function(t,o){return r.length>1?n.setEdge(t,o,e):n.setEdge(t,o),o}),this}setEdge(){var t,e,n,r,o=!1,s=arguments[0];"object"==typeof s&&null!==s&&"v"in s?(t=s.v,e=s.w,n=s.name,2===arguments.length&&(r=arguments[1],o=!0)):(t=s,e=arguments[1],n=arguments[3],arguments.length>2&&(r=arguments[2],o=!0)),t=""+t,e=""+e,b.A(n)||(n=""+n);var i=V(this._isDirected,t,e,n);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,i))return o&&(this._edgeLabels[i]=r),this;if(!b.A(n)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(e),this._edgeLabels[i]=o?r:this._defaultEdgeLabelFn(t,e,n);var c=function(t,e,n,r){var o=""+e,s=""+n;if(!t&&o>s){var i=o;o=s,s=i}var c={v:o,w:s};r&&(c.name=r);return c}(this._isDirected,t,e,n);return t=c.v,e=c.w,Object.freeze(c),this._edgeObjs[i]=c,U(this._preds[e],t),U(this._sucs[t],e),this._in[e][i]=c,this._out[t][i]=c,this._edgeCount++,this}edge(t,e,n){var r=1===arguments.length?G(this._isDirected,arguments[0]):V(this._isDirected,t,e,n);return this._edgeLabels[r]}hasEdge(t,e,n){var r=1===arguments.length?G(this._isDirected,arguments[0]):V(this._isDirected,t,e,n);return Object.prototype.hasOwnProperty.call(this._edgeLabels,r)}removeEdge(t,e,n){var r=1===arguments.length?G(this._isDirected,arguments[0]):V(this._isDirected,t,e,n),o=this._edgeObjs[r];return o&&(t=o.v,e=o.w,delete this._edgeLabels[r],delete this._edgeObjs[r],R(this._preds[e],t),R(this._sucs[t],e),delete this._in[e][r],delete this._out[t][r],this._edgeCount--),this}inEdges(t,e){var n=this._in[t];if(n){var r=M.A(n);return e?i.A(r,function(t){return t.v===e}):r}}outEdges(t,e){var n=this._out[t];if(n){var r=M.A(n);return e?i.A(r,function(t){return t.w===e}):r}}nodeEdges(t,e){var n=this.inEdges(t,e);if(n)return n.concat(this.outEdges(t,e))}}function U(t,e){t[e]?t[e]++:t[e]=1}function R(t,e){--t[e]||delete t[e]}function V(t,e,n,r){var o=""+e,s=""+n;if(!t&&o>s){var i=o;o=s,s=i}return o+"\x01"+s+"\x01"+(b.A(r)?"\0":r)}function G(t,e){return V(t,e.v,e.w,e.name)}I.prototype._nodeCount=0,I.prototype._edgeCount=0},697(t,e,n){n.d(e,{T:()=>r.T});var r=n(3126)},127(t,e,n){n.d(e,{A:()=>l});const r=function(){this.__data__=[],this.size=0};var o=n(6984);const s=function(t,e){for(var n=t.length;n--;)if((0,o.A)(t[n][0],e))return n;return-1};var i=Array.prototype.splice;const c=function(t){var e=this.__data__,n=s(e,t);return!(n<0)&&(n==e.length-1?e.pop():i.call(e,n,1),--this.size,!0)};const u=function(t){var e=this.__data__,n=s(e,t);return n<0?void 0:e[n][1]};const a=function(t){return s(this.__data__,t)>-1};const h=function(t,e){var n=this.__data__,r=s(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this};function f(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}f.prototype.clear=r,f.prototype.delete=c,f.prototype.get=u,f.prototype.has=a,f.prototype.set=h;const l=f},8335(t,e,n){n.d(e,{A:()=>s});var r=n(8744),o=n(1917);const s=(0,r.A)(o.A,"Map")},1852(t,e,n){n.d(e,{A:()=>w});const r=(0,n(8744).A)(Object,"create");const o=function(){this.__data__=r?r(null):{},this.size=0};const s=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e};var i=Object.prototype.hasOwnProperty;const c=function(t){var e=this.__data__;if(r){var n=e[t];return"__lodash_hash_undefined__"===n?void 0:n}return i.call(e,t)?e[t]:void 0};var u=Object.prototype.hasOwnProperty;const a=function(t){var e=this.__data__;return r?void 0!==e[t]:u.call(e,t)};const h=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=r&&void 0===e?"__lodash_hash_undefined__":e,this};function f(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}f.prototype.clear=o,f.prototype.delete=s,f.prototype.get=c,f.prototype.has=a,f.prototype.set=h;const l=f;var d=n(127),A=n(8335);const v=function(){this.size=0,this.__data__={hash:new l,map:new(A.A||d.A),string:new l}};const p=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t};const _=function(t,e){var n=t.__data__;return p(e)?n["string"==typeof e?"string":"hash"]:n.map};const b=function(t){var e=_(this,t).delete(t);return this.size-=e?1:0,e};const g=function(t){return _(this,t).get(t)};const y=function(t){return _(this,t).has(t)};const j=function(t,e){var n=_(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this};function O(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}O.prototype.clear=v,O.prototype.delete=b,O.prototype.get=g,O.prototype.has=y,O.prototype.set=j;const w=O},9857(t,e,n){n.d(e,{A:()=>s});var r=n(8744),o=n(1917);const s=(0,r.A)(o.A,"Set")},2062(t,e,n){n.d(e,{A:()=>c});var r=n(1852);const o=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this};const s=function(t){return this.__data__.has(t)};function i(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new r.A;++e<n;)this.add(t[e])}i.prototype.add=i.prototype.push=o,i.prototype.has=s;const c=i},1754(t,e,n){n.d(e,{A:()=>l});var r=n(127);const o=function(){this.__data__=new r.A,this.size=0};const s=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n};const i=function(t){return this.__data__.get(t)};const c=function(t){return this.__data__.has(t)};var u=n(8335),a=n(1852);const h=function(t,e){var n=this.__data__;if(n instanceof r.A){var o=n.__data__;if(!u.A||o.length<199)return o.push([t,e]),this.size=++n.size,this;n=this.__data__=new a.A(o)}return n.set(t,e),this.size=n.size,this};function f(t){var e=this.__data__=new r.A(t);this.size=e.size}f.prototype.clear=o,f.prototype.delete=s,f.prototype.get=i,f.prototype.has=c,f.prototype.set=h;const l=f},241(t,e,n){n.d(e,{A:()=>r});const r=n(1917).A.Symbol},3988(t,e,n){n.d(e,{A:()=>r});const r=n(1917).A.Uint8Array},2641(t,e,n){n.d(e,{A:()=>r});const r=function(t,e){for(var n=-1,r=null==t?0:t.length;++n<r&&!1!==e(t[n],n,t););return t}},7396(t,e,n){n.d(e,{A:()=>r});const r=function(t,e){for(var n=-1,r=null==t?0:t.length,o=0,s=[];++n<r;){var i=t[n];e(i,n,t)&&(s[o++]=i)}return s}},3607(t,e,n){n.d(e,{A:()=>h});const r=function(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r};var o=n(9893),s=n(2049),i=n(9912),c=n(5353),u=n(3858),a=Object.prototype.hasOwnProperty;const h=function(t,e){var n=(0,s.A)(t),h=!n&&(0,o.A)(t),f=!n&&!h&&(0,i.A)(t),l=!n&&!h&&!f&&(0,u.A)(t),d=n||h||f||l,A=d?r(t.length,String):[],v=A.length;for(var p in t)!e&&!a.call(t,p)||d&&("length"==p||f&&("offset"==p||"parent"==p)||l&&("buffer"==p||"byteLength"==p||"byteOffset"==p)||(0,c.A)(p,v))||A.push(p);return A}},5572(t,e,n){n.d(e,{A:()=>r});const r=function(t,e){for(var n=-1,r=null==t?0:t.length,o=Array(r);++n<r;)o[n]=e(t[n],n,t);return o}},6912(t,e,n){n.d(e,{A:()=>r});const r=function(t,e){for(var n=-1,r=e.length,o=t.length;++n<r;)t[o+n]=e[n];return t}},6240(t,e,n){n.d(e,{A:()=>s});var r=n(9841),o=n(8446);const s=function(t,e){return function(n,r){if(null==n)return n;if(!(0,o.A)(n))return t(n,r);for(var s=n.length,i=e?s:-1,c=Object(n);(e?i--:++i<s)&&!1!==r(c[i],i,c););return n}}(r.A)},5707(t,e,n){n.d(e,{A:()=>r});const r=function(t,e,n,r){for(var o=t.length,s=n+(r?1:-1);r?s--:++s<o;)if(e(t[s],s,t))return s;return-1}},3588(t,e,n){n.d(e,{A:()=>a});var r=n(6912),o=n(241),s=n(9893),i=n(2049),c=o.A?o.A.isConcatSpreadable:void 0;const u=function(t){return(0,i.A)(t)||(0,s.A)(t)||!!(c&&t&&t[c])};const a=function t(e,n,o,s,i){var c=-1,a=e.length;for(o||(o=u),i||(i=[]);++c<a;){var h=e[c];n>0&&o(h)?n>1?t(h,n-1,o,s,i):(0,r.A)(i,h):s||(i[i.length]=h)}return i}},4574(t,e,n){n.d(e,{A:()=>r});const r=function(t){return function(e,n,r){for(var o=-1,s=Object(e),i=r(e),c=i.length;c--;){var u=i[t?c:++o];if(!1===n(s[u],u,s))break}return e}}()},9841(t,e,n){n.d(e,{A:()=>s});var r=n(4574),o=n(7422);const s=function(t,e){return t&&(0,r.A)(t,e,o.A)}},6318(t,e,n){n.d(e,{A:()=>s});var r=n(3442),o=n(901);const s=function(t,e){for(var n=0,s=(e=(0,r.A)(e,t)).length;null!=t&&n<s;)t=t[(0,o.A)(e[n++])];return n&&n==s?t:void 0}},3831(t,e,n){n.d(e,{A:()=>s});var r=n(6912),o=n(2049);const s=function(t,e,n){var s=e(t);return(0,o.A)(t)?s:(0,r.A)(s,n(t))}},8496(t,e,n){n.d(e,{A:()=>l});var r=n(241),o=Object.prototype,s=o.hasOwnProperty,i=o.toString,c=r.A?r.A.toStringTag:void 0;const u=function(t){var e=s.call(t,c),n=t[c];try{t[c]=void 0;var r=!0}catch(u){}var o=i.call(t);return r&&(e?t[c]=n:delete t[c]),o};var a=Object.prototype.toString;const h=function(t){return a.call(t)};var f=r.A?r.A.toStringTag:void 0;const l=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":f&&f in Object(t)?u(t):h(t)}},9574(t,e,n){n.d(e,{A:()=>H});var r=n(1754),o=n(2062);const s=function(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return!0;return!1};var i=n(4099);const c=function(t,e,n,r,c,u){var a=1&n,h=t.length,f=e.length;if(h!=f&&!(a&&f>h))return!1;var l=u.get(t),d=u.get(e);if(l&&d)return l==e&&d==t;var A=-1,v=!0,p=2&n?new o.A:void 0;for(u.set(t,e),u.set(e,t);++A<h;){var _=t[A],b=e[A];if(r)var g=a?r(b,_,A,e,t,u):r(_,b,A,t,e,u);if(void 0!==g){if(g)continue;v=!1;break}if(p){if(!s(e,function(t,e){if(!(0,i.A)(p,e)&&(_===t||c(_,t,n,r,u)))return p.push(e)})){v=!1;break}}else if(_!==b&&!c(_,b,n,r,u)){v=!1;break}}return u.delete(t),u.delete(e),v};var u=n(241),a=n(3988),h=n(6984);const f=function(t){var e=-1,n=Array(t.size);return t.forEach(function(t,r){n[++e]=[r,t]}),n};var l=n(9959),d=u.A?u.A.prototype:void 0,A=d?d.valueOf:void 0;const v=function(t,e,n,r,o,s,i){switch(n){case"[object DataView]":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=e.byteLength||!s(new a.A(t),new a.A(e)));case"[object Boolean]":case"[object Date]":case"[object Number]":return(0,h.A)(+t,+e);case"[object Error]":return t.name==e.name&&t.message==e.message;case"[object RegExp]":case"[object String]":return t==e+"";case"[object Map]":var u=f;case"[object Set]":var d=1&r;if(u||(u=l.A),t.size!=e.size&&!d)return!1;var v=i.get(t);if(v)return v==e;r|=2,i.set(t,e);var p=c(u(t),u(e),r,o,s,i);return i.delete(t),p;case"[object Symbol]":if(A)return A.call(t)==A.call(e)}return!1};var p=n(9042),_=Object.prototype.hasOwnProperty;const b=function(t,e,n,r,o,s){var i=1&n,c=(0,p.A)(t),u=c.length;if(u!=(0,p.A)(e).length&&!i)return!1;for(var a=u;a--;){var h=c[a];if(!(i?h in e:_.call(e,h)))return!1}var f=s.get(t),l=s.get(e);if(f&&l)return f==e&&l==t;var d=!0;s.set(t,e),s.set(e,t);for(var A=i;++a<u;){var v=t[h=c[a]],b=e[h];if(r)var g=i?r(b,v,h,e,t,s):r(v,b,h,t,e,s);if(!(void 0===g?v===b||o(v,b,n,r,s):g)){d=!1;break}A||(A="constructor"==h)}if(d&&!A){var y=t.constructor,j=e.constructor;y==j||!("constructor"in t)||!("constructor"in e)||"function"==typeof y&&y instanceof y&&"function"==typeof j&&j instanceof j||(d=!1)}return s.delete(t),s.delete(e),d};var g=n(9779),y=n(2049),j=n(9912),O=n(3858),w="[object Arguments]",m="[object Array]",C="[object Object]",P=Object.prototype.hasOwnProperty;const E=function(t,e,n,o,s,i){var u=(0,y.A)(t),a=(0,y.A)(e),h=u?m:(0,g.A)(t),f=a?m:(0,g.A)(e),l=(h=h==w?C:h)==C,d=(f=f==w?C:f)==C,A=h==f;if(A&&(0,j.A)(t)){if(!(0,j.A)(e))return!1;u=!0,l=!1}if(A&&!l)return i||(i=new r.A),u||(0,O.A)(t)?c(t,e,n,o,s,i):v(t,e,h,n,o,s,i);if(!(1&n)){var p=l&&P.call(t,"__wrapped__"),_=d&&P.call(e,"__wrapped__");if(p||_){var E=p?t.value():t,z=_?e.value():e;return i||(i=new r.A),s(E,z,n,o,i)}}return!!A&&(i||(i=new r.A),b(t,e,n,o,s,i))};var z=n(3098);const L=function t(e,n,r,o,s){return e===n||(null==e||null==n||!(0,z.A)(e)&&!(0,z.A)(n)?e!=e&&n!=n:E(e,n,r,o,t,s))};const N=function(t,e,n,o){var s=n.length,i=s,c=!o;if(null==t)return!i;for(t=Object(t);s--;){var u=n[s];if(c&&u[2]?u[1]!==t[u[0]]:!(u[0]in t))return!1}for(;++s<i;){var a=(u=n[s])[0],h=t[a],f=u[1];if(c&&u[2]){if(void 0===h&&!(a in t))return!1}else{var l=new r.A;if(o)var d=o(h,f,a,t,e,l);if(!(void 0===d?L(f,h,3,o,l):d))return!1}}return!0};var S=n(3149);const D=function(t){return t==t&&!(0,S.A)(t)};var F=n(7422);const T=function(t){for(var e=(0,F.A)(t),n=e.length;n--;){var r=e[n],o=t[r];e[n]=[r,o,D(o)]}return e};const k=function(t,e){return function(n){return null!=n&&(n[t]===e&&(void 0!==e||t in Object(n)))}};const x=function(t){var e=T(t);return 1==e.length&&e[0][2]?k(e[0][0],e[0][1]):function(n){return n===t||N(n,t,e)}};var M=n(6318);const $=function(t,e,n){var r=null==t?void 0:(0,M.A)(t,e);return void 0===r?n:r};var B=n(9188),I=n(6586),U=n(901);const R=function(t,e){return(0,I.A)(t)&&D(e)?k((0,U.A)(t),e):function(n){var r=$(n,t);return void 0===r&&r===e?(0,B.A)(n,t):L(e,r,3)}};var V=n(9008),G=n(805);const W=function(t){return function(e){return(0,M.A)(e,t)}};const q=function(t){return(0,I.A)(t)?(0,G.A)((0,U.A)(t)):W(t)};const H=function(t){return"function"==typeof t?t:null==t?V.A:"object"==typeof t?(0,y.A)(t)?R(t[0],t[1]):x(t):q(t)}},9471(t,e,n){n.d(e,{A:()=>i});var r=n(7271);const o=(0,n(367).A)(Object.keys,Object);var s=Object.prototype.hasOwnProperty;const i=function(t){if(!(0,r.A)(t))return o(t);var e=[];for(var n in Object(t))s.call(t,n)&&"constructor"!=n&&e.push(n);return e}},805(t,e,n){n.d(e,{A:()=>r});const r=function(t){return function(e){return null==e?void 0:e[t]}}},4326(t,e,n){n.d(e,{A:()=>i});var r=n(9008),o=n(6875),s=n(7525);const i=function(t,e){return(0,s.A)((0,o.A)(t,e,r.A),t+"")}},2789(t,e,n){n.d(e,{A:()=>r});const r=function(t){return function(e){return t(e)}}},4099(t,e,n){n.d(e,{A:()=>r});const r=function(t,e){return t.has(e)}},9922(t,e,n){n.d(e,{A:()=>o});var r=n(9008);const o=function(t){return"function"==typeof t?t:r.A}},3442(t,e,n){n.d(e,{A:()=>l});var r=n(2049),o=n(6586),s=n(1852);function i(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var n=function(){var r=arguments,o=e?e.apply(this,r):r[0],s=n.cache;if(s.has(o))return s.get(o);var i=t.apply(this,r);return n.cache=s.set(o,i)||s,i};return n.cache=new(i.Cache||s.A),n}i.Cache=s.A;const c=i;var u=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,a=/\\(\\)?/g;const h=function(t){var e=c(t,function(t){return 500===n.size&&n.clear(),t}),n=e.cache;return e}(function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(u,function(t,n,r,o){e.push(r?o.replace(a,"$1"):n||t)}),e});var f=n(8894);const l=function(t,e){return(0,r.A)(t)?t:(0,o.A)(t,e)?[t]:h((0,f.A)(t))}},4171(t,e,n){n.d(e,{A:()=>o});var r=n(8744);const o=function(){try{var t=(0,r.A)(Object,"defineProperty");return t({},"",{}),t}catch(e){}}()},2136(t,e,n){n.d(e,{A:()=>r});const r="object"==typeof globalThis&&globalThis&&globalThis.Object===Object&&globalThis},9042(t,e,n){n.d(e,{A:()=>i});var r=n(3831),o=n(4792),s=n(7422);const i=function(t){return(0,r.A)(t,s.A,o.A)}},8744(t,e,n){n.d(e,{A:()=>b});var r=n(9610);const o=n(1917).A["__core-js_shared__"];var s,i=(s=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||""))?"Symbol(src)_1."+s:"";const c=function(t){return!!i&&i in t};var u=n(3149),a=n(1121),h=/^\[object .+?Constructor\]$/,f=Function.prototype,l=Object.prototype,d=f.toString,A=l.hasOwnProperty,v=RegExp("^"+d.call(A).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");const p=function(t){return!(!(0,u.A)(t)||c(t))&&((0,r.A)(t)?v:h).test((0,a.A)(t))};const _=function(t,e){return null==t?void 0:t[e]};const b=function(t,e){var n=_(t,e);return p(n)?n:void 0}},4792(t,e,n){n.d(e,{A:()=>c});var r=n(7396),o=n(3153),s=Object.prototype.propertyIsEnumerable,i=Object.getOwnPropertySymbols;const c=i?function(t){return null==t?[]:(t=Object(t),(0,r.A)(i(t),function(e){return s.call(t,e)}))}:o.A},9779(t,e,n){n.d(e,{A:()=>w});var r=n(8744),o=n(1917);const s=(0,r.A)(o.A,"DataView");var i=n(8335);const c=(0,r.A)(o.A,"Promise");var u=n(9857);const a=(0,r.A)(o.A,"WeakMap");var h=n(8496),f=n(1121),l="[object Map]",d="[object Promise]",A="[object Set]",v="[object WeakMap]",p="[object DataView]",_=(0,f.A)(s),b=(0,f.A)(i.A),g=(0,f.A)(c),y=(0,f.A)(u.A),j=(0,f.A)(a),O=h.A;(s&&O(new s(new ArrayBuffer(1)))!=p||i.A&&O(new i.A)!=l||c&&O(c.resolve())!=d||u.A&&O(new u.A)!=A||a&&O(new a)!=v)&&(O=function(t){var e=(0,h.A)(t),n="[object Object]"==e?t.constructor:void 0,r=n?(0,f.A)(n):"";if(r)switch(r){case _:return p;case b:return l;case g:return d;case y:return A;case j:return v}return e});const w=O},5054(t,e,n){n.d(e,{A:()=>a});var r=n(3442),o=n(9893),s=n(2049),i=n(5353),c=n(5254),u=n(901);const a=function(t,e,n){for(var a=-1,h=(e=(0,r.A)(e,t)).length,f=!1;++a<h;){var l=(0,u.A)(e[a]);if(!(f=null!=t&&n(t,l)))break;t=t[l]}return f||++a!=h?f:!!(h=null==t?0:t.length)&&(0,c.A)(h)&&(0,i.A)(l,h)&&((0,s.A)(t)||(0,o.A)(t))}},5353(t,e,n){n.d(e,{A:()=>o});var r=/^(?:0|[1-9]\d*)$/;const o=function(t,e){var n=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==n||"symbol"!=n&&r.test(t))&&t>-1&&t%1==0&&t<e}},6586(t,e,n){n.d(e,{A:()=>c});var r=n(2049),o=n(1882),s=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,i=/^\w*$/;const c=function(t,e){if((0,r.A)(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!(0,o.A)(t))||(i.test(t)||!s.test(t)||null!=e&&t in Object(e))}},7271(t,e,n){n.d(e,{A:()=>o});var r=Object.prototype;const o=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||r)}},4841(t,e,n){n.d(e,{A:()=>c});var r=n(2136),o="object"==typeof exports&&exports&&!exports.nodeType&&exports,s=o&&"object"==typeof module&&module&&!module.nodeType&&module,i=s&&s.exports===o&&r.A.process;const c=function(){try{var t=s&&s.require&&s.require("util").types;return t||i&&i.binding&&i.binding("util")}catch(e){}}()},367(t,e,n){n.d(e,{A:()=>r});const r=function(t,e){return function(n){return t(e(n))}}},6875(t,e,n){n.d(e,{A:()=>s});const r=function(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)};var o=Math.max;const s=function(t,e,n){return e=o(void 0===e?t.length-1:e,0),function(){for(var s=arguments,i=-1,c=o(s.length-e,0),u=Array(c);++i<c;)u[i]=s[e+i];i=-1;for(var a=Array(e+1);++i<e;)a[i]=s[i];return a[e]=n(u),r(t,this,a)}}},1917(t,e,n){n.d(e,{A:()=>s});var r=n(2136),o="object"==typeof self&&self&&self.Object===Object&&self;const s=r.A||o||Function("return this")()},9959(t,e,n){n.d(e,{A:()=>r});const r=function(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=t}),n}},7525(t,e,n){n.d(e,{A:()=>a});var r=n(9142),o=n(4171),s=n(9008);const i=o.A?function(t,e){return(0,o.A)(t,"toString",{configurable:!0,enumerable:!1,value:(0,r.A)(e),writable:!0})}:s.A;var c=Date.now;const u=function(t){var e=0,n=0;return function(){var r=c(),o=16-(r-n);if(n=r,o>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}};const a=u(i)},901(t,e,n){n.d(e,{A:()=>o});var r=n(1882);const o=function(t){if("string"==typeof t||(0,r.A)(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}},1121(t,e,n){n.d(e,{A:()=>o});var r=Function.prototype.toString;const o=function(t){if(null!=t){try{return r.call(t)}catch(e){}try{return t+""}catch(e){}}return""}},9142(t,e,n){n.d(e,{A:()=>r});const r=function(t){return function(){return t}}},6984(t,e,n){n.d(e,{A:()=>r});const r=function(t,e){return t===e||t!=t&&e!=e}},1662(t,e,n){n.d(e,{A:()=>u});var r=n(7396),o=n(6240);const s=function(t,e){var n=[];return(0,o.A)(t,function(t,r,o){e(t,r,o)&&n.push(t)}),n};var i=n(9574),c=n(2049);const u=function(t,e){return((0,c.A)(t)?r.A:s)(t,(0,i.A)(e,3))}},8058(t,e,n){n.d(e,{A:()=>c});var r=n(2641),o=n(6240),s=n(9922),i=n(2049);const c=function(t,e){return((0,i.A)(t)?r.A:o.A)(t,(0,s.A)(e))}},9188(t,e,n){n.d(e,{A:()=>s});const r=function(t,e){return null!=t&&e in Object(t)};var o=n(5054);const s=function(t,e){return null!=t&&(0,o.A)(t,e,r)}},9008(t,e,n){n.d(e,{A:()=>r});const r=function(t){return t}},9893(t,e,n){n.d(e,{A:()=>h});var r=n(8496),o=n(3098);const s=function(t){return(0,o.A)(t)&&"[object Arguments]"==(0,r.A)(t)};var i=Object.prototype,c=i.hasOwnProperty,u=i.propertyIsEnumerable,a=s(function(){return arguments}())?s:function(t){return(0,o.A)(t)&&c.call(t,"callee")&&!u.call(t,"callee")};const h=a},2049(t,e,n){n.d(e,{A:()=>r});const r=Array.isArray},8446(t,e,n){n.d(e,{A:()=>s});var r=n(9610),o=n(5254);const s=function(t){return null!=t&&(0,o.A)(t.length)&&!(0,r.A)(t)}},3533(t,e,n){n.d(e,{A:()=>s});var r=n(8446),o=n(3098);const s=function(t){return(0,o.A)(t)&&(0,r.A)(t)}},9912(t,e,n){n.d(e,{A:()=>u});var r=n(1917);const o=function(){return!1};var s="object"==typeof exports&&exports&&!exports.nodeType&&exports,i=s&&"object"==typeof module&&module&&!module.nodeType&&module,c=i&&i.exports===s?r.A.Buffer:void 0;const u=(c?c.isBuffer:void 0)||o},9610(t,e,n){n.d(e,{A:()=>s});var r=n(8496),o=n(3149);const s=function(t){if(!(0,o.A)(t))return!1;var e=(0,r.A)(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},5254(t,e,n){n.d(e,{A:()=>r});const r=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}},3149(t,e,n){n.d(e,{A:()=>r});const r=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},3098(t,e,n){n.d(e,{A:()=>r});const r=function(t){return null!=t&&"object"==typeof t}},1882(t,e,n){n.d(e,{A:()=>s});var r=n(8496),o=n(3098);const s=function(t){return"symbol"==typeof t||(0,o.A)(t)&&"[object Symbol]"==(0,r.A)(t)}},3858(t,e,n){n.d(e,{A:()=>f});var r=n(8496),o=n(5254),s=n(3098),i={};i["[object Float32Array]"]=i["[object Float64Array]"]=i["[object Int8Array]"]=i["[object Int16Array]"]=i["[object Int32Array]"]=i["[object Uint8Array]"]=i["[object Uint8ClampedArray]"]=i["[object Uint16Array]"]=i["[object Uint32Array]"]=!0,i["[object Arguments]"]=i["[object Array]"]=i["[object ArrayBuffer]"]=i["[object Boolean]"]=i["[object DataView]"]=i["[object Date]"]=i["[object Error]"]=i["[object Function]"]=i["[object Map]"]=i["[object Number]"]=i["[object Object]"]=i["[object RegExp]"]=i["[object Set]"]=i["[object String]"]=i["[object WeakMap]"]=!1;const c=function(t){return(0,s.A)(t)&&(0,o.A)(t.length)&&!!i[(0,r.A)(t)]};var u=n(2789),a=n(4841),h=a.A&&a.A.isTypedArray;const f=h?(0,u.A)(h):c},9592(t,e,n){n.d(e,{A:()=>r});const r=function(t){return void 0===t}},7422(t,e,n){n.d(e,{A:()=>i});var r=n(3607),o=n(9471),s=n(8446);const i=function(t){return(0,s.A)(t)?(0,r.A)(t):(0,o.A)(t)}},9463(t,e,n){n.d(e,{A:()=>u});const r=function(t,e,n,r){var o=-1,s=null==t?0:t.length;for(r&&s&&(n=t[++o]);++o<s;)n=e(n,t[o],o,t);return n};var o=n(6240),s=n(9574);const i=function(t,e,n,r,o){return o(t,function(t,o,s){n=r?(r=!1,t):e(n,t,o,s)}),n};var c=n(2049);const u=function(t,e,n){var u=(0,c.A)(t)?r:i,a=arguments.length<3;return u(t,(0,s.A)(e,4),n,a,o.A)}},3153(t,e,n){n.d(e,{A:()=>r});const r=function(){return[]}},8894(t,e,n){n.d(e,{A:()=>h});var r=n(241),o=n(5572),s=n(2049),i=n(1882),c=r.A?r.A.prototype:void 0,u=c?c.toString:void 0;const a=function t(e){if("string"==typeof e)return e;if((0,s.A)(e))return(0,o.A)(e,t)+"";if((0,i.A)(e))return u?u.call(e):"";var n=e+"";return"0"==n&&1/e==-1/0?"-0":n};const h=function(t){return null==t?"":a(t)}},8207(t,e,n){n.d(e,{A:()=>i});var r=n(5572);const o=function(t,e){return(0,r.A)(e,function(e){return t[e]})};var s=n(7422);const i=function(t){return null==t?[]:o(t,(0,s.A)(t))}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/6f7f7b1d.64f02222.js b/docs/build/assets/js/6f7f7b1d.64f02222.js deleted file mode 100644 index 3873238d2..000000000 --- a/docs/build/assets/js/6f7f7b1d.64f02222.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[8336],{8199(e,r,s){s.r(r),s.d(r,{assets:()=>l,contentTitle:()=>c,default:()=>a,frontMatter:()=>d,metadata:()=>n,toc:()=>h});const n=JSON.parse('{"id":"FEATURES","title":"Doriath \u2014 Feature Analysis & Product Strategy","description":"Executive Summary","source":"@site/FEATURES.md","sourceDirName":".","slug":"/FEATURES","permalink":"/docs/FEATURES","draft":false,"unlisted":false,"editUrl":"https://github.com/ConductionNL/doriath/tree/development/docs/FEATURES.md","tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Doriath \u2014 Design References & Dashboard Wireframes","permalink":"/docs/DESIGN-REFERENCES"}}');var t=s(4848),i=s(8453);const d={},c="Doriath \u2014 Feature Analysis & Product Strategy",l={},h=[{value:"Executive Summary",id:"executive-summary",level:2},{value:"1. Competitive Landscape",id:"1-competitive-landscape",level:2},{value:"Nextcloud App Store",id:"nextcloud-app-store",level:3},{value:"Self-Hosted Open Source",id:"self-hosted-open-source",level:3},{value:"Enterprise SaaS",id:"enterprise-saas",level:3},{value:"Dutch Government",id:"dutch-government",level:3},{value:"2. Feature Matrix",id:"2-feature-matrix",level:2},{value:"Core Secret Management",id:"core-secret-management",level:3},{value:"Encryption & Key Management",id:"encryption--key-management",level:3},{value:"Key Generator",id:"key-generator",level:3},{value:"User Sharing",id:"user-sharing",level:3},{value:"Link Sharing",id:"link-sharing",level:3},{value:"Secret Requests",id:"secret-requests",level:3},{value:"Application Management",id:"application-management",level:3},{value:"Dashboard & Reporting",id:"dashboard--reporting",level:3},{value:"Admin Settings",id:"admin-settings",level:3},{value:"User Settings (NcAppSettingsDialog)",id:"user-settings-ncappsettingsdialog",level:3},{value:"Notifications (OCP\\Notification\\IManager)",id:"notifications-ocpnotificationimanager",level:3},{value:"Security & Compliance",id:"security--compliance",level:3},{value:"Integration",id:"integration",level:3},{value:"3. Settings & Notifications (Derived from Features)",id:"3-settings--notifications-derived-from-features",level:2},{value:"3.1 Admin Settings (IAppConfig)",id:"31-admin-settings-iappconfig",level:3},{value:"3.2 User Settings (OCP\\IConfig, NcAppSettingsDialog)",id:"32-user-settings-ocpiconfig-ncappsettingsdialog",level:3},{value:"3.3 Notifications (OCP\\Notification\\IManager)",id:"33-notifications-ocpnotificationimanager",level:3},{value:"4. Gap Analysis",id:"4-gap-analysis",level:2},{value:"What Competitors Do Well",id:"what-competitors-do-well",level:3},{value:"What They Lack",id:"what-they-lack",level:3},{value:"Nextcloud-Native Advantages",id:"nextcloud-native-advantages",level:3},{value:"5. Strategic Positioning",id:"5-strategic-positioning",level:2},{value:"Positioning Statement",id:"positioning-statement",level:3},{value:"Differentiation Strategy",id:"differentiation-strategy",level:3},{value:"Risks",id:"risks",level:3},{value:"6. Recommended Feature Set Summary",id:"6-recommended-feature-set-summary",level:2},{value:"MVP (45 features)",id:"mvp-45-features",level:3},{value:"V1 (30 additional features)",id:"v1-30-additional-features",level:3},{value:"Enterprise (15 additional features)",id:"enterprise-15-additional-features",level:3}];function o(e){const r={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(r.header,{children:(0,t.jsx)(r.h1,{id:"doriath--feature-analysis--product-strategy",children:"Doriath \u2014 Feature Analysis & Product Strategy"})}),"\n",(0,t.jsx)(r.h2,{id:"executive-summary",children:"Executive Summary"}),"\n",(0,t.jsxs)(r.p,{children:["There is ",(0,t.jsx)(r.strong,{children:"no production-ready Nextcloud-native encrypted vault with application secret management"}),'. The existing "Passwords" app provides basic password management but lacks enterprise-grade encryption (no PKI, no private CA, no application secrets). The broader market splits into consumer password managers (Bitwarden, 1Password) and infrastructure secret engines (HashiCorp Vault, AWS Secrets Manager) \u2014 no tool bridges both worlds on a self-hosted collaboration platform.']}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.strong,{children:"Key insight:"})," Nextcloud is already the collaboration hub \u2014 users, groups, files, notifications, and search are already there. A Nextcloud-native vault orchestrates these capabilities for secret management: share secrets with Nextcloud users/groups, notify via the bell icon, search from the unified search bar, and manage application credentials alongside your team workspace."]}),"\n",(0,t.jsx)(r.h2,{id:"1-competitive-landscape",children:"1. Competitive Landscape"}),"\n",(0,t.jsx)(r.h3,{id:"nextcloud-app-store",children:"Nextcloud App Store"}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Name"}),(0,t.jsx)(r.th,{children:"Status"}),(0,t.jsx)(r.th,{children:"Downloads"}),(0,t.jsx)(r.th,{children:"Last Updated"}),(0,t.jsx)(r.th,{children:"Key Features"}),(0,t.jsx)(r.th,{children:"Gaps"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsxs)(r.td,{children:[(0,t.jsx)(r.strong,{children:"Passwords"})," (Marius David Wieschollek)"]}),(0,t.jsx)(r.td,{children:"Active, mature"}),(0,t.jsx)(r.td,{children:"500K+"}),(0,t.jsx)(r.td,{children:"2024"}),(0,t.jsx)(r.td,{children:"Password CRUD, folder organization, tags, password generator, sharing (user/link), browser extensions, API, client-side encryption options"}),(0,t.jsx)(r.td,{children:"No private CA, no application secrets, no CSR-based onboarding, no write-without-read, no enterprise key management"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsxs)(r.td,{children:[(0,t.jsx)(r.strong,{children:"Secrets"})," (various)"]}),(0,t.jsx)(r.td,{children:"Early/experimental"}),(0,t.jsx)(r.td,{children:"Low"}),(0,t.jsx)(r.td,{children:"\u2014"}),(0,t.jsx)(r.td,{children:"Basic encrypted notes"}),(0,t.jsx)(r.td,{children:"Not a vault; minimal functionality"})]})]})]}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.strong,{children:"Finding:"}),' The "Passwords" app is the main Nextcloud competitor. It is mature and widely adopted but architecturally simpler \u2014 it uses server-side encryption (SSE) or client-side encryption (CSE) without PKI infrastructure. It cannot manage application secrets, has no write-without-read capability, and lacks a Certificate Authority for enterprise key management.']}),"\n",(0,t.jsx)(r.h3,{id:"self-hosted-open-source",children:"Self-Hosted Open Source"}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Name"}),(0,t.jsx)(r.th,{children:"GitHub Stars"}),(0,t.jsx)(r.th,{children:"Positioning"}),(0,t.jsx)(r.th,{children:"Key Features"}),(0,t.jsx)(r.th,{children:"Weaknesses"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsxs)(r.td,{children:[(0,t.jsx)(r.strong,{children:"Bitwarden"})," (bitwarden/server)"]}),(0,t.jsx)(r.td,{children:"16K+"}),(0,t.jsx)(r.td,{children:"Full-featured password manager"}),(0,t.jsx)(r.td,{children:"Web vault, browser extensions, mobile apps, CLI, org vaults, SSO, emergency access, FIDO2, password health reports, Send (ephemeral sharing)"}),(0,t.jsx)(r.td,{children:"Heavy (.NET stack), requires multiple containers, no Nextcloud integration"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Vaultwarden"})}),(0,t.jsx)(r.td,{children:"42K+"}),(0,t.jsx)(r.td,{children:"Lightweight Bitwarden-compatible server (Rust)"}),(0,t.jsx)(r.td,{children:"Same client ecosystem as Bitwarden, single binary, low resource usage, org vaults, Send"}),(0,t.jsx)(r.td,{children:"No native Nextcloud integration, no application secret management, no private CA"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Passbolt"})}),(0,t.jsx)(r.td,{children:"4K+"}),(0,t.jsx)(r.td,{children:"Team password manager (PHP/CakePHP)"}),(0,t.jsx)(r.td,{children:"End-to-end GPG encryption, team sharing, RBAC, LDAP/AD, audit logs, folders, tags, mobile apps, API"}),(0,t.jsx)(r.td,{children:"GPG-based (not PKI/CA), no application secrets, no write-without-read, complex setup"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"KeePass / KeePassXC"})}),(0,t.jsx)(r.td,{children:"\u2014 / 19K+"}),(0,t.jsx)(r.td,{children:"Offline password database"}),(0,t.jsx)(r.td,{children:"KDBX format, strong encryption (AES-256/ChaCha20), browser integration, TOTP, auto-type, plugins"}),(0,t.jsx)(r.td,{children:"Offline-only, no server, no sharing, no team features, no API"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Psono"})}),(0,t.jsx)(r.td,{children:"1.5K+"}),(0,t.jsx)(r.td,{children:"Enterprise team password manager"}),(0,t.jsx)(r.td,{children:"E2E encryption (Curve25519 + Salsa20), team sharing, LDAP, file encryption, API keys, emergency codes"}),(0,t.jsx)(r.td,{children:"Python/Django stack, smaller community, no Nextcloud integration"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Teampass"})}),(0,t.jsx)(r.td,{children:"1.6K+"}),(0,t.jsx)(r.td,{children:"Collaborative password manager (PHP)"}),(0,t.jsx)(r.td,{children:"Team folders, roles, export, API, LDAP, 2FA"}),(0,t.jsx)(r.td,{children:"Dated UI, PHP but not Nextcloud-integrated, simpler encryption model"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Padloc"})}),(0,t.jsx)(r.td,{children:"2.5K+"}),(0,t.jsx)(r.td,{children:"Modern cross-platform password manager"}),(0,t.jsx)(r.td,{children:"Clean UI, E2E encryption (SRP + AES), vaults, sharing, org management"}),(0,t.jsx)(r.td,{children:"TypeScript/Electron, smaller ecosystem, no application secrets"})]})]})]}),"\n",(0,t.jsx)(r.h3,{id:"enterprise-saas",children:"Enterprise SaaS"}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Name"}),(0,t.jsx)(r.th,{children:"Price/user/mo"}),(0,t.jsx)(r.th,{children:"Target Audience"}),(0,t.jsx)(r.th,{children:"Key Features"}),(0,t.jsx)(r.th,{children:"Why Not"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"1Password"})}),(0,t.jsx)(r.td,{children:"$8\u201320"}),(0,t.jsx)(r.td,{children:"Teams, enterprises"}),(0,t.jsx)(r.td,{children:"Vaults, sharing, watchtower (breach detection), SSO, SCIM, CLI, secrets automation, service accounts"}),(0,t.jsx)(r.td,{children:"SaaS-only, US jurisdiction, expensive at scale, data sovereignty"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"LastPass"})}),(0,t.jsx)(r.td,{children:"$4\u20137"}),(0,t.jsx)(r.td,{children:"Consumer, small teams"}),(0,t.jsx)(r.td,{children:"Password vault, sharing, dark web monitoring, SSO, admin console"}),(0,t.jsx)(r.td,{children:"Repeated security breaches, SaaS-only, trust issues"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"HashiCorp Vault"})}),(0,t.jsx)(r.td,{children:"Free OSS / $1.58/hr (HCP)"}),(0,t.jsx)(r.td,{children:"DevOps, platform teams"}),(0,t.jsx)(r.td,{children:"Dynamic secrets, secret engines, PKI engine, transit encryption, audit logging, policies, namespaces"}),(0,t.jsx)(r.td,{children:"Infrastructure tool (not a password manager), complex, no end-user UI"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"AWS Secrets Manager"})}),(0,t.jsx)(r.td,{children:"$0.40/secret/mo"}),(0,t.jsx)(r.td,{children:"AWS-native workloads"}),(0,t.jsx)(r.td,{children:"Secret rotation, RDS integration, cross-account sharing, CloudFormation"}),(0,t.jsx)(r.td,{children:"Cloud-locked, no user-facing UI, no sharing, not self-hosted"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Proton Pass"})}),(0,t.jsx)(r.td,{children:"Free\u2013$4"}),(0,t.jsx)(r.td,{children:"Privacy-focused consumers"}),(0,t.jsx)(r.td,{children:"E2E encrypted, zero-knowledge, aliasing, Proton ecosystem integration"}),(0,t.jsx)(r.td,{children:"Consumer-focused, no team features, no application secrets, SaaS-only"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Keeper"})}),(0,t.jsx)(r.td,{children:"$5\u20138"}),(0,t.jsx)(r.td,{children:"Enterprises"}),(0,t.jsx)(r.td,{children:"Zero-knowledge, secrets manager, connection manager, PAM, compliance reports"}),(0,t.jsx)(r.td,{children:"SaaS-only, expensive, complex licensing"})]})]})]}),"\n",(0,t.jsx)(r.h3,{id:"dutch-government",children:"Dutch Government"}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Name"}),(0,t.jsx)(r.th,{children:"Type"}),(0,t.jsx)(r.th,{children:"Status"}),(0,t.jsx)(r.th,{children:"Key Features"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Haven (NLnet Labs)"})}),(0,t.jsx)(r.td,{children:"Research / PKI toolkit"}),(0,t.jsx)(r.td,{children:"Active development"}),(0,t.jsx)(r.td,{children:"RPKI tooling, not a secrets manager"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"No direct equivalent"})}),(0,t.jsx)(r.td,{children:"\u2014"}),(0,t.jsx)(r.td,{children:"\u2014"}),(0,t.jsx)(r.td,{children:"Dutch government has no mandated secrets management standard. Municipalities typically use commercial tools (1Password, Azure Key Vault) or rely on OS-level key management"})]})]})]}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.strong,{children:"Finding:"})," There is no Dutch government standard or Common Ground component for secrets management. This is an opportunity \u2014 Doriath could become the reference implementation for sovereign secrets management in the Dutch public sector."]}),"\n",(0,t.jsx)(r.h2,{id:"2-feature-matrix",children:"2. Feature Matrix"}),"\n",(0,t.jsx)(r.h3,{id:"core-secret-management",children:"Core Secret Management"}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Feature"}),(0,t.jsx)(r.th,{children:"Tier"}),(0,t.jsx)(r.th,{children:"Justification"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Secret CRUD (name, key, login, url, additional fields)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsxs)(r.td,{children:["Core entity \u2014 see ",(0,t.jsx)(r.a,{href:"../openspec/specs/secrets/spec.md",children:"secrets spec"})]})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Secret types (login, api_key, ssh_key, certificate, note, database)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"UI hint system with 6 system types"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Custom secret types (user-scoped and admin global)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Extensibility for org-specific secret categories"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Folder organization (tree hierarchy per user)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Essential organizational pattern"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Folder CRUD (create, rename, move, delete with cascade options)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Full folder management"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Secret list with search, sort, pagination"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Core navigation"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Copy-to-clipboard on secret list items"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Most-used action \u2014 copy password without opening detail (Bitwarden, 1Password pattern)"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Show/hide toggle on password fields"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Standard pattern \u2014 passwords hidden by default with eye icon"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Favicon/icon next to secrets by URL"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Visual identification of which service a secret belongs to (1Password, Bitwarden)"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Secret detail view with type-specific field presentation"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Critical UX pattern"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Fuzzy search by name and URL (Levenshtein tolerance)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Typo-tolerant search"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Nextcloud unified search integration (IProvider)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Find secrets from Ctrl+F without opening Doriath"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Deep-link from search results via lock screen"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Seamless search \u2192 vault flow"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Bulk secret operations (delete, move folder)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Efficiency for large vaults"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Secret import (CSV, Bitwarden JSON, KeePass XML)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Migration from other tools"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Secret export (encrypted backup, CSV)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Data portability"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Favorite/pinned secrets"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Quick access to frequently used secrets"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Recently accessed secrets"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Convenience pattern from all major vaults"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Password health scoring per secret"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Flag weak, reused, or old passwords (Bitwarden Reports, 1Password Watchtower)"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Secret strength indicator in list view"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Color-coded strength badge next to each secret (Passbolt, Bitwarden)"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Vault search with keyboard shortcut (Ctrl+K)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Power-user quick access (1Password pattern)"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Dark mode support"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"User preference; Nextcloud supports dark mode natively"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Secret tags (in addition to folders)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Enterprise"})}),(0,t.jsx)(r.td,{children:"Cross-cutting categorization"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Custom fields per secret type (admin-defined)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Enterprise"})}),(0,t.jsx)(r.td,{children:"Organization-specific field requirements"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Breach detection (HaveIBeenPwned) for secret URLs"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Enterprise"})}),(0,t.jsx)(r.td,{children:"Proactive security alerts for compromised URLs (1Password Watchtower)"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Password age indicator"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Enterprise"})}),(0,t.jsx)(r.td,{children:"Show how old each secret is; flag stale credentials"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Export to PDF (single secret)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Enterprise"})}),(0,t.jsx)(r.td,{children:"Print-friendly credential sheet for offline backup (KeePassXC)"})]})]})]}),"\n",(0,t.jsx)(r.h3,{id:"encryption--key-management",children:"Encryption & Key Management"}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Feature"}),(0,t.jsx)(r.th,{children:"Tier"}),(0,t.jsx)(r.th,{children:"Justification"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"RSA-4096 encryption of secrets via EncryptionSuite"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsxs)(r.td,{children:["Core security \u2014 see ",(0,t.jsx)(r.a,{href:"../openspec/specs/encryption-suites/spec.md",children:"encryption-suites spec"})]})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"AES-256 encryption of private keys with master password"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Private key protection"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Private CA bootstrap (root + intermediate) on first setup"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Certificate infrastructure"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Automatic EncryptionSuite creation on first login"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Zero-friction onboarding"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Master password session with configurable timeout"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Balance security and convenience"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Lock screen (full page, not overlay)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Session expiry handling"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Tab-close session clearing"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Prevent stale sessions"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Master password strength enforcement (zxcvbn \u2265 3)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"NIST-aligned password policy"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Live password strength feedback"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"User guidance during setup"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Routine master password change (re-wrap private key)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Password hygiene"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Compromise recovery (full key rotation + migration)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Security incident response"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Suite migration with per-secret error tracking"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Reliable recovery"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Suite revocation and reinstatement"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Admin control"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"CA certificate auto-renewal (intermediate)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Operational continuity"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"CA health check in admin panel"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Admin visibility"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Admin-configurable minimum password length and score"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Policy enforcement"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Root certificate manual renewal with admin notifications"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Planned lifecycle management"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Forced intermediate renewal (leaked key scenario)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Emergency response"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Password expiry reminders for secrets"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Enterprise"})}),(0,t.jsx)(r.td,{children:"Credential rotation prompts"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Multiple encryption suites per user (key rotation)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Enterprise"})}),(0,t.jsx)(r.td,{children:"Advanced key management"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Custom CA chain upload"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Enterprise"})}),(0,t.jsx)(r.td,{children:"Integrate with existing PKI"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Post-quantum cryptography (when PHP supports it)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Enterprise"})}),(0,t.jsx)(r.td,{children:"Future-proofing"})]})]})]}),"\n",(0,t.jsx)(r.h3,{id:"key-generator",children:"Key Generator"}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Feature"}),(0,t.jsx)(r.th,{children:"Tier"}),(0,t.jsx)(r.th,{children:"Justification"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Random key generation with configurable length"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsxs)(r.td,{children:["See ",(0,t.jsx)(r.a,{href:"../openspec/specs/key-generator/spec.md",children:"key-generator spec"})]})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Special character toggle (OWASP set)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Accommodate target system requirements"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Character exclusion"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Avoid ambiguous characters"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Regex override for advanced patterns"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Developer-friendly power feature"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Integration with secret creation UI"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Seamless workflow"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Key generation API endpoint"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Programmatic access"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Password strength indicator on generated keys"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Visual feedback"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Pronounceable password option"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Human-friendly passwords"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Passphrase generation (word-based)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Diceware-style passphrases"})]})]})]}),"\n",(0,t.jsx)(r.h3,{id:"user-sharing",children:"User Sharing"}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Feature"}),(0,t.jsx)(r.th,{children:"Tier"}),(0,t.jsx)(r.th,{children:"Justification"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Share secret with Nextcloud user (encrypted copy)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsxs)(r.td,{children:["See ",(0,t.jsx)(r.a,{href:"../openspec/specs/user-sharing/spec.md",children:"user-sharing spec"})]})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Sync-on-update (changes propagate to all copies)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Shared secrets stay current"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Share with Nextcloud group (static expansion)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Team sharing"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Notification on share received"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"User awareness"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Revoke share (delete recipient's copy)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Access control"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Share visibility (owner sees recipients; recipients don't)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Privacy by design"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Share request (recipient asks owner to share with third party)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Controlled re-sharing"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"New group member notification + approval"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Owner control over group expansion"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Auto-revoke on group member leave"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Automatic access cleanup"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Ownership delegation (admin power grab, user self-delegation)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Continuity when owner is unavailable"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Delegation reclaim"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Owner regains control"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Permanent delegation on suite revocation"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Graceful ownership transfer"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Compromised suite \u2192 owner notification for shared secrets"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Security incident awareness"})]})]})]}),"\n",(0,t.jsx)(r.h3,{id:"link-sharing",children:"Link Sharing"}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Feature"}),(0,t.jsx)(r.th,{children:"Tier"}),(0,t.jsx)(r.th,{children:"Justification"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Password-protected share link with usage limit"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsxs)(r.td,{children:["See ",(0,t.jsx)(r.a,{href:"../openspec/specs/link-sharing/spec.md",children:"link-sharing spec"})]})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Argon2id KDF for snapshot encryption"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Memory-hard protection"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Brute-force protection (5 attempts \u2192 auto-delete)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Hostile access defense"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Point-in-time snapshot (intentional staleness)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Predictable behavior"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Multiple concurrent link shares per secret"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Flexibility"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Manual link revocation"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Owner control"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Link share expiry (optional)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Time-limited access"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Link share access audit log"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Enterprise"})}),(0,t.jsx)(r.td,{children:"Compliance tracking"})]})]})]}),"\n",(0,t.jsx)(r.h3,{id:"secret-requests",children:"Secret Requests"}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Feature"}),(0,t.jsx)(r.th,{children:"Tier"}),(0,t.jsx)(r.th,{children:"Justification"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Fill-in link for write-without-read submission"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsxs)(r.td,{children:["See ",(0,t.jsx)(r.a,{href:"../openspec/specs/secret-requests/spec.md",children:"secret-requests spec"})]})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Request for own secrets and application secrets"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Dual use case"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Notification on fulfillment"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Requester awareness"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Field validation (all requested fields non-empty)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Data completeness"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Write-once semantics"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Security guarantee"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Re-request (credential rotation via new fill-in link)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Operational workflow"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Optional request expiry"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Time-limited requests"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Request audit trail"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Enterprise"})}),(0,t.jsx)(r.td,{children:"Compliance tracking"})]})]})]}),"\n",(0,t.jsx)(r.h3,{id:"application-management",children:"Application Management"}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Feature"}),(0,t.jsx)(r.th,{children:"Tier"}),(0,t.jsx)(r.th,{children:"Justification"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Application registration (any user, incl. anonymous)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsxs)(r.td,{children:["See ",(0,t.jsx)(r.a,{href:"../openspec/specs/application-mgmt/spec.md",children:"application-mgmt spec"})]})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Approval queue for non-admin registrations"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Admin control"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"EncryptionSuite via CSR (app manages own private key)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Standard PKI pattern"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"EncryptionSuite via generated key pair (private key returned once)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Convenience option"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Admin notification on pending registration"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Timely approval"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Pending applications counter on dashboard"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Admin visibility"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Application deletion (hard delete with cascade)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Lifecycle management"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Write secret for application (write-without-read)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Core security pattern"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Application API authentication (RFC 7523 JWT Bearer)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Standardized API access"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Application secret retrieval via REST API"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Programmatic consumption"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"OpenConnector integration (secret store for connectors)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Sister app integration"})]})]})]}),"\n",(0,t.jsx)(r.h3,{id:"dashboard--reporting",children:"Dashboard & Reporting"}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Feature"}),(0,t.jsx)(r.th,{children:"Tier"}),(0,t.jsx)(r.th,{children:"Justification"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Dashboard with vault summary (total secrets, shared, folders)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"At-a-glance overview"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Vault health indicator (compromised secrets, migration status)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Security awareness"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Pending applications counter (admin only)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Admin actionability"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"CA health status card (admin only)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Certificate lifecycle visibility"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Recently accessed secrets widget"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Quick access"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Sharing activity summary"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Collaboration overview"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Password health report (weak, reused, old passwords)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Enterprise"})}),(0,t.jsx)(r.td,{children:"Security audit"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Breach detection (HaveIBeenPwned integration)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Enterprise"})}),(0,t.jsx)(r.td,{children:"Proactive security"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Vault usage analytics (admin)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Enterprise"})}),(0,t.jsx)(r.td,{children:"Adoption tracking"})]})]})]}),"\n",(0,t.jsx)(r.h3,{id:"admin-settings",children:"Admin Settings"}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Feature"}),(0,t.jsx)(r.th,{children:"Tier"}),(0,t.jsx)(r.th,{children:"Justification"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Nextcloud admin settings page"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"App configuration"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"CA health status display"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Certificate monitoring"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Master password minimum length configuration (12\u201320)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Policy enforcement"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Master password minimum score configuration (3\u20134)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Strength floor"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Application approval queue"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Registration management"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Session timeout global default"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Org-wide policy"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"CA certificate details and expiry dates"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Certificate inspection"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Forced intermediate renewal button"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Emergency action"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"CA bootstrap retry button"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Recovery from failed setup"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Global secret type management"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Organization-wide types"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Secret type CRUD for admin-created global types"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Customization"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Vault statistics (total users, secrets, shares)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Enterprise"})}),(0,t.jsx)(r.td,{children:"Usage overview"})]})]})]}),"\n",(0,t.jsx)(r.h3,{id:"user-settings-ncappsettingsdialog",children:"User Settings (NcAppSettingsDialog)"}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Feature"}),(0,t.jsx)(r.th,{children:"Tier"}),(0,t.jsx)(r.th,{children:"Justification"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Session timeout preference (Nextcloud session / 10 min / 30 min)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Per-user security/convenience balance"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Notification toggle: secret shared with me"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Notification control"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Notification toggle: secret request fulfilled"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Notification control"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Notification toggle: group share additions"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Fine-grained control"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Notification toggle: compromise alerts"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Security notifications"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Default secret type preference"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Workflow customization"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Default view preference (list / folder tree)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Display personalization"})]})]})]}),"\n",(0,t.jsx)(r.h3,{id:"notifications-ocpnotificationimanager",children:"Notifications (OCP\\Notification\\IManager)"}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Event"}),(0,t.jsx)(r.th,{children:"Subject Key"}),(0,t.jsx)(r.th,{children:"Setting Category"}),(0,t.jsx)(r.th,{children:"Recipient Logic"}),(0,t.jsx)(r.th,{children:"Tier"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Secret shared with user"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"secret_shared"})}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"notify_shares"})}),(0,t.jsx)(r.td,{children:"Notify recipient"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Secret request fulfilled"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"request_fulfilled"})}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"notify_requests"})}),(0,t.jsx)(r.td,{children:"Notify requester"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Application pending approval"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"app_pending"})}),(0,t.jsx)(r.td,{children:"\u2014 (always notify admins)"}),(0,t.jsx)(r.td,{children:"All vault_admins"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Group share: new member needs approval"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"group_member_added"})}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"notify_group_shares"})}),(0,t.jsx)(r.td,{children:"Notify secret owner"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Share request from recipient"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"share_request"})}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"notify_shares"})}),(0,t.jsx)(r.td,{children:"Notify secret owner"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Share request approved/denied"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"share_request_result"})}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"notify_shares"})}),(0,t.jsx)(r.td,{children:"Notify requester"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"CA certificate expiring (90/30/7 days)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"ca_expiring"})}),(0,t.jsx)(r.td,{children:"\u2014 (always notify admins)"}),(0,t.jsx)(r.td,{children:"All admins"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Intermediate auto-renewed"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"ca_renewed"})}),(0,t.jsx)(r.td,{children:"\u2014 (always notify admins)"}),(0,t.jsx)(r.td,{children:"All admins"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Shared secret possibly compromised"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"secret_compromised"})}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"notify_security"})}),(0,t.jsx)(r.td,{children:"Notify original owner"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Suite revoked by admin"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"suite_revoked"})}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"notify_security"})}),(0,t.jsx)(r.td,{children:"Notify suite owner"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})})]})]})]}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.strong,{children:"Backend pattern:"})," ",(0,t.jsx)(r.code,{children:"NotificationService"})," with ",(0,t.jsx)(r.code,{children:"SUBJECT_SETTING_MAP"})," constant mapping subjects to user setting keys."]}),"\n",(0,t.jsx)(r.h3,{id:"security--compliance",children:"Security & Compliance"}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Feature"}),(0,t.jsx)(r.th,{children:"Tier"}),(0,t.jsx)(r.th,{children:"Justification"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"End-to-end RSA encryption at rest"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Core security model"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Master password never stored (session-only AES key)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Zero-knowledge principle"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Write-without-read for application secrets and requests"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Prevent credential leakage"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"WCAG AA compliance"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Accessibility requirement"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"English + Dutch localization"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Primary markets"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"NL Design System theming support"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Government visual compliance"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"GDPR data export (all user secrets + metadata)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Right of access"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"GDPR data deletion (user + all shares)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Right to erasure"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Audit trail on all secret operations"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Accountability"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Field-level encryption audit (verify encrypted fields)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Enterprise"})}),(0,t.jsx)(r.td,{children:"Compliance verification"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Data retention policies"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Enterprise"})}),(0,t.jsx)(r.td,{children:"Automated cleanup"})]})]})]}),"\n",(0,t.jsx)(r.h3,{id:"integration",children:"Integration"}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Feature"}),(0,t.jsx)(r.th,{children:"Tier"}),(0,t.jsx)(r.th,{children:"Justification"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Nextcloud unified search (name + URL)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Platform integration"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Nextcloud notifications (shares, requests, CA)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})}),(0,t.jsx)(r.td,{children:"Platform integration"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"REST API for all operations"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Programmatic access"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"OpenConnector secret store integration"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})}),(0,t.jsx)(r.td,{children:"Sister app integration"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Browser extension (Bitwarden-compatible API subset)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Enterprise"})}),(0,t.jsx)(r.td,{children:"Auto-fill in browser"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"CLI tool for secret management"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Enterprise"})}),(0,t.jsx)(r.td,{children:"DevOps workflow"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Nextcloud Flows automation triggers"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"Enterprise"})}),(0,t.jsx)(r.td,{children:"Low-code integration"})]})]})]}),"\n",(0,t.jsx)(r.h2,{id:"3-settings--notifications-derived-from-features",children:"3. Settings & Notifications (Derived from Features)"}),"\n",(0,t.jsx)(r.h3,{id:"31-admin-settings-iappconfig",children:"3.1 Admin Settings (IAppConfig)"}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Setting"}),(0,t.jsx)(r.th,{children:"Feature Source"}),(0,t.jsx)(r.th,{children:"Type"}),(0,t.jsx)(r.th,{children:"Default"}),(0,t.jsx)(r.th,{children:"Tier"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"min_password_length"})}),(0,t.jsx)(r.td,{children:"Master password strength"}),(0,t.jsx)(r.td,{children:"int"}),(0,t.jsx)(r.td,{children:"12"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"min_password_score"})}),(0,t.jsx)(r.td,{children:"Master password strength"}),(0,t.jsx)(r.td,{children:"int (3\u20134)"}),(0,t.jsx)(r.td,{children:"3"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"default_session_timeout"})}),(0,t.jsx)(r.td,{children:"Session mechanism"}),(0,t.jsx)(r.td,{children:"enum (session/10min/30min)"}),(0,t.jsx)(r.td,{children:"session"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"ca_auto_renew_enabled"})}),(0,t.jsx)(r.td,{children:"CA renewal"}),(0,t.jsx)(r.td,{children:"bool"}),(0,t.jsx)(r.td,{children:"true"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"ca_expiry_notification_days"})}),(0,t.jsx)(r.td,{children:"CA health"}),(0,t.jsx)(r.td,{children:"JSON array"}),(0,t.jsx)(r.td,{children:"[90, 30, 7]"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})})]})]})]}),"\n",(0,t.jsx)(r.h3,{id:"32-user-settings-ocpiconfig-ncappsettingsdialog",children:"3.2 User Settings (OCP\\IConfig, NcAppSettingsDialog)"}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Setting"}),(0,t.jsx)(r.th,{children:"Feature Source"}),(0,t.jsx)(r.th,{children:"Type"}),(0,t.jsx)(r.th,{children:"Default"}),(0,t.jsx)(r.th,{children:"Tier"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"session_timeout"})}),(0,t.jsx)(r.td,{children:"Session mechanism"}),(0,t.jsx)(r.td,{children:"enum (session/10min/30min)"}),(0,t.jsx)(r.td,{children:"(admin default)"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"notify_shares"})}),(0,t.jsx)(r.td,{children:"User sharing"}),(0,t.jsx)(r.td,{children:"bool"}),(0,t.jsx)(r.td,{children:"true"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"notify_requests"})}),(0,t.jsx)(r.td,{children:"Secret requests"}),(0,t.jsx)(r.td,{children:"bool"}),(0,t.jsx)(r.td,{children:"true"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"MVP"})})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"notify_group_shares"})}),(0,t.jsx)(r.td,{children:"Group sharing"}),(0,t.jsx)(r.td,{children:"bool"}),(0,t.jsx)(r.td,{children:"true"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"notify_security"})}),(0,t.jsx)(r.td,{children:"Compromise alerts"}),(0,t.jsx)(r.td,{children:"bool"}),(0,t.jsx)(r.td,{children:"true"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"default_secret_type"})}),(0,t.jsx)(r.td,{children:"Secret creation"}),(0,t.jsx)(r.td,{children:"string"}),(0,t.jsx)(r.td,{children:"login"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:(0,t.jsx)(r.code,{children:"default_view"})}),(0,t.jsx)(r.td,{children:"Vault navigation"}),(0,t.jsx)(r.td,{children:"enum (list/folders)"}),(0,t.jsx)(r.td,{children:"list"}),(0,t.jsx)(r.td,{children:(0,t.jsx)(r.strong,{children:"V1"})})]})]})]}),"\n",(0,t.jsx)(r.h3,{id:"33-notifications-ocpnotificationimanager",children:"3.3 Notifications (OCP\\Notification\\IManager)"}),"\n",(0,t.jsx)(r.p,{children:"See the Notifications table in Section 2. Each notification event maps to a user setting toggle category. Admin notifications (CA expiry, pending applications) are always delivered and cannot be disabled."}),"\n",(0,t.jsx)(r.h2,{id:"4-gap-analysis",children:"4. Gap Analysis"}),"\n",(0,t.jsx)(r.h3,{id:"what-competitors-do-well",children:"What Competitors Do Well"}),"\n",(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.strong,{children:"Bitwarden/Vaultwarden"}),": Massive ecosystem (browser extensions, mobile apps, CLI), FIDO2/WebAuthn, organization vaults with collections, Send for ephemeral sharing, password health reports, breach detection"]}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.strong,{children:"1Password"}),": Best-in-class UX, Watchtower (security audit), service accounts for CI/CD, SSH agent integration, developer tools"]}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.strong,{children:"HashiCorp Vault"}),": Dynamic secrets (auto-rotating), transit encryption engine, policy-as-code, namespaces for multi-tenancy, comprehensive audit logging"]}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.strong,{children:"Passbolt"}),": True E2E encryption with GPG, team-first design, RBAC with fine-grained permissions, LDAP/AD integration"]}),"\n"]}),"\n",(0,t.jsx)(r.h3,{id:"what-they-lack",children:"What They Lack"}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Gap"}),(0,t.jsx)(r.th,{children:"Opportunity for Doriath"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"No Nextcloud integration"}),(0,t.jsx)(r.td,{children:"Doriath lives in the collaboration platform \u2014 users, groups, search, notifications are native"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"No write-without-read"}),(0,t.jsx)(r.td,{children:"Only Doriath (via asymmetric encryption) lets admins request secrets they can never read"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"No private CA with user certificates"}),(0,t.jsx)(r.td,{children:"Doriath's PKI infrastructure enables certificate-based identity, not just password storage"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"No application secret management via CSR"}),(0,t.jsx)(r.td,{children:"Standard PKI pattern for onboarding applications \u2014 competitors use API tokens or service accounts"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"No request-based credential provisioning"}),(0,t.jsx)(r.td,{children:"Secret requests (fill-in links) are unique to Doriath"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"SaaS data sovereignty concerns"}),(0,t.jsx)(r.td,{children:"Bitwarden/1Password/LastPass store encrypted data on third-party infrastructure"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"No government-first design"}),(0,t.jsx)(r.td,{children:"No competitor targets Dutch public sector or supports NL Design System"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Infrastructure vs. user tool split"}),(0,t.jsx)(r.td,{children:"HashiCorp Vault is too complex for end users; Bitwarden has no infrastructure features"})]})]})]}),"\n",(0,t.jsx)(r.h3,{id:"nextcloud-native-advantages",children:"Nextcloud-Native Advantages"}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Capability"}),(0,t.jsx)(r.th,{children:"Why Competitors Cannot Match It"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Zero-cost identity layer"}),(0,t.jsx)(r.td,{children:"Nextcloud users and groups are the sharing model \u2014 no separate user directory"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Unified search integration"}),(0,t.jsx)(r.td,{children:"Secrets discoverable from Nextcloud's Ctrl+F \u2014 no competitor can inject into another platform's search"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Native notifications"}),(0,t.jsx)(r.td,{children:"Share alerts, request fulfillment, CA warnings via the bell icon \u2014 no separate notification system"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Group-based sharing"}),(0,t.jsx)(r.td,{children:"Leverage Nextcloud group membership for team secret access \u2014 automatic, no manual sync"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"User lifecycle integration"}),(0,t.jsx)(r.td,{children:"IUserDeletedEvent cleans up vaults automatically \u2014 no orphaned data"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Sovereign deployment"}),(0,t.jsx)(r.td,{children:"Same Nextcloud instance, same server, same backup \u2014 no external SaaS dependency"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"OpenConnector secret store"}),(0,t.jsx)(r.td,{children:"Direct integration with Conduction's connector framework \u2014 no competitor can offer this"})]})]})]}),"\n",(0,t.jsx)(r.h2,{id:"5-strategic-positioning",children:"5. Strategic Positioning"}),"\n",(0,t.jsx)(r.h3,{id:"positioning-statement",children:"Positioning Statement"}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.strong,{children:"Doriath is the vault that lives where your team already works."})," Built natively into Nextcloud, it provides enterprise-grade encrypted secret management \u2014 for humans and applications \u2014 without leaving your collaboration platform."]}),"\n",(0,t.jsx)(r.h3,{id:"differentiation-strategy",children:"Differentiation Strategy"}),"\n",(0,t.jsx)(r.p,{children:"Three pillars:"}),"\n",(0,t.jsxs)(r.ol,{children:["\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.strong,{children:"Platform leverage"})," \u2014 Nextcloud provides identity, groups, search, notifications, and files. Doriath orchestrates them for secret management instead of rebuilding them."]}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.strong,{children:"PKI-native architecture"})," \u2014 Unlike password managers that bolt on encryption, Doriath is built on a private Certificate Authority with X.509 certificates. This enables write-without-read, application CSR onboarding, and a foundation for future Certificate Authority functionality."]}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.strong,{children:"Government-first, enterprise-ready"})," \u2014 NL Design System theming, sovereign self-hosted deployment, WCAG AA compliance, and a path to becoming the reference secrets manager for Dutch public sector organizations."]}),"\n"]}),"\n",(0,t.jsx)(r.h3,{id:"risks",children:"Risks"}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Risk"}),(0,t.jsx)(r.th,{children:"Severity"}),(0,t.jsx)(r.th,{children:"Mitigation"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Feature gap vs. Bitwarden (browser extension, mobile, FIDO2)"}),(0,t.jsx)(r.td,{children:"High"}),(0,t.jsx)(r.td,{children:"Focus on what Bitwarden can't do: Nextcloud integration, write-without-read, application secrets. Browser extension is Enterprise tier."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Passwords app incumbency on Nextcloud"}),(0,t.jsx)(r.td,{children:"High"}),(0,t.jsx)(r.td,{children:"Differentiate on encryption architecture (PKI vs. SSE), application secrets, and enterprise features. Consider migration tooling."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"No mobile app"}),(0,t.jsx)(r.td,{children:"Medium"}),(0,t.jsx)(r.td,{children:"Nextcloud's mobile apps provide the session; Doriath is web-first. Mobile vault is a future consideration."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Complexity of PKI for end users"}),(0,t.jsx)(r.td,{children:"Medium"}),(0,t.jsx)(r.td,{children:"Zero-friction onboarding: EncryptionSuite auto-created on first login. Users only interact with master password, never with certificates."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Master password lost = data lost"}),(0,t.jsx)(r.td,{children:"High"}),(0,t.jsx)(r.td,{children:"This is by design (zero-knowledge). Document clearly. Consider emergency access (V1) or admin recovery mechanisms (Enterprise)."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"Small team"}),(0,t.jsx)(r.td,{children:"High"}),(0,t.jsx)(r.td,{children:"Own-DB architecture means more backend code than thin-client apps. Prioritize MVP ruthlessly."})]})]})]}),"\n",(0,t.jsx)(r.h2,{id:"6-recommended-feature-set-summary",children:"6. Recommended Feature Set Summary"}),"\n",(0,t.jsx)(r.h3,{id:"mvp-45-features",children:"MVP (45 features)"}),"\n",(0,t.jsx)(r.p,{children:"A fully functional encrypted vault for Nextcloud users and applications. Replaces spreadsheets and insecure credential sharing."}),"\n",(0,t.jsx)(r.p,{children:(0,t.jsx)(r.strong,{children:"Core Secret Management"})}),"\n",(0,t.jsxs)(r.ol,{children:["\n",(0,t.jsx)(r.li,{children:"Secret CRUD (name, key, login, url, additional fields)"}),"\n",(0,t.jsx)(r.li,{children:"Secret types (6 system types + custom user/global types)"}),"\n",(0,t.jsx)(r.li,{children:"Folder organization (tree hierarchy per user)"}),"\n",(0,t.jsx)(r.li,{children:"Folder CRUD with cascade options"}),"\n",(0,t.jsx)(r.li,{children:"Secret list with search, sort, pagination"}),"\n",(0,t.jsx)(r.li,{children:"Copy-to-clipboard on secret list items"}),"\n",(0,t.jsx)(r.li,{children:"Show/hide toggle on password fields"}),"\n",(0,t.jsx)(r.li,{children:"Favicon/icon next to secrets by URL"}),"\n",(0,t.jsx)(r.li,{children:"Secret detail view with type-specific fields"}),"\n",(0,t.jsx)(r.li,{children:"Fuzzy search by name and URL"}),"\n",(0,t.jsx)(r.li,{children:"Nextcloud unified search integration"}),"\n",(0,t.jsx)(r.li,{children:"Deep-link from search via lock screen"}),"\n"]}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.strong,{children:"Encryption & Security"}),"\n13. RSA-4096 encryption via EncryptionSuite\n14. AES-256 private key protection\n15. Private CA bootstrap (root + intermediate)\n16. Auto-create EncryptionSuite on first login\n17. Master password session with configurable timeout\n18. Lock screen (full page)\n19. Tab-close session clearing\n20. Master password strength enforcement (zxcvbn)\n21. Live strength feedback\n22. Routine master password change\n23. Compromise recovery with key rotation\n24. Suite migration with error tracking\n25. Suite revocation and reinstatement"]}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.strong,{children:"Key Generator"}),"\n26. Random key generation with configurable length\n27. Special character toggle (OWASP set)\n28. Character exclusion\n29. Regex override\n30. Integration with secret creation UI\n31. Key generation API endpoint"]}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.strong,{children:"Sharing"}),"\n32. Share with Nextcloud user (encrypted copy)\n33. Sync-on-update\n34. Share with group (static expansion)\n35. Share notification\n36. Revoke share\n37. Share visibility (owner-only recipient list)\n38. Share request mechanism\n39. Group member notification + approval\n40. Auto-revoke on group leave"]}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.strong,{children:"Link Sharing & Requests"}),"\n41. Password-protected link with usage limit\n42. Fill-in link for write-without-read submission\n43. Request notification on fulfillment"]}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.strong,{children:"Application Management"}),"\n44. Application registration with approval queue\n45. EncryptionSuite via CSR or generated key pair"]}),"\n",(0,t.jsx)(r.h3,{id:"v1-30-additional-features",children:"V1 (30 additional features)"}),"\n",(0,t.jsx)(r.p,{children:"Enterprise-ready vault with full lifecycle management and API access."}),"\n",(0,t.jsxs)(r.ol,{start:"46",children:["\n",(0,t.jsx)(r.li,{children:"Ownership delegation and reclaim"}),"\n",(0,t.jsx)(r.li,{children:"Permanent delegation on suite revocation"}),"\n",(0,t.jsx)(r.li,{children:"Compromised suite owner notification"}),"\n",(0,t.jsx)(r.li,{children:"Link share expiry"}),"\n",(0,t.jsx)(r.li,{children:"Re-request for credential rotation"}),"\n",(0,t.jsx)(r.li,{children:"Application API (RFC 7523 JWT Bearer)"}),"\n",(0,t.jsx)(r.li,{children:"OpenConnector integration"}),"\n",(0,t.jsx)(r.li,{children:"CA auto-renewal and health check"}),"\n",(0,t.jsx)(r.li,{children:"Admin-configurable password policy"}),"\n",(0,t.jsx)(r.li,{children:"Root certificate renewal with notifications"}),"\n",(0,t.jsx)(r.li,{children:"Forced intermediate renewal"}),"\n",(0,t.jsx)(r.li,{children:"Secret import (CSV, Bitwarden JSON, KeePass XML)"}),"\n",(0,t.jsx)(r.li,{children:"Secret export (encrypted backup, CSV)"}),"\n",(0,t.jsx)(r.li,{children:"Favorite/pinned secrets"}),"\n",(0,t.jsx)(r.li,{children:"Recently accessed secrets"}),"\n",(0,t.jsx)(r.li,{children:"Password health scoring per secret"}),"\n",(0,t.jsx)(r.li,{children:"Secret strength indicator in list view"}),"\n",(0,t.jsx)(r.li,{children:"Vault search with keyboard shortcut (Ctrl+K)"}),"\n",(0,t.jsx)(r.li,{children:"Dark mode support"}),"\n",(0,t.jsx)(r.li,{children:"NL Design System theming"}),"\n",(0,t.jsx)(r.li,{children:"GDPR export + deletion"}),"\n",(0,t.jsx)(r.li,{children:"Audit trail on secret operations"}),"\n",(0,t.jsx)(r.li,{children:"REST API for all operations"}),"\n",(0,t.jsx)(r.li,{children:"CA certificate details in admin panel"}),"\n",(0,t.jsx)(r.li,{children:"Global secret type management"}),"\n",(0,t.jsx)(r.li,{children:"Notification toggles (group shares, security)"}),"\n",(0,t.jsx)(r.li,{children:"Default secret type and view preferences"}),"\n",(0,t.jsx)(r.li,{children:"Password strength indicator on generated keys"}),"\n",(0,t.jsx)(r.li,{children:"Pronounceable password and passphrase generation"}),"\n",(0,t.jsx)(r.li,{children:"Bulk operations (delete, move folder)"}),"\n"]}),"\n",(0,t.jsx)(r.h3,{id:"enterprise-15-additional-features",children:"Enterprise (15 additional features)"}),"\n",(0,t.jsx)(r.p,{children:"Large organizations, multi-instance deployments, and compliance-driven environments."}),"\n",(0,t.jsxs)(r.ol,{start:"76",children:["\n",(0,t.jsx)(r.li,{children:"Password health report (weak, reused, old)"}),"\n",(0,t.jsx)(r.li,{children:"Breach detection (HaveIBeenPwned integration)"}),"\n",(0,t.jsx)(r.li,{children:"Breach detection for secret URLs (HaveIBeenPwned)"}),"\n",(0,t.jsx)(r.li,{children:"Password age indicator"}),"\n",(0,t.jsx)(r.li,{children:"Export to PDF (single secret)"}),"\n",(0,t.jsx)(r.li,{children:"Browser extension (Bitwarden-compatible API subset)"}),"\n",(0,t.jsx)(r.li,{children:"CLI tool for secret management"}),"\n",(0,t.jsx)(r.li,{children:"Multiple encryption suites per user (key rotation)"}),"\n",(0,t.jsx)(r.li,{children:"Custom CA chain upload"}),"\n",(0,t.jsx)(r.li,{children:"Post-quantum cryptography"}),"\n",(0,t.jsx)(r.li,{children:"Secret tags"}),"\n",(0,t.jsx)(r.li,{children:"Custom fields per secret type"}),"\n",(0,t.jsx)(r.li,{children:"Field-level encryption audit"}),"\n",(0,t.jsx)(r.li,{children:"Data retention policies"}),"\n",(0,t.jsx)(r.li,{children:"Nextcloud Flows automation triggers"}),"\n"]})]})}function a(e={}){const{wrapper:r}={...(0,i.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(o,{...e})}):o(e)}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/7005.e6d836d3.js b/docs/build/assets/js/7005.e6d836d3.js deleted file mode 100644 index 3e4ff58e5..000000000 --- a/docs/build/assets/js/7005.e6d836d3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[7005],{7005(t,e,n){n.d(e,{diagram:()=>Nt});var a=n(8343),i=n(8515),s=n(3706),r=n(797),l=n(451),o=n(6750),h=function(){var t=(0,r.K2)(function(t,e,n,a){for(n=n||{},a=t.length;a--;n[t[a]]=e);return n},"o"),e=[1,24],n=[1,25],a=[1,26],i=[1,27],s=[1,28],l=[1,63],o=[1,64],h=[1,65],d=[1,66],u=[1,67],p=[1,68],y=[1,69],g=[1,29],b=[1,30],f=[1,31],_=[1,32],x=[1,33],m=[1,34],E=[1,35],S=[1,36],A=[1,37],C=[1,38],w=[1,39],O=[1,40],k=[1,41],T=[1,42],v=[1,43],R=[1,44],D=[1,45],N=[1,46],P=[1,47],B=[1,48],j=[1,50],I=[1,51],M=[1,52],L=[1,53],Y=[1,54],K=[1,55],U=[1,56],F=[1,57],X=[1,58],z=[1,59],W=[1,60],Q=[14,42],$=[14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],H=[12,14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],V=[1,82],q=[1,83],G=[1,84],J=[1,85],Z=[12,14,42],tt=[12,14,33,42],et=[12,14,33,42,76,77,79,80],nt=[12,33],at=[34,36,37,38,39,40,41,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],it={trace:(0,r.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:"error",6:"direction_tb",7:"direction_bt",8:"direction_rl",9:"direction_lr",11:"C4_CONTEXT",12:"NEWLINE",14:"EOF",15:"C4_CONTAINER",16:"C4_COMPONENT",17:"C4_DYNAMIC",18:"C4_DEPLOYMENT",22:"title",23:"accDescription",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"LBRACE",34:"ENTERPRISE_BOUNDARY",36:"SYSTEM_BOUNDARY",37:"BOUNDARY",38:"CONTAINER_BOUNDARY",39:"NODE",40:"NODE_L",41:"NODE_R",42:"RBRACE",44:"PERSON",45:"PERSON_EXT",46:"SYSTEM",47:"SYSTEM_DB",48:"SYSTEM_QUEUE",49:"SYSTEM_EXT",50:"SYSTEM_EXT_DB",51:"SYSTEM_EXT_QUEUE",52:"CONTAINER",53:"CONTAINER_DB",54:"CONTAINER_QUEUE",55:"CONTAINER_EXT",56:"CONTAINER_EXT_DB",57:"CONTAINER_EXT_QUEUE",58:"COMPONENT",59:"COMPONENT_DB",60:"COMPONENT_QUEUE",61:"COMPONENT_EXT",62:"COMPONENT_EXT_DB",63:"COMPONENT_EXT_QUEUE",64:"REL",65:"BIREL",66:"REL_U",67:"REL_D",68:"REL_L",69:"REL_R",70:"REL_B",71:"REL_INDEX",72:"UPDATE_EL_STYLE",73:"UPDATE_REL_STYLE",74:"UPDATE_LAYOUT_CONFIG",76:"STR",77:"STR_KEY",78:"STR_VALUE",79:"ATTRIBUTE",80:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:(0,r.K2)(function(t,e,n,a,i,s,r){var l=s.length-1;switch(i){case 3:a.setDirection("TB");break;case 4:a.setDirection("BT");break;case 5:a.setDirection("RL");break;case 6:a.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:a.setC4Type(s[l-3]);break;case 19:a.setTitle(s[l].substring(6)),this.$=s[l].substring(6);break;case 20:a.setAccDescription(s[l].substring(15)),this.$=s[l].substring(15);break;case 21:this.$=s[l].trim(),a.setTitle(this.$);break;case 22:case 23:this.$=s[l].trim(),a.setAccDescription(this.$);break;case 28:s[l].splice(2,0,"ENTERPRISE"),a.addPersonOrSystemBoundary(...s[l]),this.$=s[l];break;case 29:s[l].splice(2,0,"SYSTEM"),a.addPersonOrSystemBoundary(...s[l]),this.$=s[l];break;case 30:a.addPersonOrSystemBoundary(...s[l]),this.$=s[l];break;case 31:s[l].splice(2,0,"CONTAINER"),a.addContainerBoundary(...s[l]),this.$=s[l];break;case 32:a.addDeploymentNode("node",...s[l]),this.$=s[l];break;case 33:a.addDeploymentNode("nodeL",...s[l]),this.$=s[l];break;case 34:a.addDeploymentNode("nodeR",...s[l]),this.$=s[l];break;case 35:a.popBoundaryParseStack();break;case 39:a.addPersonOrSystem("person",...s[l]),this.$=s[l];break;case 40:a.addPersonOrSystem("external_person",...s[l]),this.$=s[l];break;case 41:a.addPersonOrSystem("system",...s[l]),this.$=s[l];break;case 42:a.addPersonOrSystem("system_db",...s[l]),this.$=s[l];break;case 43:a.addPersonOrSystem("system_queue",...s[l]),this.$=s[l];break;case 44:a.addPersonOrSystem("external_system",...s[l]),this.$=s[l];break;case 45:a.addPersonOrSystem("external_system_db",...s[l]),this.$=s[l];break;case 46:a.addPersonOrSystem("external_system_queue",...s[l]),this.$=s[l];break;case 47:a.addContainer("container",...s[l]),this.$=s[l];break;case 48:a.addContainer("container_db",...s[l]),this.$=s[l];break;case 49:a.addContainer("container_queue",...s[l]),this.$=s[l];break;case 50:a.addContainer("external_container",...s[l]),this.$=s[l];break;case 51:a.addContainer("external_container_db",...s[l]),this.$=s[l];break;case 52:a.addContainer("external_container_queue",...s[l]),this.$=s[l];break;case 53:a.addComponent("component",...s[l]),this.$=s[l];break;case 54:a.addComponent("component_db",...s[l]),this.$=s[l];break;case 55:a.addComponent("component_queue",...s[l]),this.$=s[l];break;case 56:a.addComponent("external_component",...s[l]),this.$=s[l];break;case 57:a.addComponent("external_component_db",...s[l]),this.$=s[l];break;case 58:a.addComponent("external_component_queue",...s[l]),this.$=s[l];break;case 60:a.addRel("rel",...s[l]),this.$=s[l];break;case 61:a.addRel("birel",...s[l]),this.$=s[l];break;case 62:a.addRel("rel_u",...s[l]),this.$=s[l];break;case 63:a.addRel("rel_d",...s[l]),this.$=s[l];break;case 64:a.addRel("rel_l",...s[l]),this.$=s[l];break;case 65:a.addRel("rel_r",...s[l]),this.$=s[l];break;case 66:a.addRel("rel_b",...s[l]),this.$=s[l];break;case 67:s[l].splice(0,1),a.addRel("rel",...s[l]),this.$=s[l];break;case 68:a.updateElStyle("update_el_style",...s[l]),this.$=s[l];break;case 69:a.updateRelStyle("update_rel_style",...s[l]),this.$=s[l];break;case 70:a.updateLayoutConfig("update_layout_config",...s[l]),this.$=s[l];break;case 71:this.$=[s[l]];break;case 72:s[l].unshift(s[l-1]),this.$=s[l];break;case 73:case 75:this.$=s[l].trim();break;case 74:let t={};t[s[l-1].trim()]=s[l].trim(),this.$=t;break;case 76:this.$=""}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:e,23:n,24:a,26:i,28:s,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:u,40:p,41:y,43:23,44:g,45:b,46:f,47:_,48:x,49:m,50:E,51:S,52:A,53:C,54:w,55:O,56:k,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:j,65:I,66:M,67:L,68:Y,69:K,70:U,71:F,72:X,73:z,74:W},{13:70,19:20,20:21,21:22,22:e,23:n,24:a,26:i,28:s,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:u,40:p,41:y,43:23,44:g,45:b,46:f,47:_,48:x,49:m,50:E,51:S,52:A,53:C,54:w,55:O,56:k,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:j,65:I,66:M,67:L,68:Y,69:K,70:U,71:F,72:X,73:z,74:W},{13:71,19:20,20:21,21:22,22:e,23:n,24:a,26:i,28:s,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:u,40:p,41:y,43:23,44:g,45:b,46:f,47:_,48:x,49:m,50:E,51:S,52:A,53:C,54:w,55:O,56:k,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:j,65:I,66:M,67:L,68:Y,69:K,70:U,71:F,72:X,73:z,74:W},{13:72,19:20,20:21,21:22,22:e,23:n,24:a,26:i,28:s,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:u,40:p,41:y,43:23,44:g,45:b,46:f,47:_,48:x,49:m,50:E,51:S,52:A,53:C,54:w,55:O,56:k,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:j,65:I,66:M,67:L,68:Y,69:K,70:U,71:F,72:X,73:z,74:W},{13:73,19:20,20:21,21:22,22:e,23:n,24:a,26:i,28:s,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:u,40:p,41:y,43:23,44:g,45:b,46:f,47:_,48:x,49:m,50:E,51:S,52:A,53:C,54:w,55:O,56:k,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:j,65:I,66:M,67:L,68:Y,69:K,70:U,71:F,72:X,73:z,74:W},{14:[1,74]},t(Q,[2,13],{43:23,29:49,30:61,32:62,20:75,34:l,36:o,37:h,38:d,39:u,40:p,41:y,44:g,45:b,46:f,47:_,48:x,49:m,50:E,51:S,52:A,53:C,54:w,55:O,56:k,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:j,65:I,66:M,67:L,68:Y,69:K,70:U,71:F,72:X,73:z,74:W}),t(Q,[2,14]),t($,[2,16],{12:[1,76]}),t(Q,[2,36],{12:[1,77]}),t(H,[2,19]),t(H,[2,20]),{25:[1,78]},{27:[1,79]},t(H,[2,23]),{35:80,75:81,76:V,77:q,79:G,80:J},{35:86,75:81,76:V,77:q,79:G,80:J},{35:87,75:81,76:V,77:q,79:G,80:J},{35:88,75:81,76:V,77:q,79:G,80:J},{35:89,75:81,76:V,77:q,79:G,80:J},{35:90,75:81,76:V,77:q,79:G,80:J},{35:91,75:81,76:V,77:q,79:G,80:J},{35:92,75:81,76:V,77:q,79:G,80:J},{35:93,75:81,76:V,77:q,79:G,80:J},{35:94,75:81,76:V,77:q,79:G,80:J},{35:95,75:81,76:V,77:q,79:G,80:J},{35:96,75:81,76:V,77:q,79:G,80:J},{35:97,75:81,76:V,77:q,79:G,80:J},{35:98,75:81,76:V,77:q,79:G,80:J},{35:99,75:81,76:V,77:q,79:G,80:J},{35:100,75:81,76:V,77:q,79:G,80:J},{35:101,75:81,76:V,77:q,79:G,80:J},{35:102,75:81,76:V,77:q,79:G,80:J},{35:103,75:81,76:V,77:q,79:G,80:J},{35:104,75:81,76:V,77:q,79:G,80:J},t(Z,[2,59]),{35:105,75:81,76:V,77:q,79:G,80:J},{35:106,75:81,76:V,77:q,79:G,80:J},{35:107,75:81,76:V,77:q,79:G,80:J},{35:108,75:81,76:V,77:q,79:G,80:J},{35:109,75:81,76:V,77:q,79:G,80:J},{35:110,75:81,76:V,77:q,79:G,80:J},{35:111,75:81,76:V,77:q,79:G,80:J},{35:112,75:81,76:V,77:q,79:G,80:J},{35:113,75:81,76:V,77:q,79:G,80:J},{35:114,75:81,76:V,77:q,79:G,80:J},{35:115,75:81,76:V,77:q,79:G,80:J},{20:116,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:u,40:p,41:y,43:23,44:g,45:b,46:f,47:_,48:x,49:m,50:E,51:S,52:A,53:C,54:w,55:O,56:k,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:j,65:I,66:M,67:L,68:Y,69:K,70:U,71:F,72:X,73:z,74:W},{12:[1,118],33:[1,117]},{35:119,75:81,76:V,77:q,79:G,80:J},{35:120,75:81,76:V,77:q,79:G,80:J},{35:121,75:81,76:V,77:q,79:G,80:J},{35:122,75:81,76:V,77:q,79:G,80:J},{35:123,75:81,76:V,77:q,79:G,80:J},{35:124,75:81,76:V,77:q,79:G,80:J},{35:125,75:81,76:V,77:q,79:G,80:J},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},t(Q,[2,15]),t($,[2,17],{21:22,19:130,22:e,23:n,24:a,26:i,28:s}),t(Q,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:e,23:n,24:a,26:i,28:s,34:l,36:o,37:h,38:d,39:u,40:p,41:y,44:g,45:b,46:f,47:_,48:x,49:m,50:E,51:S,52:A,53:C,54:w,55:O,56:k,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:j,65:I,66:M,67:L,68:Y,69:K,70:U,71:F,72:X,73:z,74:W}),t(H,[2,21]),t(H,[2,22]),t(Z,[2,39]),t(tt,[2,71],{75:81,35:132,76:V,77:q,79:G,80:J}),t(et,[2,73]),{78:[1,133]},t(et,[2,75]),t(et,[2,76]),t(Z,[2,40]),t(Z,[2,41]),t(Z,[2,42]),t(Z,[2,43]),t(Z,[2,44]),t(Z,[2,45]),t(Z,[2,46]),t(Z,[2,47]),t(Z,[2,48]),t(Z,[2,49]),t(Z,[2,50]),t(Z,[2,51]),t(Z,[2,52]),t(Z,[2,53]),t(Z,[2,54]),t(Z,[2,55]),t(Z,[2,56]),t(Z,[2,57]),t(Z,[2,58]),t(Z,[2,60]),t(Z,[2,61]),t(Z,[2,62]),t(Z,[2,63]),t(Z,[2,64]),t(Z,[2,65]),t(Z,[2,66]),t(Z,[2,67]),t(Z,[2,68]),t(Z,[2,69]),t(Z,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},t(nt,[2,28]),t(nt,[2,29]),t(nt,[2,30]),t(nt,[2,31]),t(nt,[2,32]),t(nt,[2,33]),t(nt,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},t($,[2,18]),t(Q,[2,38]),t(tt,[2,72]),t(et,[2,74]),t(Z,[2,24]),t(Z,[2,35]),t(at,[2,25]),t(at,[2,26],{12:[1,138]}),t(at,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:(0,r.K2)(function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},"parseError"),parse:(0,r.K2)(function(t){var e=this,n=[0],a=[],i=[null],s=[],l=this.table,o="",c=0,h=0,d=0,u=s.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var b=p.yylloc;s.push(b);var f=p.options&&p.options.ranges;function _(){var t;return"number"!=typeof(t=a.pop()||p.lex()||1)&&(t instanceof Array&&(t=(a=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,r.K2)(function(t){n.length=n.length-2*t,i.length=i.length-t,s.length=s.length-t},"popStack"),(0,r.K2)(_,"lex");for(var x,m,E,S,A,C,w,O,k,T={};;){if(E=n[n.length-1],this.defaultActions[E]?S=this.defaultActions[E]:(null==x&&(x=_()),S=l[E]&&l[E][x]),void 0===S||!S.length||!S[0]){var v="";for(C in k=[],l[E])this.terminals_[C]&&C>2&&k.push("'"+this.terminals_[C]+"'");v=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+k.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==x?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(v,{text:p.match,token:this.terminals_[x]||x,line:p.yylineno,loc:b,expected:k})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E+", token: "+x);switch(S[0]){case 1:n.push(x),i.push(p.yytext),s.push(p.yylloc),n.push(S[1]),x=null,m?(x=m,m=null):(h=p.yyleng,o=p.yytext,c=p.yylineno,b=p.yylloc,d>0&&d--);break;case 2:if(w=this.productions_[S[1]][1],T.$=i[i.length-w],T._$={first_line:s[s.length-(w||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(w||1)].first_column,last_column:s[s.length-1].last_column},f&&(T._$.range=[s[s.length-(w||1)].range[0],s[s.length-1].range[1]]),void 0!==(A=this.performAction.apply(T,[o,h,c,y.yy,S[1],i,s].concat(u))))return A;w&&(n=n.slice(0,-1*w*2),i=i.slice(0,-1*w),s=s.slice(0,-1*w)),n.push(this.productions_[S[1]][0]),i.push(T.$),s.push(T._$),O=l[n[n.length-2]][n[n.length-1]],n.push(O);break;case 3:return!0}}return!0},"parse")},st=function(){return{EOF:1,parseError:(0,r.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,r.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,r.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,r.K2)(function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var a=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===a.length?this.yylloc.first_column:0)+a[a.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,r.K2)(function(){return this._more=!0,this},"more"),reject:(0,r.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,r.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,r.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,r.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,r.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,r.K2)(function(t,e){var n,a,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(a=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=a.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:a?a[a.length-1].length-a[a.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var s in i)this[s]=i[s];return!1}return!1},"test_match"),next:(0,r.K2)(function(){if(this.done)return this.EOF;var t,e,n,a;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),s=0;s<i.length;s++)if((n=this._input.match(this.rules[i[s]]))&&(!e||n[0].length>e[0].length)){if(e=n,a=s,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[s])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[a]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,r.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,r.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,r.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,r.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,r.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,r.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,r.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:(0,r.K2)(function(t,e,n,a){switch(n){case 0:return 6;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 22;case 5:return 23;case 6:return this.begin("acc_title"),24;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),26;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:case 73:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:case 16:case 70:break;case 14:c;break;case 15:return 12;case 17:return 11;case 18:return 15;case 19:return 16;case 20:return 17;case 21:return 18;case 22:return this.begin("person_ext"),45;case 23:return this.begin("person"),44;case 24:return this.begin("system_ext_queue"),51;case 25:return this.begin("system_ext_db"),50;case 26:return this.begin("system_ext"),49;case 27:return this.begin("system_queue"),48;case 28:return this.begin("system_db"),47;case 29:return this.begin("system"),46;case 30:return this.begin("boundary"),37;case 31:return this.begin("enterprise_boundary"),34;case 32:return this.begin("system_boundary"),36;case 33:return this.begin("container_ext_queue"),57;case 34:return this.begin("container_ext_db"),56;case 35:return this.begin("container_ext"),55;case 36:return this.begin("container_queue"),54;case 37:return this.begin("container_db"),53;case 38:return this.begin("container"),52;case 39:return this.begin("container_boundary"),38;case 40:return this.begin("component_ext_queue"),63;case 41:return this.begin("component_ext_db"),62;case 42:return this.begin("component_ext"),61;case 43:return this.begin("component_queue"),60;case 44:return this.begin("component_db"),59;case 45:return this.begin("component"),58;case 46:case 47:return this.begin("node"),39;case 48:return this.begin("node_l"),40;case 49:return this.begin("node_r"),41;case 50:return this.begin("rel"),64;case 51:return this.begin("birel"),65;case 52:case 53:return this.begin("rel_u"),66;case 54:case 55:return this.begin("rel_d"),67;case 56:case 57:return this.begin("rel_l"),68;case 58:case 59:return this.begin("rel_r"),69;case 60:return this.begin("rel_b"),70;case 61:return this.begin("rel_index"),71;case 62:return this.begin("update_el_style"),72;case 63:return this.begin("update_rel_style"),73;case 64:return this.begin("update_layout_config"),74;case 65:return"EOF_IN_STRUCT";case 66:return this.begin("attribute"),"ATTRIBUTE_EMPTY";case 67:this.begin("attribute");break;case 68:case 79:this.popState(),this.popState();break;case 69:case 71:return 80;case 72:this.begin("string");break;case 74:case 80:return"STR";case 75:this.begin("string_kv");break;case 76:return this.begin("string_kv_key"),"STR_KEY";case 77:this.popState(),this.begin("string_kv_value");break;case 78:return"STR_VALUE";case 81:return"LBRACE";case 82:return"RBRACE";case 83:return"SPACE";case 84:return"EOL";case 85:return 14}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},string_kv_value:{rules:[78,79],inclusive:!1},string_kv_key:{rules:[77],inclusive:!1},string_kv:{rules:[76],inclusive:!1},string:{rules:[73,74],inclusive:!1},attribute:{rules:[68,69,70,71,72,75,80],inclusive:!1},update_layout_config:{rules:[65,66,67,68],inclusive:!1},update_rel_style:{rules:[65,66,67,68],inclusive:!1},update_el_style:{rules:[65,66,67,68],inclusive:!1},rel_b:{rules:[65,66,67,68],inclusive:!1},rel_r:{rules:[65,66,67,68],inclusive:!1},rel_l:{rules:[65,66,67,68],inclusive:!1},rel_d:{rules:[65,66,67,68],inclusive:!1},rel_u:{rules:[65,66,67,68],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[65,66,67,68],inclusive:!1},node_r:{rules:[65,66,67,68],inclusive:!1},node_l:{rules:[65,66,67,68],inclusive:!1},node:{rules:[65,66,67,68],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[65,66,67,68],inclusive:!1},component_ext_queue:{rules:[65,66,67,68],inclusive:!1},component_ext_db:{rules:[65,66,67,68],inclusive:!1},component_ext:{rules:[65,66,67,68],inclusive:!1},component_queue:{rules:[65,66,67,68],inclusive:!1},component_db:{rules:[65,66,67,68],inclusive:!1},component:{rules:[65,66,67,68],inclusive:!1},container_boundary:{rules:[65,66,67,68],inclusive:!1},container_ext_queue:{rules:[65,66,67,68],inclusive:!1},container_ext_db:{rules:[65,66,67,68],inclusive:!1},container_ext:{rules:[65,66,67,68],inclusive:!1},container_queue:{rules:[65,66,67,68],inclusive:!1},container_db:{rules:[65,66,67,68],inclusive:!1},container:{rules:[65,66,67,68],inclusive:!1},birel:{rules:[65,66,67,68],inclusive:!1},system_boundary:{rules:[65,66,67,68],inclusive:!1},enterprise_boundary:{rules:[65,66,67,68],inclusive:!1},boundary:{rules:[65,66,67,68],inclusive:!1},system_ext_queue:{rules:[65,66,67,68],inclusive:!1},system_ext_db:{rules:[65,66,67,68],inclusive:!1},system_ext:{rules:[65,66,67,68],inclusive:!1},system_queue:{rules:[65,66,67,68],inclusive:!1},system_db:{rules:[65,66,67,68],inclusive:!1},system:{rules:[65,66,67,68],inclusive:!1},person_ext:{rules:[65,66,67,68],inclusive:!1},person:{rules:[65,66,67,68],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,82,83,84,85],inclusive:!0}}}}();function rt(){this.yy={}}return it.lexer=st,(0,r.K2)(rt,"Parser"),rt.prototype=it,it.Parser=rt,new rt}();h.parser=h;var d,u=h,p=[],y=[""],g="global",b="",f=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],_=[],x="",m=!1,E=4,S=2,A=(0,r.K2)(function(){return d},"getC4Type"),C=(0,r.K2)(function(t){let e=(0,s.jZ)(t,(0,s.D7)());d=e},"setC4Type"),w=(0,r.K2)(function(t,e,n,a,i,s,r,l,o){if(null==t||null==e||null==n||null==a)return;let c={};const h=_.find(t=>t.from===e&&t.to===n);if(h?c=h:_.push(c),c.type=t,c.from=e,c.to=n,c.label={text:a},null==i)c.techn={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];c[t]={text:e}}else c.techn={text:i};if(null==s)c.descr={text:""};else if("object"==typeof s){let[t,e]=Object.entries(s)[0];c[t]={text:e}}else c.descr={text:s};if("object"==typeof r){let[t,e]=Object.entries(r)[0];c[t]=e}else c.sprite=r;if("object"==typeof l){let[t,e]=Object.entries(l)[0];c[t]=e}else c.tags=l;if("object"==typeof o){let[t,e]=Object.entries(o)[0];c[t]=e}else c.link=o;c.wrap=H()},"addRel"),O=(0,r.K2)(function(t,e,n,a,i,s,r){if(null===e||null===n)return;let l={};const o=p.find(t=>t.alias===e);if(o&&e===o.alias?l=o:(l.alias=e,p.push(l)),l.label=null==n?{text:""}:{text:n},null==a)l.descr={text:""};else if("object"==typeof a){let[t,e]=Object.entries(a)[0];l[t]={text:e}}else l.descr={text:a};if("object"==typeof i){let[t,e]=Object.entries(i)[0];l[t]=e}else l.sprite=i;if("object"==typeof s){let[t,e]=Object.entries(s)[0];l[t]=e}else l.tags=s;if("object"==typeof r){let[t,e]=Object.entries(r)[0];l[t]=e}else l.link=r;l.typeC4Shape={text:t},l.parentBoundary=g,l.wrap=H()},"addPersonOrSystem"),k=(0,r.K2)(function(t,e,n,a,i,s,r,l){if(null===e||null===n)return;let o={};const c=p.find(t=>t.alias===e);if(c&&e===c.alias?o=c:(o.alias=e,p.push(o)),o.label=null==n?{text:""}:{text:n},null==a)o.techn={text:""};else if("object"==typeof a){let[t,e]=Object.entries(a)[0];o[t]={text:e}}else o.techn={text:a};if(null==i)o.descr={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];o[t]={text:e}}else o.descr={text:i};if("object"==typeof s){let[t,e]=Object.entries(s)[0];o[t]=e}else o.sprite=s;if("object"==typeof r){let[t,e]=Object.entries(r)[0];o[t]=e}else o.tags=r;if("object"==typeof l){let[t,e]=Object.entries(l)[0];o[t]=e}else o.link=l;o.wrap=H(),o.typeC4Shape={text:t},o.parentBoundary=g},"addContainer"),T=(0,r.K2)(function(t,e,n,a,i,s,r,l){if(null===e||null===n)return;let o={};const c=p.find(t=>t.alias===e);if(c&&e===c.alias?o=c:(o.alias=e,p.push(o)),o.label=null==n?{text:""}:{text:n},null==a)o.techn={text:""};else if("object"==typeof a){let[t,e]=Object.entries(a)[0];o[t]={text:e}}else o.techn={text:a};if(null==i)o.descr={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];o[t]={text:e}}else o.descr={text:i};if("object"==typeof s){let[t,e]=Object.entries(s)[0];o[t]=e}else o.sprite=s;if("object"==typeof r){let[t,e]=Object.entries(r)[0];o[t]=e}else o.tags=r;if("object"==typeof l){let[t,e]=Object.entries(l)[0];o[t]=e}else o.link=l;o.wrap=H(),o.typeC4Shape={text:t},o.parentBoundary=g},"addComponent"),v=(0,r.K2)(function(t,e,n,a,i){if(null===t||null===e)return;let s={};const r=f.find(e=>e.alias===t);if(r&&t===r.alias?s=r:(s.alias=t,f.push(s)),s.label=null==e?{text:""}:{text:e},null==n)s.type={text:"system"};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];s[t]={text:e}}else s.type={text:n};if("object"==typeof a){let[t,e]=Object.entries(a)[0];s[t]=e}else s.tags=a;if("object"==typeof i){let[t,e]=Object.entries(i)[0];s[t]=e}else s.link=i;s.parentBoundary=g,s.wrap=H(),b=g,g=t,y.push(b)},"addPersonOrSystemBoundary"),R=(0,r.K2)(function(t,e,n,a,i){if(null===t||null===e)return;let s={};const r=f.find(e=>e.alias===t);if(r&&t===r.alias?s=r:(s.alias=t,f.push(s)),s.label=null==e?{text:""}:{text:e},null==n)s.type={text:"container"};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];s[t]={text:e}}else s.type={text:n};if("object"==typeof a){let[t,e]=Object.entries(a)[0];s[t]=e}else s.tags=a;if("object"==typeof i){let[t,e]=Object.entries(i)[0];s[t]=e}else s.link=i;s.parentBoundary=g,s.wrap=H(),b=g,g=t,y.push(b)},"addContainerBoundary"),D=(0,r.K2)(function(t,e,n,a,i,s,r,l){if(null===e||null===n)return;let o={};const c=f.find(t=>t.alias===e);if(c&&e===c.alias?o=c:(o.alias=e,f.push(o)),o.label=null==n?{text:""}:{text:n},null==a)o.type={text:"node"};else if("object"==typeof a){let[t,e]=Object.entries(a)[0];o[t]={text:e}}else o.type={text:a};if(null==i)o.descr={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];o[t]={text:e}}else o.descr={text:i};if("object"==typeof r){let[t,e]=Object.entries(r)[0];o[t]=e}else o.tags=r;if("object"==typeof l){let[t,e]=Object.entries(l)[0];o[t]=e}else o.link=l;o.nodeType=t,o.parentBoundary=g,o.wrap=H(),b=g,g=e,y.push(b)},"addDeploymentNode"),N=(0,r.K2)(function(){g=b,y.pop(),b=y.pop(),y.push(b)},"popBoundaryParseStack"),P=(0,r.K2)(function(t,e,n,a,i,s,r,l,o,c,h){let d=p.find(t=>t.alias===e);if(void 0!==d||(d=f.find(t=>t.alias===e),void 0!==d)){if(null!=n)if("object"==typeof n){let[t,e]=Object.entries(n)[0];d[t]=e}else d.bgColor=n;if(null!=a)if("object"==typeof a){let[t,e]=Object.entries(a)[0];d[t]=e}else d.fontColor=a;if(null!=i)if("object"==typeof i){let[t,e]=Object.entries(i)[0];d[t]=e}else d.borderColor=i;if(null!=s)if("object"==typeof s){let[t,e]=Object.entries(s)[0];d[t]=e}else d.shadowing=s;if(null!=r)if("object"==typeof r){let[t,e]=Object.entries(r)[0];d[t]=e}else d.shape=r;if(null!=l)if("object"==typeof l){let[t,e]=Object.entries(l)[0];d[t]=e}else d.sprite=l;if(null!=o)if("object"==typeof o){let[t,e]=Object.entries(o)[0];d[t]=e}else d.techn=o;if(null!=c)if("object"==typeof c){let[t,e]=Object.entries(c)[0];d[t]=e}else d.legendText=c;if(null!=h)if("object"==typeof h){let[t,e]=Object.entries(h)[0];d[t]=e}else d.legendSprite=h}},"updateElStyle"),B=(0,r.K2)(function(t,e,n,a,i,s,r){const l=_.find(t=>t.from===e&&t.to===n);if(void 0!==l){if(null!=a)if("object"==typeof a){let[t,e]=Object.entries(a)[0];l[t]=e}else l.textColor=a;if(null!=i)if("object"==typeof i){let[t,e]=Object.entries(i)[0];l[t]=e}else l.lineColor=i;if(null!=s)if("object"==typeof s){let[t,e]=Object.entries(s)[0];l[t]=parseInt(e)}else l.offsetX=parseInt(s);if(null!=r)if("object"==typeof r){let[t,e]=Object.entries(r)[0];l[t]=parseInt(e)}else l.offsetY=parseInt(r)}},"updateRelStyle"),j=(0,r.K2)(function(t,e,n){let a=E,i=S;if("object"==typeof e){const t=Object.values(e)[0];a=parseInt(t)}else a=parseInt(e);if("object"==typeof n){const t=Object.values(n)[0];i=parseInt(t)}else i=parseInt(n);a>=1&&(E=a),i>=1&&(S=i)},"updateLayoutConfig"),I=(0,r.K2)(function(){return E},"getC4ShapeInRow"),M=(0,r.K2)(function(){return S},"getC4BoundaryInRow"),L=(0,r.K2)(function(){return g},"getCurrentBoundaryParse"),Y=(0,r.K2)(function(){return b},"getParentBoundaryParse"),K=(0,r.K2)(function(t){return null==t?p:p.filter(e=>e.parentBoundary===t)},"getC4ShapeArray"),U=(0,r.K2)(function(t){return p.find(e=>e.alias===t)},"getC4Shape"),F=(0,r.K2)(function(t){return Object.keys(K(t))},"getC4ShapeKeys"),X=(0,r.K2)(function(t){return null==t?f:f.filter(e=>e.parentBoundary===t)},"getBoundaries"),z=X,W=(0,r.K2)(function(){return _},"getRels"),Q=(0,r.K2)(function(){return x},"getTitle"),$=(0,r.K2)(function(t){m=t},"setWrap"),H=(0,r.K2)(function(){return m},"autoWrap"),V=(0,r.K2)(function(){p=[],f=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],b="",g="global",y=[""],_=[],y=[""],x="",m=!1,E=4,S=2},"clear"),q=(0,r.K2)(function(t){let e=(0,s.jZ)(t,(0,s.D7)());x=e},"setTitle"),G={addPersonOrSystem:O,addPersonOrSystemBoundary:v,addContainer:k,addContainerBoundary:R,addComponent:T,addDeploymentNode:D,popBoundaryParseStack:N,addRel:w,updateElStyle:P,updateRelStyle:B,updateLayoutConfig:j,autoWrap:H,setWrap:$,getC4ShapeArray:K,getC4Shape:U,getC4ShapeKeys:F,getBoundaries:X,getBoundarys:z,getCurrentBoundaryParse:L,getParentBoundaryParse:Y,getRels:W,getTitle:Q,getC4Type:A,getC4ShapeInRow:I,getC4BoundaryInRow:M,setAccTitle:s.SV,getAccTitle:s.iN,getAccDescription:s.m7,setAccDescription:s.EI,getConfig:(0,r.K2)(()=>(0,s.D7)().c4,"getConfig"),clear:V,LINETYPE:{SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},setTitle:q,setC4Type:C},J=(0,r.K2)(function(t,e){return(0,a.tk)(t,e)},"drawRect"),Z=(0,r.K2)(function(t,e,n,a,i,s){const r=t.append("image");r.attr("width",e),r.attr("height",n),r.attr("x",a),r.attr("y",i);let l=s.startsWith("data:image/png;base64")?s:(0,o.J)(s);r.attr("xlink:href",l)},"drawImage"),tt=(0,r.K2)((t,e,n,a)=>{const i=t.append("g");let s=0;for(let r of e){let t=r.textColor?r.textColor:"#444444",e=r.lineColor?r.lineColor:"#444444",l=r.offsetX?parseInt(r.offsetX):0,o=r.offsetY?parseInt(r.offsetY):0,c="";if(0===s){let t=i.append("line");t.attr("x1",r.startPoint.x),t.attr("y1",r.startPoint.y),t.attr("x2",r.endPoint.x),t.attr("y2",r.endPoint.y),t.attr("stroke-width","1"),t.attr("stroke",e),t.style("fill","none"),"rel_b"!==r.type&&t.attr("marker-end","url("+c+"#"+a+"-arrowhead)"),"birel"!==r.type&&"rel_b"!==r.type||t.attr("marker-start","url("+c+"#"+a+"-arrowend)"),s=-1}else{let t=i.append("path");t.attr("fill","none").attr("stroke-width","1").attr("stroke",e).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",r.startPoint.x).replaceAll("starty",r.startPoint.y).replaceAll("controlx",r.startPoint.x+(r.endPoint.x-r.startPoint.x)/2-(r.endPoint.x-r.startPoint.x)/4).replaceAll("controly",r.startPoint.y+(r.endPoint.y-r.startPoint.y)/2).replaceAll("stopx",r.endPoint.x).replaceAll("stopy",r.endPoint.y)),"rel_b"!==r.type&&t.attr("marker-end","url("+c+"#"+a+"-arrowhead)"),"birel"!==r.type&&"rel_b"!==r.type||t.attr("marker-start","url("+c+"#"+a+"-arrowend)")}let h=n.messageFont();dt(n)(r.label.text,i,Math.min(r.startPoint.x,r.endPoint.x)+Math.abs(r.endPoint.x-r.startPoint.x)/2+l,Math.min(r.startPoint.y,r.endPoint.y)+Math.abs(r.endPoint.y-r.startPoint.y)/2+o,r.label.width,r.label.height,{fill:t},h),r.techn&&""!==r.techn.text&&(h=n.messageFont(),dt(n)("["+r.techn.text+"]",i,Math.min(r.startPoint.x,r.endPoint.x)+Math.abs(r.endPoint.x-r.startPoint.x)/2+l,Math.min(r.startPoint.y,r.endPoint.y)+Math.abs(r.endPoint.y-r.startPoint.y)/2+n.messageFontSize+5+o,Math.max(r.label.width,r.techn.width),r.techn.height,{fill:t,"font-style":"italic"},h))}},"drawRels"),et=(0,r.K2)(function(t,e,n){const a=t.append("g");let i=e.bgColor?e.bgColor:"none",s=e.borderColor?e.borderColor:"#444444",r=e.fontColor?e.fontColor:"black",l={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};e.nodeType&&(l={"stroke-width":1});let o={x:e.x,y:e.y,fill:i,stroke:s,width:e.width,height:e.height,rx:2.5,ry:2.5,attrs:l};J(a,o);let c=n.boundaryFont();c.fontWeight="bold",c.fontSize=c.fontSize+2,c.fontColor=r,dt(n)(e.label.text,a,e.x,e.y+e.label.Y,e.width,e.height,{fill:"#444444"},c),e.type&&""!==e.type.text&&(c=n.boundaryFont(),c.fontColor=r,dt(n)(e.type.text,a,e.x,e.y+e.type.Y,e.width,e.height,{fill:"#444444"},c)),e.descr&&""!==e.descr.text&&(c=n.boundaryFont(),c.fontSize=c.fontSize-2,c.fontColor=r,dt(n)(e.descr.text,a,e.x,e.y+e.descr.Y,e.width,e.height,{fill:"#444444"},c))},"drawBoundary"),nt=(0,r.K2)(function(t,e,n){let i=e.bgColor?e.bgColor:n[e.typeC4Shape.text+"_bg_color"],s=e.borderColor?e.borderColor:n[e.typeC4Shape.text+"_border_color"],r=e.fontColor?e.fontColor:"#FFFFFF",l="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(e.typeC4Shape.text){case"person":l="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";break;case"external_person":l="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII="}const o=t.append("g");o.attr("class","person-man");const c=(0,a.PB)();switch(e.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":c.x=e.x,c.y=e.y,c.fill=i,c.width=e.width,c.height=e.height,c.stroke=s,c.rx=2.5,c.ry=2.5,c.attrs={"stroke-width":.5},J(o,c);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":o.append("path").attr("fill",i).attr("stroke-width","0.5").attr("stroke",s).attr("d","Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("half",e.width/2).replaceAll("height",e.height)),o.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",s).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("half",e.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":o.append("path").attr("fill",i).attr("stroke-width","0.5").attr("stroke",s).attr("d","Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("width",e.width).replaceAll("half",e.height/2)),o.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",s).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",e.x+e.width).replaceAll("starty",e.y).replaceAll("half",e.height/2))}let h=ht(n,e.typeC4Shape.text);switch(o.append("text").attr("fill",r).attr("font-family",h.fontFamily).attr("font-size",h.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",e.typeC4Shape.width).attr("x",e.x+e.width/2-e.typeC4Shape.width/2).attr("y",e.y+e.typeC4Shape.Y).text("<<"+e.typeC4Shape.text+">>"),e.typeC4Shape.text){case"person":case"external_person":Z(o,48,48,e.x+e.width/2-24,e.y+e.image.Y,l)}let d=n[e.typeC4Shape.text+"Font"]();return d.fontWeight="bold",d.fontSize=d.fontSize+2,d.fontColor=r,dt(n)(e.label.text,o,e.x,e.y+e.label.Y,e.width,e.height,{fill:r},d),d=n[e.typeC4Shape.text+"Font"](),d.fontColor=r,e.techn&&""!==e.techn?.text?dt(n)(e.techn.text,o,e.x,e.y+e.techn.Y,e.width,e.height,{fill:r,"font-style":"italic"},d):e.type&&""!==e.type.text&&dt(n)(e.type.text,o,e.x,e.y+e.type.Y,e.width,e.height,{fill:r,"font-style":"italic"},d),e.descr&&""!==e.descr.text&&(d=n.personFont(),d.fontColor=r,dt(n)(e.descr.text,o,e.x,e.y+e.descr.Y,e.width,e.height,{fill:r},d)),e.height},"drawC4Shape"),at=(0,r.K2)(function(t,e){t.append("defs").append("symbol").attr("id",e+"-database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),it=(0,r.K2)(function(t,e){t.append("defs").append("symbol").attr("id",e+"-computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),st=(0,r.K2)(function(t,e){t.append("defs").append("symbol").attr("id",e+"-clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),rt=(0,r.K2)(function(t,e){t.append("defs").append("marker").attr("id",e+"-arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},"insertArrowHead"),lt=(0,r.K2)(function(t,e){t.append("defs").append("marker").attr("id",e+"-arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")},"insertArrowEnd"),ot=(0,r.K2)(function(t,e){t.append("defs").append("marker").attr("id",e+"-filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),ct=(0,r.K2)(function(t,e){const n=t.append("defs").append("marker").attr("id",e+"-crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);n.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),n.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},"insertArrowCrossHead"),ht=(0,r.K2)((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"getC4ShapeFont"),dt=function(){function t(t,e,n,i,s,r,l){a(e.append("text").attr("x",n+s/2).attr("y",i+r/2+5).style("text-anchor","middle").text(t),l)}function e(t,e,n,i,r,l,o,c){const{fontSize:h,fontFamily:d,fontWeight:u}=c,p=t.split(s.Y2.lineBreakRegex);for(let s=0;s<p.length;s++){const t=s*h-h*(p.length-1)/2,l=e.append("text").attr("x",n+r/2).attr("y",i).style("text-anchor","middle").attr("dominant-baseline","middle").style("font-size",h).style("font-weight",u).style("font-family",d);l.append("tspan").attr("dy",t).text(p[s]).attr("alignment-baseline","mathematical"),a(l,o)}}function n(t,n,i,s,r,l,o,c){const h=n.append("switch"),d=h.append("foreignObject").attr("x",i).attr("y",s).attr("width",r).attr("height",l).append("xhtml:div").style("display","table").style("height","100%").style("width","100%");d.append("div").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(t),e(t,h,i,s,r,0,o,c),a(d,o)}function a(t,e){for(const n in e)e.hasOwnProperty(n)&&t.attr(n,e[n])}return(0,r.K2)(t,"byText"),(0,r.K2)(e,"byTspan"),(0,r.K2)(n,"byFo"),(0,r.K2)(a,"_setTextAttrs"),function(a){return"fo"===a.textPlacement?n:"old"===a.textPlacement?t:e}}(),ut={drawRect:J,drawBoundary:et,drawC4Shape:nt,drawRels:tt,drawImage:Z,insertArrowHead:rt,insertArrowEnd:lt,insertArrowFilledHead:ot,insertArrowCrossHead:ct,insertDatabaseIcon:at,insertComputerIcon:it,insertClockIcon:st},pt=0,yt=0,gt=4,bt=2;h.yy=G;var ft={},_t=class{static{(0,r.K2)(this,"Bounds")}constructor(t){this.name="",this.data={},this.data.startx=void 0,this.data.stopx=void 0,this.data.starty=void 0,this.data.stopy=void 0,this.data.widthLimit=void 0,this.nextData={},this.nextData.startx=void 0,this.nextData.stopx=void 0,this.nextData.starty=void 0,this.nextData.stopy=void 0,this.nextData.cnt=0,xt(t.db.getConfig())}setData(t,e,n,a){this.nextData.startx=this.data.startx=t,this.nextData.stopx=this.data.stopx=e,this.nextData.starty=this.data.starty=n,this.nextData.stopy=this.data.stopy=a}updateVal(t,e,n,a){void 0===t[e]?t[e]=n:t[e]=a(n,t[e])}insert(t){this.nextData.cnt=this.nextData.cnt+1;let e=this.nextData.startx===this.nextData.stopx?this.nextData.stopx+t.margin:this.nextData.stopx+2*t.margin,n=e+t.width,a=this.nextData.starty+2*t.margin,i=a+t.height;(e>=this.data.widthLimit||n>=this.data.widthLimit||this.nextData.cnt>gt)&&(e=this.nextData.startx+t.margin+ft.nextLinePaddingX,a=this.nextData.stopy+2*t.margin,this.nextData.stopx=n=e+t.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=i=a+t.height,this.nextData.cnt=1),t.x=e,t.y=a,this.updateVal(this.data,"startx",e,Math.min),this.updateVal(this.data,"starty",a,Math.min),this.updateVal(this.data,"stopx",n,Math.max),this.updateVal(this.data,"stopy",i,Math.max),this.updateVal(this.nextData,"startx",e,Math.min),this.updateVal(this.nextData,"starty",a,Math.min),this.updateVal(this.nextData,"stopx",n,Math.max),this.updateVal(this.nextData,"stopy",i,Math.max)}init(t){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},xt(t.db.getConfig())}bumpLastMargin(t){this.data.stopx+=t,this.data.stopy+=t}},xt=(0,r.K2)(function(t){(0,s.hH)(ft,t),t.fontFamily&&(ft.personFontFamily=ft.systemFontFamily=ft.messageFontFamily=t.fontFamily),t.fontSize&&(ft.personFontSize=ft.systemFontSize=ft.messageFontSize=t.fontSize),t.fontWeight&&(ft.personFontWeight=ft.systemFontWeight=ft.messageFontWeight=t.fontWeight)},"setConf"),mt=(0,r.K2)((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"c4ShapeFont"),Et=(0,r.K2)(t=>({fontFamily:t.boundaryFontFamily,fontSize:t.boundaryFontSize,fontWeight:t.boundaryFontWeight}),"boundaryFont"),St=(0,r.K2)(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont");function At(t,e,n,a,r){if(!e[t].width)if(n)e[t].text=(0,i.bH)(e[t].text,r,a),e[t].textLines=e[t].text.split(s.Y2.lineBreakRegex).length,e[t].width=r,e[t].height=(0,i.ru)(e[t].text,a);else{let n=e[t].text.split(s.Y2.lineBreakRegex);e[t].textLines=n.length;let r=0;e[t].height=0,e[t].width=0;for(const s of n)e[t].width=Math.max((0,i.Un)(s,a),e[t].width),r=(0,i.ru)(s,a),e[t].height=e[t].height+r}}(0,r.K2)(At,"calcC4ShapeTextWH");var Ct=(0,r.K2)(function(t,e,n){e.x=n.data.startx,e.y=n.data.starty,e.width=n.data.stopx-n.data.startx,e.height=n.data.stopy-n.data.starty,e.label.y=ft.c4ShapeMargin-35;let a=e.wrap&&ft.wrap,s=Et(ft);s.fontSize=s.fontSize+2,s.fontWeight="bold",At("label",e,a,s,(0,i.Un)(e.label.text,s)),ut.drawBoundary(t,e,ft)},"drawBoundary"),wt=(0,r.K2)(function(t,e,n,a){let s=0;for(const r of a){s=0;const a=n[r];let l=mt(ft,a.typeC4Shape.text);switch(l.fontSize=l.fontSize-2,a.typeC4Shape.width=(0,i.Un)("\xab"+a.typeC4Shape.text+"\xbb",l),a.typeC4Shape.height=l.fontSize+2,a.typeC4Shape.Y=ft.c4ShapePadding,s=a.typeC4Shape.Y+a.typeC4Shape.height-4,a.image={width:0,height:0,Y:0},a.typeC4Shape.text){case"person":case"external_person":a.image.width=48,a.image.height=48,a.image.Y=s,s=a.image.Y+a.image.height}a.sprite&&(a.image.width=48,a.image.height=48,a.image.Y=s,s=a.image.Y+a.image.height);let o=a.wrap&&ft.wrap,c=ft.width-2*ft.c4ShapePadding,h=mt(ft,a.typeC4Shape.text);if(h.fontSize=h.fontSize+2,h.fontWeight="bold",At("label",a,o,h,c),a.label.Y=s+8,s=a.label.Y+a.label.height,a.type&&""!==a.type.text){a.type.text="["+a.type.text+"]",At("type",a,o,mt(ft,a.typeC4Shape.text),c),a.type.Y=s+5,s=a.type.Y+a.type.height}else if(a.techn&&""!==a.techn.text){a.techn.text="["+a.techn.text+"]",At("techn",a,o,mt(ft,a.techn.text),c),a.techn.Y=s+5,s=a.techn.Y+a.techn.height}let d=s,u=a.label.width;if(a.descr&&""!==a.descr.text){At("descr",a,o,mt(ft,a.typeC4Shape.text),c),a.descr.Y=s+20,s=a.descr.Y+a.descr.height,u=Math.max(a.label.width,a.descr.width),d=s-5*a.descr.textLines}u+=ft.c4ShapePadding,a.width=Math.max(a.width||ft.width,u,ft.width),a.height=Math.max(a.height||ft.height,d,ft.height),a.margin=a.margin||ft.c4ShapeMargin,t.insert(a),ut.drawC4Shape(e,a,ft)}t.bumpLastMargin(ft.c4ShapeMargin)},"drawC4ShapeArray"),Ot=class{static{(0,r.K2)(this,"Point")}constructor(t,e){this.x=t,this.y=e}},kt=(0,r.K2)(function(t,e){let n=t.x,a=t.y,i=e.x,s=e.y,r=n+t.width/2,l=a+t.height/2,o=Math.abs(n-i),c=Math.abs(a-s),h=c/o,d=t.height/t.width,u=null;return a==s&&n<i?u=new Ot(n+t.width,l):a==s&&n>i?u=new Ot(n,l):n==i&&a<s?u=new Ot(r,a+t.height):n==i&&a>s&&(u=new Ot(r,a)),n>i&&a<s?u=d>=h?new Ot(n,l+h*t.width/2):new Ot(r-o/c*t.height/2,a+t.height):n<i&&a<s?u=d>=h?new Ot(n+t.width,l+h*t.width/2):new Ot(r+o/c*t.height/2,a+t.height):n<i&&a>s?u=d>=h?new Ot(n+t.width,l-h*t.width/2):new Ot(r+t.height/2*o/c,a):n>i&&a>s&&(u=d>=h?new Ot(n,l-t.width/2*h):new Ot(r-t.height/2*o/c,a)),u},"getIntersectPoint"),Tt=(0,r.K2)(function(t,e){let n={x:0,y:0};n.x=e.x+e.width/2,n.y=e.y+e.height/2;let a=kt(t,n);return n.x=t.x+t.width/2,n.y=t.y+t.height/2,{startPoint:a,endPoint:kt(e,n)}},"getIntersectPoints"),vt=(0,r.K2)(function(t,e,n,a,s){let r=0;for(let l of e){r+=1;let t=l.wrap&&ft.wrap,e=St(ft);"C4Dynamic"===a.db.getC4Type()&&(l.label.text=r+": "+l.label.text);let s=(0,i.Un)(l.label.text,e);At("label",l,t,e,s),l.techn&&""!==l.techn.text&&(s=(0,i.Un)(l.techn.text,e),At("techn",l,t,e,s)),l.descr&&""!==l.descr.text&&(s=(0,i.Un)(l.descr.text,e),At("descr",l,t,e,s));let o=n(l.from),c=n(l.to),h=Tt(o,c);l.startPoint=h.startPoint,l.endPoint=h.endPoint}ut.drawRels(t,e,ft,s)},"drawRels");function Rt(t,e,n,a,i){let s=new _t(i);s.data.widthLimit=n.data.widthLimit/Math.min(bt,a.length);for(let[r,l]of a.entries()){let a=0;l.image={width:0,height:0,Y:0},l.sprite&&(l.image.width=48,l.image.height=48,l.image.Y=a,a=l.image.Y+l.image.height);let o=l.wrap&&ft.wrap,c=Et(ft);if(c.fontSize=c.fontSize+2,c.fontWeight="bold",At("label",l,o,c,s.data.widthLimit),l.label.Y=a+8,a=l.label.Y+l.label.height,l.type&&""!==l.type.text){l.type.text="["+l.type.text+"]",At("type",l,o,Et(ft),s.data.widthLimit),l.type.Y=a+5,a=l.type.Y+l.type.height}if(l.descr&&""!==l.descr.text){let t=Et(ft);t.fontSize=t.fontSize-2,At("descr",l,o,t,s.data.widthLimit),l.descr.Y=a+20,a=l.descr.Y+l.descr.height}if(0==r||r%bt===0){let t=n.data.startx+ft.diagramMarginX,e=n.data.stopy+ft.diagramMarginY+a;s.setData(t,t,e,e)}else{let t=s.data.stopx!==s.data.startx?s.data.stopx+ft.diagramMarginX:s.data.startx,e=s.data.starty;s.setData(t,t,e,e)}s.name=l.alias;let h=i.db.getC4ShapeArray(l.alias),d=i.db.getC4ShapeKeys(l.alias);d.length>0&&wt(s,t,h,d),e=l.alias;let u=i.db.getBoundaries(e);u.length>0&&Rt(t,e,s,u,i),"global"!==l.alias&&Ct(t,l,s),n.data.stopy=Math.max(s.data.stopy+ft.c4ShapeMargin,n.data.stopy),n.data.stopx=Math.max(s.data.stopx+ft.c4ShapeMargin,n.data.stopx),pt=Math.max(pt,n.data.stopx),yt=Math.max(yt,n.data.stopy)}}(0,r.K2)(Rt,"drawInsideBoundary");var Dt={drawPersonOrSystemArray:wt,drawBoundary:Ct,setConf:xt,draw:(0,r.K2)(function(t,e,n,a){ft=(0,s.D7)().c4;const i=(0,s.D7)().securityLevel;let o;"sandbox"===i&&(o=(0,l.Ltv)("#i"+e));const c="sandbox"===i?(0,l.Ltv)(o.nodes()[0].contentDocument.body):(0,l.Ltv)("body");let h=a.db;a.db.setWrap(ft.wrap),gt=h.getC4ShapeInRow(),bt=h.getC4BoundaryInRow(),r.Rm.debug(`C:${JSON.stringify(ft,null,2)}`);const d="sandbox"===i?c.select(`[id="${e}"]`):(0,l.Ltv)(`[id="${e}"]`);ut.insertComputerIcon(d,e),ut.insertDatabaseIcon(d,e),ut.insertClockIcon(d,e);let u=new _t(a);u.setData(ft.diagramMarginX,ft.diagramMarginX,ft.diagramMarginY,ft.diagramMarginY),u.data.widthLimit=screen.availWidth,pt=ft.diagramMarginX,yt=ft.diagramMarginY;const p=a.db.getTitle();Rt(d,"",u,a.db.getBoundaries(""),a),ut.insertArrowHead(d,e),ut.insertArrowEnd(d,e),ut.insertArrowCrossHead(d,e),ut.insertArrowFilledHead(d,e),vt(d,a.db.getRels(),a.db.getC4Shape,a,e),u.data.stopx=pt,u.data.stopy=yt;const y=u.data;let g=y.stopy-y.starty+2*ft.diagramMarginY;const b=y.stopx-y.startx+2*ft.diagramMarginX;p&&d.append("text").text(p).attr("x",(y.stopx-y.startx)/2-4*ft.diagramMarginX).attr("y",y.starty+ft.diagramMarginY),(0,s.a$)(d,g,b,ft.useMaxWidth);const f=p?60:0;d.attr("viewBox",y.startx-ft.diagramMarginX+" -"+(ft.diagramMarginY+f)+" "+b+" "+(g+f)),r.Rm.debug("models:",y)},"draw")},Nt={parser:u,db:G,renderer:Dt,styles:(0,r.K2)(t=>`.person {\n stroke: ${t.personBorder};\n fill: ${t.personBkg};\n }\n`,"getStyles"),init:(0,r.K2)(({c4:t,wrap:e})=>{Dt.setConf(t),G.setWrap(e)},"init")}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/7059.6e411ffe.js b/docs/build/assets/js/7059.6e411ffe.js deleted file mode 100644 index cf169c5c9..000000000 --- a/docs/build/assets/js/7059.6e411ffe.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[7059],{7059(e,t,a){a.d(t,{diagram:()=>C});var l=a(8213),s=a(4345),r=a(8013),n=a(5871),i=a(8515),o=a(3706),c=a(797),d=a(8731),p=a(451),h=class{constructor(){this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.setAccTitle=o.SV,this.getAccTitle=o.iN,this.setDiagramTitle=o.ke,this.getDiagramTitle=o.ab,this.getAccDescription=o.m7,this.setAccDescription=o.EI}static{(0,c.K2)(this,"TreeMapDB")}getNodes(){return this.nodes}getConfig(){const e=o.UI,t=(0,o.zj)();return(0,i.$t)({...e.treemap,...t.treemap??{}})}addNode(e,t){this.nodes.push(e),this.levels.set(e,t),0===t&&(this.outerNodes.push(e),this.root??=e)}getRoot(){return{name:"",children:this.outerNodes}}addClass(e,t){const a=this.classes.get(e)??{id:e,styles:[],textStyles:[]},l=t.replace(/\\,/g,"\xa7\xa7\xa7").replace(/,/g,";").replace(/\xa7\xa7\xa7/g,",").split(";");l&&l.forEach(e=>{(0,r.KX)(e)&&(a?.textStyles?a.textStyles.push(e):a.textStyles=[e]),a?.styles?a.styles.push(e):a.styles=[e]}),this.classes.set(e,a)}getClasses(){return this.classes}getStylesForClass(e){return this.classes.get(e)?.styles??[]}clear(){(0,o.IU)(),this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.root=void 0}};function m(e){if(!e.length)return[];const t=[],a=[];return e.forEach(e=>{const l={name:e.name,children:"Leaf"===e.type?void 0:[]};for(l.classSelector=e?.classSelector,e?.cssCompiledStyles&&(l.cssCompiledStyles=e.cssCompiledStyles),"Leaf"===e.type&&void 0!==e.value&&(l.value=e.value);a.length>0&&a[a.length-1].level>=e.level;)a.pop();if(0===a.length)t.push(l);else{const e=a[a.length-1].node;e.children?e.children.push(l):e.children=[l]}"Leaf"!==e.type&&a.push({node:l,level:e.level})}),t}(0,c.K2)(m,"buildHierarchy");var y=(0,c.K2)((e,t)=>{(0,n.S)(e,t);const a=[];for(const r of e.TreemapRows??[])"ClassDefStatement"===r.$type&&t.addClass(r.className??"",r.styleText??"");for(const r of e.TreemapRows??[]){const e=r.item;if(!e)continue;const l=r.indent?parseInt(r.indent):0,s=f(e),n=e.classSelector?t.getStylesForClass(e.classSelector):[],i=n.length>0?n:void 0,o={level:l,name:s,type:e.$type,value:e.value,classSelector:e.classSelector,cssCompiledStyles:i};a.push(o)}const l=m(a),s=(0,c.K2)((e,a)=>{for(const l of e)t.addNode(l,a),l.children&&l.children.length>0&&s(l.children,a+1)},"addNodesRecursively");s(l,0)},"populate"),f=(0,c.K2)(e=>e.name?String(e.name):"","getItemName"),u={parser:{yy:void 0},parse:(0,c.K2)(async e=>{try{const t=d.qg,a=await t("treemap",e);c.Rm.debug("Treemap AST:",a);const l=u.parser?.yy;if(!(l instanceof h))throw new Error("parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");y(a,l)}catch(t){throw c.Rm.error("Error parsing treemap:",t),t}},"parse")},S=10,g={draw:(0,c.K2)((e,t,a,n)=>{const i=n.db,d=i.getConfig(),h=d.padding??10,m=i.getDiagramTitle(),y=i.getRoot(),{themeVariables:f}=(0,o.zj)();if(!y)return;const u=m?30:0,g=(0,l.D)(t),x=d.nodeWidth?d.nodeWidth*S:960,b=d.nodeHeight?d.nodeHeight*S:500,C=x,v=b+u;let $;g.attr("viewBox",`0 0 ${C} ${v}`),(0,o.a$)(g,v,C,d.useMaxWidth);try{const e=d.valueFormat||",";if("$0,0"===e)$=(0,c.K2)(e=>"$"+(0,p.GPZ)(",")(e),"valueFormat");else if(e.startsWith("$")&&e.includes(",")){const t=/\.\d+/.exec(e),a=t?t[0]:"";$=(0,c.K2)(e=>"$"+(0,p.GPZ)(","+a)(e),"valueFormat")}else if(e.startsWith("$")){const t=e.substring(1);$=(0,c.K2)(e=>"$"+(0,p.GPZ)(t||"")(e),"valueFormat")}else $=(0,p.GPZ)(e)}catch(W){c.Rm.error("Error creating format function:",W),$=(0,p.GPZ)(",")}const w=(0,p.UMr)().range(["transparent",f.cScale0,f.cScale1,f.cScale2,f.cScale3,f.cScale4,f.cScale5,f.cScale6,f.cScale7,f.cScale8,f.cScale9,f.cScale10,f.cScale11]),L=(0,p.UMr)().range(["transparent",f.cScalePeer0,f.cScalePeer1,f.cScalePeer2,f.cScalePeer3,f.cScalePeer4,f.cScalePeer5,f.cScalePeer6,f.cScalePeer7,f.cScalePeer8,f.cScalePeer9,f.cScalePeer10,f.cScalePeer11]),k=(0,p.UMr)().range([f.cScaleLabel0,f.cScaleLabel1,f.cScaleLabel2,f.cScaleLabel3,f.cScaleLabel4,f.cScaleLabel5,f.cScaleLabel6,f.cScaleLabel7,f.cScaleLabel8,f.cScaleLabel9,f.cScaleLabel10,f.cScaleLabel11]);m&&g.append("text").attr("x",C/2).attr("y",u/2).attr("class","treemapTitle").attr("text-anchor","middle").attr("dominant-baseline","middle").text(m);const M=g.append("g").attr("transform",`translate(0, ${u})`).attr("class","treemapContainer"),T=(0,p.Sk5)(y).sum(e=>e.value??0).sort((e,t)=>(t.value??0)-(e.value??0)),z=(0,p.hkb)().size([x,b]).paddingTop(e=>e.children&&e.children.length>0?35:0).paddingInner(h).paddingLeft(e=>e.children&&e.children.length>0?S:0).paddingRight(e=>e.children&&e.children.length>0?S:0).paddingBottom(e=>e.children&&e.children.length>0?S:0).round(!0)(T),P=z.descendants().filter(e=>e.children&&e.children.length>0),F=M.selectAll(".treemapSection").data(P).enter().append("g").attr("class","treemapSection").attr("transform",e=>`translate(${e.x0},${e.y0})`);F.append("rect").attr("width",e=>e.x1-e.x0).attr("height",25).attr("class","treemapSectionHeader").attr("fill","none").attr("fill-opacity",.6).attr("stroke-width",.6).attr("style",e=>0===e.depth?"display: none;":""),F.append("clipPath").attr("id",(e,a)=>`clip-section-${t}-${a}`).append("rect").attr("width",e=>Math.max(0,e.x1-e.x0-12)).attr("height",25),F.append("rect").attr("width",e=>e.x1-e.x0).attr("height",e=>e.y1-e.y0).attr("class",(e,t)=>`treemapSection section${t}`).attr("fill",e=>w(e.data.name)).attr("fill-opacity",.6).attr("stroke",e=>L(e.data.name)).attr("stroke-width",2).attr("stroke-opacity",.4).attr("style",e=>{if(0===e.depth)return"display: none;";const t=(0,r.GX)({cssCompiledStyles:e.data.cssCompiledStyles});return t.nodeStyles+";"+t.borderStyles.join(";")}),F.append("text").attr("class","treemapSectionLabel").attr("x",6).attr("y",12.5).attr("dominant-baseline","middle").text(e=>0===e.depth?"":e.data.name).attr("font-weight","bold").attr("style",e=>{if(0===e.depth)return"display: none;";return"dominant-baseline: middle; font-size: 12px; fill:"+k(e.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"+(0,r.GX)({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace("color:","fill:")}).each(function(e){if(0===e.depth)return;const t=(0,p.Ltv)(this),a=e.data.name;t.text(a);const l=e.x1-e.x0;let s;if(!1!==d.showValues&&e.value){s=l-10-30-10-6}else{s=l-6-6}const r=Math.max(15,s),n=t.node();if(n.getComputedTextLength()>r){const e="...";let l=a;for(;l.length>0;){if(l=a.substring(0,l.length-1),0===l.length){t.text(e),n.getComputedTextLength()>r&&t.text("");break}if(t.text(l+e),n.getComputedTextLength()<=r)break}}}),!1!==d.showValues&&F.append("text").attr("class","treemapSectionValue").attr("x",e=>e.x1-e.x0-10).attr("y",12.5).attr("text-anchor","end").attr("dominant-baseline","middle").text(e=>e.value?$(e.value):"").attr("font-style","italic").attr("style",e=>{if(0===e.depth)return"display: none;";return"text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:"+k(e.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"+(0,r.GX)({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace("color:","fill:")});const N=z.leaves(),G=M.selectAll(".treemapLeafGroup").data(N).enter().append("g").attr("class",(e,t)=>`treemapNode treemapLeafGroup leaf${t}${e.data.classSelector?` ${e.data.classSelector}`:""}x`).attr("transform",e=>`translate(${e.x0},${e.y0})`);G.append("rect").attr("width",e=>e.x1-e.x0).attr("height",e=>e.y1-e.y0).attr("class","treemapLeaf").attr("fill",e=>e.parent?w(e.parent.data.name):w(e.data.name)).attr("style",e=>(0,r.GX)({cssCompiledStyles:e.data.cssCompiledStyles}).nodeStyles).attr("fill-opacity",.3).attr("stroke",e=>e.parent?w(e.parent.data.name):w(e.data.name)).attr("stroke-width",3),G.append("clipPath").attr("id",(e,a)=>`clip-${t}-${a}`).append("rect").attr("width",e=>Math.max(0,e.x1-e.x0-4)).attr("height",e=>Math.max(0,e.y1-e.y0-4));if(G.append("text").attr("class","treemapLabel").attr("x",e=>(e.x1-e.x0)/2).attr("y",e=>(e.y1-e.y0)/2).attr("style",e=>"text-anchor: middle; dominant-baseline: middle; font-size: 38px;fill:"+k(e.data.name)+";"+(0,r.GX)({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace("color:","fill:")).attr("clip-path",(e,a)=>`url(#clip-${t}-${a})`).text(e=>e.data.name).each(function(e){const t=(0,p.Ltv)(this),a=e.x1-e.x0,l=e.y1-e.y0,s=t.node(),r=a-8,n=l-8;if(r<10||n<10)return void t.style("display","none");let i=parseInt(t.style("font-size"),10);for(;s.getComputedTextLength()>r&&i>8;)i--,t.style("font-size",`${i}px`);let o=Math.max(6,Math.min(28,Math.round(.6*i))),c=i+2+o;for(;c>n&&i>8&&(i--,o=Math.max(6,Math.min(28,Math.round(.6*i))),!(o<6&&8===i));)t.style("font-size",`${i}px`),c=i+2+o;t.style("font-size",`${i}px`),(s.getComputedTextLength()>r||i<8||n<i)&&t.style("display","none")}),!1!==d.showValues){G.append("text").attr("class","treemapValue").attr("x",e=>(e.x1-e.x0)/2).attr("y",function(e){return(e.y1-e.y0)/2}).attr("style",e=>"text-anchor: middle; dominant-baseline: hanging; font-size: 28px;fill:"+k(e.data.name)+";"+(0,r.GX)({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace("color:","fill:")).attr("clip-path",(e,a)=>`url(#clip-${t}-${a})`).text(e=>e.value?$(e.value):"").each(function(e){const t=(0,p.Ltv)(this),a=this.parentNode;if(!a)return void t.style("display","none");const l=(0,p.Ltv)(a).select(".treemapLabel");if(l.empty()||"none"===l.style("display"))return void t.style("display","none");const s=parseFloat(l.style("font-size")),r=Math.max(6,Math.min(28,Math.round(.6*s)));t.style("font-size",`${r}px`);const n=(e.y1-e.y0)/2+s/2+2;t.attr("y",n);const i=e.x1-e.x0,o=e.y1-e.y0-4,c=i-8;t.node().getComputedTextLength()>c||n+r>o||r<6?t.style("display","none"):t.style("display",null)})}const K=d.diagramPadding??8;(0,s.P)(g,K,"flowchart",d?.useMaxWidth||!1)},"draw"),getClasses:(0,c.K2)(function(e,t){return t.db.getClasses()},"getClasses")},x={sectionStrokeColor:"black",sectionStrokeWidth:"1",sectionFillColor:"#efefef",leafStrokeColor:"black",leafStrokeWidth:"1",leafFillColor:"#efefef",labelFontSize:"12px",valueFontSize:"10px",titleFontSize:"14px"},b=(0,c.K2)(({treemap:e}={})=>{const t=(0,o.P$)(),a=(0,o.zj)(),l=(0,i.$t)(t,a.themeVariables),s=(0,i.$t)(x,e),r=s.titleColor??l.titleColor,n=s.labelColor??l.textColor,c=s.valueColor??l.textColor;return`\n .treemapNode.section {\n stroke: ${s.sectionStrokeColor};\n stroke-width: ${s.sectionStrokeWidth};\n fill: ${s.sectionFillColor};\n }\n .treemapNode.leaf {\n stroke: ${s.leafStrokeColor};\n stroke-width: ${s.leafStrokeWidth};\n fill: ${s.leafFillColor};\n }\n .treemapLabel {\n fill: ${n};\n font-size: ${s.labelFontSize};\n }\n .treemapValue {\n fill: ${c};\n font-size: ${s.valueFontSize};\n }\n .treemapTitle {\n fill: ${r};\n font-size: ${s.titleFontSize};\n }\n `},"getStyles"),C={parser:u,get db(){return new h},renderer:g,styles:b}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/7180.6d1c8d44.js b/docs/build/assets/js/7180.6d1c8d44.js deleted file mode 100644 index 62f554a04..000000000 --- a/docs/build/assets/js/7180.6d1c8d44.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[7180],{7180(a,c,e){e.d(c,{createPacketServices:()=>s.$});var s=e(4824);e(9302)}}]); \ No newline at end of file diff --git a/docs/build/assets/js/743.b8acf669.js b/docs/build/assets/js/743.b8acf669.js deleted file mode 100644 index 5c57eb015..000000000 --- a/docs/build/assets/js/743.b8acf669.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[743],{743(r,e,t){t.d(e,{diagram:()=>i});var a=t(3894),s=(t(9625),t(4345),t(3848),t(6615),t(1334),t(273),t(5105),t(8013),t(5739),t(8515),t(3706),t(797)),i={parser:a.Zk,get db(){return new a.u4(2)},renderer:a.q7,styles:a.tM,init:(0,s.K2)(r=>{r.state||(r.state={}),r.state.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/7563.d0e0f454.js b/docs/build/assets/js/7563.d0e0f454.js deleted file mode 100644 index aaaee8d74..000000000 --- a/docs/build/assets/js/7563.d0e0f454.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[7563],{7563(e,n,t){t.r(n),t.d(n,{render:()=>k});var r=t(6615),a=(t(1334),t(273)),i=t(5105),o=(t(8013),t(5739),t(8515),t(3706)),d=t(797),s=t(1301),c=t(9592),g=t(1641);const l=function(e){return(0,g.A)(e,4)};var f=t(4722);t(3126);function h(e){var n={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:p(e),edges:u(e)};return c.A(e.graph())||(n.value=l(e.graph())),n}function p(e){return f.A(e.nodes(),function(n){var t=e.node(n),r=e.parent(n),a={v:n};return c.A(t)||(a.value=t),c.A(r)||(a.parent=r),a})}function u(e){return f.A(e.edges(),function(n){var t=e.edge(n),r={v:n.v,w:n.w};return c.A(n.name)||(r.name=n.name),c.A(t)||(r.value=t),r})}var m=t(697),w=new Map,R=new Map,v=new Map,y=(0,d.K2)(()=>{R.clear(),v.clear(),w.clear()},"clear"),X=(0,d.K2)((e,n)=>{const t=R.get(n)||[];return d.Rm.trace("In isDescendant",n," ",e," = ",t.includes(e)),t.includes(e)},"isDescendant"),b=(0,d.K2)((e,n)=>{const t=R.get(n)||[];return d.Rm.info("Descendants of ",n," is ",t),d.Rm.info("Edge is ",e),e.v!==n&&e.w!==n&&(t?t.includes(e.v)||X(e.v,n)||X(e.w,n)||t.includes(e.w):(d.Rm.debug("Tilt, ",n,",not in descendants"),!1))},"edgeInCluster"),E=(0,d.K2)((e,n,t,r)=>{d.Rm.warn("Copying children of ",e,"root",r,"data",n.node(e),r);const a=n.children(e)||[];e!==r&&a.push(e),d.Rm.warn("Copying (nodes) clusterId",e,"nodes",a),a.forEach(a=>{if(n.children(a).length>0)E(a,n,t,r);else{const i=n.node(a);d.Rm.info("cp ",a," to ",r," with parent ",e),t.setNode(a,i),r!==n.parent(a)&&(d.Rm.warn("Setting parent",a,n.parent(a)),t.setParent(a,n.parent(a))),e!==r&&a!==e?(d.Rm.debug("Setting parent",a,e),t.setParent(a,e)):(d.Rm.info("In copy ",e,"root",r,"data",n.node(e),r),d.Rm.debug("Not Setting parent for node=",a,"cluster!==rootId",e!==r,"node!==clusterId",a!==e));const o=n.edges(a);d.Rm.debug("Copying Edges",o),o.forEach(a=>{d.Rm.info("Edge",a);const i=n.edge(a.v,a.w,a.name);d.Rm.info("Edge data",i,r);try{b(a,r)?(d.Rm.info("Copying as ",a.v,a.w,i,a.name),t.setEdge(a.v,a.w,i,a.name),d.Rm.info("newGraph edges ",t.edges(),t.edge(t.edges()[0]))):d.Rm.info("Skipping copy of edge ",a.v,"--\x3e",a.w," rootId: ",r," clusterId:",e)}catch(o){d.Rm.error(o)}})}d.Rm.debug("Removing node",a),n.removeNode(a)})},"copy"),N=(0,d.K2)((e,n)=>{const t=n.children(e);let r=[...t];for(const a of t)v.set(a,e),r=[...r,...N(a,n)];return r},"extractDescendants"),C=(0,d.K2)((e,n,t)=>{const r=e.edges().filter(e=>e.v===n||e.w===n),a=e.edges().filter(e=>e.v===t||e.w===t),i=r.map(e=>({v:e.v===n?t:e.v,w:e.w===n?n:e.w})),o=a.map(e=>({v:e.v,w:e.w}));return i.filter(e=>o.some(n=>e.v===n.v&&e.w===n.w))},"findCommonEdges"),S=(0,d.K2)((e,n,t)=>{const r=n.children(e);if(d.Rm.trace("Searching children of id ",e,r),r.length<1)return e;let a;for(const i of r){const e=S(i,n,t),r=C(n,t,e);if(e){if(!(r.length>0))return e;a=e}}return a},"findNonClusterChild"),x=(0,d.K2)(e=>w.has(e)&&w.get(e).externalConnections&&w.has(e)?w.get(e).id:e,"getAnchorId"),I=(0,d.K2)((e,n)=>{if(!e||n>10)d.Rm.debug("Opting out, no graph ");else{d.Rm.debug("Opting in, graph "),e.nodes().forEach(function(n){e.children(n).length>0&&(d.Rm.warn("Cluster identified",n," Replacement id in edges: ",S(n,e,n)),R.set(n,N(n,e)),w.set(n,{id:S(n,e,n),clusterData:e.node(n)}))}),e.nodes().forEach(function(n){const t=e.children(n),r=e.edges();t.length>0?(d.Rm.debug("Cluster identified",n,R),r.forEach(e=>{X(e.v,n)^X(e.w,n)&&(d.Rm.warn("Edge: ",e," leaves cluster ",n),d.Rm.warn("Descendants of XXX ",n,": ",R.get(n)),w.get(n).externalConnections=!0)})):d.Rm.debug("Not a cluster ",n,R)});for(let n of w.keys()){const t=w.get(n).id,r=e.parent(t);r!==n&&w.has(r)&&!w.get(r).externalConnections&&(w.get(n).id=r)}e.edges().forEach(function(n){const t=e.edge(n);d.Rm.warn("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(n)),d.Rm.warn("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(e.edge(n)));let r=n.v,a=n.w;if(d.Rm.warn("Fix XXX",w,"ids:",n.v,n.w,"Translating: ",w.get(n.v)," --- ",w.get(n.w)),w.get(n.v)||w.get(n.w)){if(d.Rm.warn("Fixing and trying - removing XXX",n.v,n.w,n.name),r=x(n.v),a=x(n.w),e.removeEdge(n.v,n.w,n.name),r!==n.v){const a=e.parent(r);w.get(a).externalConnections=!0,t.fromCluster=n.v}if(a!==n.w){const r=e.parent(a);w.get(r).externalConnections=!0,t.toCluster=n.w}d.Rm.warn("Fix Replacing with XXX",r,a,n.name),e.setEdge(r,a,t,n.name)}}),d.Rm.warn("Adjusted Graph",h(e)),D(e,0),d.Rm.trace(w)}},"adjustClustersAndEdges"),D=(0,d.K2)((e,n)=>{if(d.Rm.warn("extractor - ",n,h(e),e.children("D")),n>10)return void d.Rm.error("Bailing out");let t=e.nodes(),r=!1;for(const a of t){const n=e.children(a);r=r||n.length>0}if(r){d.Rm.debug("Nodes = ",t,n);for(const r of t)if(d.Rm.debug("Extracting node",r,w,w.has(r)&&!w.get(r).externalConnections,!e.parent(r),e.node(r),e.children("D")," Depth ",n),w.has(r))if(!w.get(r).externalConnections&&e.children(r)&&e.children(r).length>0){d.Rm.warn("Cluster without external connections, without a parent and with children",r,n);let t="TB"===e.graph().rankdir?"LR":"TB";w.get(r)?.clusterData?.dir&&(t=w.get(r).clusterData.dir,d.Rm.warn("Fixing dir",w.get(r).clusterData.dir,t));const a=new m.T({multigraph:!0,compound:!0}).setGraph({rankdir:t,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});d.Rm.warn("Old graph before copy",h(e)),E(r,e,a,r),e.setNode(r,{clusterNode:!0,id:r,clusterData:w.get(r).clusterData,label:w.get(r).label,graph:a}),d.Rm.warn("New graph after copy node: (",r,")",h(a)),d.Rm.debug("Old graph after copy",h(e))}else d.Rm.warn("Cluster ** ",r," **not meeting the criteria !externalConnections:",!w.get(r).externalConnections," no parent: ",!e.parent(r)," children ",e.children(r)&&e.children(r).length>0,e.children("D"),n),d.Rm.debug(w);else d.Rm.debug("Not a cluster",r,n);t=e.nodes(),d.Rm.warn("New list of nodes",t);for(const r of t){const t=e.node(r);d.Rm.warn(" Now next level",r,t),t?.clusterNode&&D(t.graph,n+1)}}else d.Rm.debug("Done, no node has children",e.nodes())},"extractor"),A=(0,d.K2)((e,n)=>{if(0===n.length)return[];let t=Object.assign([],n);return n.forEach(n=>{const r=e.children(n),a=A(e,r);t=[...t,...a]}),t},"sorter"),L=(0,d.K2)(e=>A(e,e.children()),"sortNodesByHierarchy"),O=(0,d.K2)(async(e,n,t,o,c,g)=>{d.Rm.warn("Graph in recursive render:XAX",h(n),c);const l=n.graph().rankdir;d.Rm.trace("Dir in recursive render - dir:",l);const f=e.insert("g").attr("class","root");n.nodes()?d.Rm.info("Recursive render XXX",n.nodes()):d.Rm.info("No nodes found for",n),n.edges().length>0&&d.Rm.info("Recursive edges",n.edge(n.edges()[0]));const p=f.insert("g").attr("class","clusters"),u=f.insert("g").attr("class","edgePaths"),m=f.insert("g").attr("class","edgeLabels"),R=f.insert("g").attr("class","nodes");await Promise.all(n.nodes().map(async function(e){const r=n.node(e);if(void 0!==c){const t=JSON.parse(JSON.stringify(c.clusterData));d.Rm.trace("Setting data for parent cluster XXX\n Node.id = ",e,"\n data=",t.height,"\nParent cluster",c.height),n.setNode(c.id,t),n.parent(e)||(d.Rm.trace("Setting parent",e,c.id),n.setParent(e,c.id,t))}if(d.Rm.info("(Insert) Node XXX"+e+": "+JSON.stringify(n.node(e))),r?.clusterNode){d.Rm.info("Cluster identified XBX",e,r.width,n.node(e));const{ranksep:i,nodesep:s}=n.graph();r.graph.setGraph({...r.graph.graph(),ranksep:i+25,nodesep:s});const c=await O(R,r.graph,t,o,n.node(e),g),l=c.elem;(0,a.lC)(r,l),r.diff=c.diff||0,d.Rm.info("New compound node after recursive render XAX",e,"width",r.width,"height",r.height),(0,a.U7)(l,r)}else n.children(e).length>0?(d.Rm.trace("Cluster - the non recursive path XBX",e,r.id,r,r.width,"Graph:",n),d.Rm.trace(S(r.id,n)),w.set(r.id,{id:S(r.id,n),node:r})):(d.Rm.trace("Node - the non recursive path XAX",e,R,n.node(e),l),await(0,a.on)(R,n.node(e),{config:g,dir:l}))}));const v=(0,d.K2)(async()=>{const e=n.edges().map(async function(e){const t=n.edge(e.v,e.w,e.name);d.Rm.info("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(e)),d.Rm.info("Edge "+e.v+" -> "+e.w+": ",e," ",JSON.stringify(n.edge(e))),d.Rm.info("Fix",w,"ids:",e.v,e.w,"Translating: ",w.get(e.v),w.get(e.w)),await(0,r.jP)(m,t)});await Promise.all(e)},"processEdges");await v(),d.Rm.info("Graph before layout:",JSON.stringify(h(n))),d.Rm.info("############################################# XXX"),d.Rm.info("### Layout ### XXX"),d.Rm.info("############################################# XXX"),(0,s.Zp)(n),d.Rm.info("Graph after layout:",JSON.stringify(h(n)));let y=0,{subGraphTitleTotalMargin:X}=(0,i.O)(g);return await Promise.all(L(n).map(async function(e){const t=n.node(e);if(d.Rm.info("Position XBX => "+e+": ("+t.x,","+t.y,") width: ",t.width," height: ",t.height),t?.clusterNode)t.y+=X,d.Rm.info("A tainted cluster node XBX1",e,t.id,t.width,t.height,t.x,t.y,n.parent(e)),w.get(t.id).node=t,(0,a.U_)(t);else if(n.children(e).length>0){d.Rm.info("A pure cluster node XBX1",e,t.id,t.x,t.y,t.width,t.height,n.parent(e)),t.height+=X,n.node(t.parentId);const r=t?.padding/2||0,i=t?.labelBBox?.height||0,o=i-r||0;d.Rm.debug("OffsetY",o,"labelHeight",i,"halfPadding",r),await(0,a.U)(p,t),w.get(t.id).node=t}else{const e=n.node(t.parentId);t.y+=X/2,d.Rm.info("A regular node XBX1 - using the padding",t.id,"parent",t.parentId,t.width,t.height,t.x,t.y,"offsetY",t.offsetY,"parent",e,e?.offsetY,t),(0,a.U_)(t)}})),n.edges().forEach(function(e){const a=n.edge(e);d.Rm.info("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(a),a),a.points.forEach(e=>e.y+=X/2);const i=n.node(e.v);var s=n.node(e.w);const c=(0,r.Jo)(u,a,w,t,i,s,o);(0,r.T_)(a,c)}),n.nodes().forEach(function(e){const t=n.node(e);d.Rm.info(e,t.type,t.diff),t.isGroup&&(y=t.diff)}),d.Rm.warn("Returning from recursive render XAX",f,y),{elem:f,diff:y}},"recursiveRender"),k=(0,d.K2)(async(e,n)=>{const t=new m.T({multigraph:!0,compound:!0}).setGraph({rankdir:e.direction,nodesep:e.config?.nodeSpacing||e.config?.flowchart?.nodeSpacing||e.nodeSpacing,ranksep:e.config?.rankSpacing||e.config?.flowchart?.rankSpacing||e.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),i=n.select("g");(0,r.g0)(i,e.markers,e.type,e.diagramId),(0,a.gh)(),(0,r.IU)(),(0,a.IU)(),y(),e.nodes.forEach(e=>{t.setNode(e.id,{...e}),e.parentId&&t.setParent(e.id,e.parentId)}),d.Rm.debug("Edges:",e.edges),e.edges.forEach(e=>{if(e.start===e.end){const n=e.start,r=n+"---"+n+"---1",a=n+"---"+n+"---2",i=t.node(n);t.setNode(r,{domId:r,id:r,parentId:i.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),t.setParent(r,i.parentId),t.setNode(a,{domId:a,id:a,parentId:i.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),t.setParent(a,i.parentId);const o=structuredClone(e),d=structuredClone(e),s=structuredClone(e);o.label="",o.arrowTypeEnd="none",o.endLabelLeft="",o.endLabelRight="",o.startLabelLeft="",o.id=n+"-cyclic-special-1",d.startLabelRight="",d.startLabelLeft="",d.endLabelLeft="",d.endLabelRight="",d.arrowTypeStart="none",d.arrowTypeEnd="none",d.id=n+"-cyclic-special-mid",s.label="",s.startLabelRight="",s.startLabelLeft="",s.arrowTypeStart="none",i.isGroup&&(o.fromCluster=n,s.toCluster=n),s.id=n+"-cyclic-special-2",s.arrowTypeStart="none",t.setEdge(n,r,o,n+"-cyclic-special-0"),t.setEdge(r,a,d,n+"-cyclic-special-1"),t.setEdge(a,n,s,n+"-cyc<lic-special-2")}else t.setEdge(e.start,e.end,{...e},e.id)}),d.Rm.warn("Graph at first:",JSON.stringify(h(t))),I(t),d.Rm.warn("Graph after XAX:",JSON.stringify(h(t)));const s=(0,o.D7)();await O(i,t,e.type,e.diagramId,void 0,s)},"render")}}]); \ No newline at end of file diff --git a/docs/build/assets/js/786.6a9c60f0.js b/docs/build/assets/js/786.6a9c60f0.js deleted file mode 100644 index 22facca3d..000000000 --- a/docs/build/assets/js/786.6a9c60f0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[786],{786(a,e,r){r.d(e,{diagram:()=>o});var t=r(8213),s=r(3706),n=r(797),d=r(8731),i={version:"11.15.0"},o={parser:{parse:(0,n.K2)(async a=>{const e=await(0,d.qg)("info",a);n.Rm.debug(e)},"parse")},db:{getVersion:(0,n.K2)(()=>i.version,"getVersion")},renderer:{draw:(0,n.K2)((a,e,r)=>{n.Rm.debug("rendering info diagram\n"+a);const d=(0,t.D)(e);(0,s.a$)(d,100,400,!0);d.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${r}`)},"draw")}}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/7928.62dee32a.js b/docs/build/assets/js/7928.62dee32a.js deleted file mode 100644 index fb35bde79..000000000 --- a/docs/build/assets/js/7928.62dee32a.js +++ /dev/null @@ -1 +0,0 @@ -(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[7928],{7799(t,e,i){var r;r=function(t){return function(t){var e={};function i(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.exports,n,n.exports,i),n.l=!0,n.exports}return i.m=t,i.c=e,i.i=function(t){return t},i.d=function(t,e,r){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=7)}([function(e,i){e.exports=t},function(t,e,i){"use strict";var r=i(0).FDLayoutConstants;function n(){}for(var o in r)n[o]=r[o];n.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,n.DEFAULT_RADIAL_SEPARATION=r.DEFAULT_EDGE_LENGTH,n.DEFAULT_COMPONENT_SEPERATION=60,n.TILE=!0,n.TILING_PADDING_VERTICAL=10,n.TILING_PADDING_HORIZONTAL=10,n.TREE_REDUCTION_ON_INCREMENTAL=!1,t.exports=n},function(t,e,i){"use strict";var r=i(0).FDLayoutEdge;function n(t,e,i){r.call(this,t,e,i)}for(var o in n.prototype=Object.create(r.prototype),r)n[o]=r[o];t.exports=n},function(t,e,i){"use strict";var r=i(0).LGraph;function n(t,e,i){r.call(this,t,e,i)}for(var o in n.prototype=Object.create(r.prototype),r)n[o]=r[o];t.exports=n},function(t,e,i){"use strict";var r=i(0).LGraphManager;function n(t){r.call(this,t)}for(var o in n.prototype=Object.create(r.prototype),r)n[o]=r[o];t.exports=n},function(t,e,i){"use strict";var r=i(0).FDLayoutNode,n=i(0).IMath;function o(t,e,i,n){r.call(this,t,e,i,n)}for(var s in o.prototype=Object.create(r.prototype),r)o[s]=r[s];o.prototype.move=function(){var t=this.graphManager.getLayout();this.displacementX=t.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY=t.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren,Math.abs(this.displacementX)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementX=t.coolingFactor*t.maxNodeDisplacement*n.sign(this.displacementX)),Math.abs(this.displacementY)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementY=t.coolingFactor*t.maxNodeDisplacement*n.sign(this.displacementY)),null==this.child||0==this.child.getNodes().length?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),t.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},o.prototype.propogateDisplacementToChildren=function(t,e){for(var i,r=this.getChild().getNodes(),n=0;n<r.length;n++)null==(i=r[n]).getChild()?(i.moveBy(t,e),i.displacementX+=t,i.displacementY+=e):i.propogateDisplacementToChildren(t,e)},o.prototype.setPred1=function(t){this.pred1=t},o.prototype.getPred1=function(){return pred1},o.prototype.getPred2=function(){return pred2},o.prototype.setNext=function(t){this.next=t},o.prototype.getNext=function(){return next},o.prototype.setProcessed=function(t){this.processed=t},o.prototype.isProcessed=function(){return processed},t.exports=o},function(t,e,i){"use strict";var r=i(0).FDLayout,n=i(4),o=i(3),s=i(5),a=i(2),h=i(1),l=i(0).FDLayoutConstants,g=i(0).LayoutConstants,u=i(0).Point,c=i(0).PointD,d=i(0).Layout,p=i(0).Integer,f=i(0).IGeometry,y=i(0).LGraph,E=i(0).Transform;function v(){r.call(this),this.toBeTiled={}}for(var A in v.prototype=Object.create(r.prototype),r)v[A]=r[A];v.prototype.newGraphManager=function(){var t=new n(this);return this.graphManager=t,t},v.prototype.newGraph=function(t){return new o(null,this.graphManager,t)},v.prototype.newNode=function(t){return new s(this.graphManager,t)},v.prototype.newEdge=function(t){return new a(null,null,t)},v.prototype.initParameters=function(){r.prototype.initParameters.call(this,arguments),this.isSubLayout||(h.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=h.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=h.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.springConstant=l.DEFAULT_SPRING_STRENGTH,this.repulsionConstant=l.DEFAULT_REPULSION_STRENGTH,this.gravityConstant=l.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=l.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=l.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=l.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1,this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/l.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=l.CONVERGENCE_CHECK_PERIOD/this.maxIterations,this.coolingAdjuster=1)},v.prototype.layout=function(){return g.DEFAULT_CREATE_BENDS_AS_NEEDED&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},v.prototype.classicLayout=function(){if(this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),this.incremental)h.TREE_REDUCTION_ON_INCREMENTAL&&(this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation(),e=new Set(this.getAllNodes()),i=this.nodesWithGravity.filter(function(t){return e.has(t)}),this.graphManager.setAllNodesToApplyGravitation(i));else{var t=this.getFlatForest();if(t.length>0)this.positionNodesRadially(t);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var e=new Set(this.getAllNodes()),i=this.nodesWithGravity.filter(function(t){return e.has(t)});this.graphManager.setAllNodesToApplyGravitation(i),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},v.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished){if(!(this.prunedNodesAll.length>0))return!0;this.isTreeGrowing=!0}if(this.totalIterations%l.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged()){if(!(this.prunedNodesAll.length>0))return!0;this.isTreeGrowing=!0}this.coolingCycle++,0==this.layoutQuality?this.coolingAdjuster=this.coolingCycle:1==this.layoutQuality&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var t=new Set(this.getAllNodes()),e=this.nodesWithGravity.filter(function(e){return t.has(e)});this.graphManager.setAllNodesToApplyGravitation(e),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=l.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=l.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var i=!this.isTreeGrowing&&!this.isGrowthFinished,r=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(i,r),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},v.prototype.getPositionsData=function(){for(var t=this.graphManager.getAllNodes(),e={},i=0;i<t.length;i++){var r=t[i].rect,n=t[i].id;e[n]={id:n,x:r.getCenterX(),y:r.getCenterY(),w:r.width,h:r.height}}return e},v.prototype.runSpringEmbedder=function(){this.initialAnimationPeriod=25,this.animationPeriod=this.initialAnimationPeriod;var t=!1;if("during"===l.ANIMATE)this.emit("layoutstarted");else{for(;!t;)t=this.tick();this.graphManager.updateBounds()}},v.prototype.calculateNodesToApplyGravitationTo=function(){var t,e,i=[],r=this.graphManager.getGraphs(),n=r.length;for(e=0;e<n;e++)(t=r[e]).updateConnected(),t.isConnected||(i=i.concat(t.getNodes()));return i},v.prototype.createBendpoints=function(){var t=[];t=t.concat(this.graphManager.getAllEdges());var e,i=new Set;for(e=0;e<t.length;e++){var r=t[e];if(!i.has(r)){var n=r.getSource(),o=r.getTarget();if(n==o)r.getBendpoints().push(new c),r.getBendpoints().push(new c),this.createDummyNodesForBendpoints(r),i.add(r);else{var s=[];if(s=(s=s.concat(n.getEdgeListToNode(o))).concat(o.getEdgeListToNode(n)),!i.has(s[0])){var a;if(s.length>1)for(a=0;a<s.length;a++){var h=s[a];h.getBendpoints().push(new c),this.createDummyNodesForBendpoints(h)}s.forEach(function(t){i.add(t)})}}}if(i.size==t.length)break}},v.prototype.positionNodesRadially=function(t){for(var e=new u(0,0),i=Math.ceil(Math.sqrt(t.length)),r=0,n=0,o=0,s=new c(0,0),a=0;a<t.length;a++){a%i==0&&(o=0,n=r,0!=a&&(n+=h.DEFAULT_COMPONENT_SEPERATION),r=0);var l=t[a],p=d.findCenterOfTree(l);e.x=o,e.y=n,(s=v.radialLayout(l,p,e)).y>r&&(r=Math.floor(s.y)),o=Math.floor(s.x+h.DEFAULT_COMPONENT_SEPERATION)}this.transform(new c(g.WORLD_CENTER_X-s.x/2,g.WORLD_CENTER_Y-s.y/2))},v.radialLayout=function(t,e,i){var r=Math.max(this.maxDiagonalInTree(t),h.DEFAULT_RADIAL_SEPARATION);v.branchRadialLayout(e,null,0,359,0,r);var n=y.calculateBounds(t),o=new E;o.setDeviceOrgX(n.getMinX()),o.setDeviceOrgY(n.getMinY()),o.setWorldOrgX(i.x),o.setWorldOrgY(i.y);for(var s=0;s<t.length;s++)t[s].transform(o);var a=new c(n.getMaxX(),n.getMaxY());return o.inverseTransformPoint(a)},v.branchRadialLayout=function(t,e,i,r,n,o){var s=(r-i+1)/2;s<0&&(s+=180);var a=(s+i)%360*f.TWO_PI/360,h=(Math.cos(a),n*Math.cos(a)),l=n*Math.sin(a);t.setCenter(h,l);var g=[],u=(g=g.concat(t.getEdges())).length;null!=e&&u--;for(var c,d=0,p=g.length,y=t.getEdgesBetween(e);y.length>1;){var E=y[0];y.splice(0,1);var A=g.indexOf(E);A>=0&&g.splice(A,1),p--,u--}c=null!=e?(g.indexOf(y[0])+1)%p:0;for(var N=Math.abs(r-i)/u,T=c;d!=u;T=++T%p){var L=g[T].getOtherEnd(t);if(L!=e){var _=(i+d*N)%360,m=(_+N)%360;v.branchRadialLayout(L,t,_,m,n+o,o),d++}}},v.maxDiagonalInTree=function(t){for(var e=p.MIN_VALUE,i=0;i<t.length;i++){var r=t[i].getDiagonal();r>e&&(e=r)}return e},v.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},v.prototype.groupZeroDegreeMembers=function(){var t=this,e={};this.memberGroups={},this.idToDummyNode={};for(var i=[],r=this.graphManager.getAllNodes(),n=0;n<r.length;n++){var o=(a=r[n]).getParent();0!==this.getNodeDegreeWithChildren(a)||null!=o.id&&this.getToBeTiled(o)||i.push(a)}for(n=0;n<i.length;n++){var a,h=(a=i[n]).getParent().id;void 0===e[h]&&(e[h]=[]),e[h]=e[h].concat(a)}Object.keys(e).forEach(function(i){if(e[i].length>1){var r="DummyCompound_"+i;t.memberGroups[r]=e[i];var n=e[i][0].getParent(),o=new s(t.graphManager);o.id=r,o.paddingLeft=n.paddingLeft||0,o.paddingRight=n.paddingRight||0,o.paddingBottom=n.paddingBottom||0,o.paddingTop=n.paddingTop||0,t.idToDummyNode[r]=o;var a=t.getGraphManager().add(t.newGraph(),o),h=n.getChild();h.add(o);for(var l=0;l<e[i].length;l++){var g=e[i][l];h.remove(g),a.add(g)}}})},v.prototype.clearCompounds=function(){var t={},e={};this.performDFSOnCompounds();for(var i=0;i<this.compoundOrder.length;i++)e[this.compoundOrder[i].id]=this.compoundOrder[i],t[this.compoundOrder[i].id]=[].concat(this.compoundOrder[i].getChild().getNodes()),this.graphManager.remove(this.compoundOrder[i].getChild()),this.compoundOrder[i].child=null;this.graphManager.resetAllNodes(),this.tileCompoundMembers(t,e)},v.prototype.clearZeroDegreeMembers=function(){var t=this,e=this.tiledZeroDegreePack=[];Object.keys(this.memberGroups).forEach(function(i){var r=t.idToDummyNode[i];e[i]=t.tileNodes(t.memberGroups[i],r.paddingLeft+r.paddingRight),r.rect.width=e[i].width,r.rect.height=e[i].height})},v.prototype.repopulateCompounds=function(){for(var t=this.compoundOrder.length-1;t>=0;t--){var e=this.compoundOrder[t],i=e.id,r=e.paddingLeft,n=e.paddingTop;this.adjustLocations(this.tiledMemberPack[i],e.rect.x,e.rect.y,r,n)}},v.prototype.repopulateZeroDegreeMembers=function(){var t=this,e=this.tiledZeroDegreePack;Object.keys(e).forEach(function(i){var r=t.idToDummyNode[i],n=r.paddingLeft,o=r.paddingTop;t.adjustLocations(e[i],r.rect.x,r.rect.y,n,o)})},v.prototype.getToBeTiled=function(t){var e=t.id;if(null!=this.toBeTiled[e])return this.toBeTiled[e];var i=t.getChild();if(null==i)return this.toBeTiled[e]=!1,!1;for(var r=i.getNodes(),n=0;n<r.length;n++){var o=r[n];if(this.getNodeDegree(o)>0)return this.toBeTiled[e]=!1,!1;if(null!=o.getChild()){if(!this.getToBeTiled(o))return this.toBeTiled[e]=!1,!1}else this.toBeTiled[o.id]=!1}return this.toBeTiled[e]=!0,!0},v.prototype.getNodeDegree=function(t){t.id;for(var e=t.getEdges(),i=0,r=0;r<e.length;r++){var n=e[r];n.getSource().id!==n.getTarget().id&&(i+=1)}return i},v.prototype.getNodeDegreeWithChildren=function(t){var e=this.getNodeDegree(t);if(null==t.getChild())return e;for(var i=t.getChild().getNodes(),r=0;r<i.length;r++){var n=i[r];e+=this.getNodeDegreeWithChildren(n)}return e},v.prototype.performDFSOnCompounds=function(){this.compoundOrder=[],this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes())},v.prototype.fillCompexOrderByDFS=function(t){for(var e=0;e<t.length;e++){var i=t[e];null!=i.getChild()&&this.fillCompexOrderByDFS(i.getChild().getNodes()),this.getToBeTiled(i)&&this.compoundOrder.push(i)}},v.prototype.adjustLocations=function(t,e,i,r,n){i+=n;for(var o=e+=r,s=0;s<t.rows.length;s++){var a=t.rows[s];e=o;for(var h=0,l=0;l<a.length;l++){var g=a[l];g.rect.x=e,g.rect.y=i,e+=g.rect.width+t.horizontalPadding,g.rect.height>h&&(h=g.rect.height)}i+=h+t.verticalPadding}},v.prototype.tileCompoundMembers=function(t,e){var i=this;this.tiledMemberPack=[],Object.keys(t).forEach(function(r){var n=e[r];i.tiledMemberPack[r]=i.tileNodes(t[r],n.paddingLeft+n.paddingRight),n.rect.width=i.tiledMemberPack[r].width,n.rect.height=i.tiledMemberPack[r].height})},v.prototype.tileNodes=function(t,e){var i={rows:[],rowWidth:[],rowHeight:[],width:0,height:e,verticalPadding:h.TILING_PADDING_VERTICAL,horizontalPadding:h.TILING_PADDING_HORIZONTAL};t.sort(function(t,e){return t.rect.width*t.rect.height>e.rect.width*e.rect.height?-1:t.rect.width*t.rect.height<e.rect.width*e.rect.height?1:0});for(var r=0;r<t.length;r++){var n=t[r];0==i.rows.length?this.insertNodeToRow(i,n,0,e):this.canAddHorizontal(i,n.rect.width,n.rect.height)?this.insertNodeToRow(i,n,this.getShortestRowIndex(i),e):this.insertNodeToRow(i,n,i.rows.length,e),this.shiftToLastRow(i)}return i},v.prototype.insertNodeToRow=function(t,e,i,r){var n=r;i==t.rows.length&&(t.rows.push([]),t.rowWidth.push(n),t.rowHeight.push(0));var o=t.rowWidth[i]+e.rect.width;t.rows[i].length>0&&(o+=t.horizontalPadding),t.rowWidth[i]=o,t.width<o&&(t.width=o);var s=e.rect.height;i>0&&(s+=t.verticalPadding);var a=0;s>t.rowHeight[i]&&(a=t.rowHeight[i],t.rowHeight[i]=s,a=t.rowHeight[i]-a),t.height+=a,t.rows[i].push(e)},v.prototype.getShortestRowIndex=function(t){for(var e=-1,i=Number.MAX_VALUE,r=0;r<t.rows.length;r++)t.rowWidth[r]<i&&(e=r,i=t.rowWidth[r]);return e},v.prototype.getLongestRowIndex=function(t){for(var e=-1,i=Number.MIN_VALUE,r=0;r<t.rows.length;r++)t.rowWidth[r]>i&&(e=r,i=t.rowWidth[r]);return e},v.prototype.canAddHorizontal=function(t,e,i){var r=this.getShortestRowIndex(t);if(r<0)return!0;var n=t.rowWidth[r];if(n+t.horizontalPadding+e<=t.width)return!0;var o,s,a=0;return t.rowHeight[r]<i&&r>0&&(a=i+t.verticalPadding-t.rowHeight[r]),o=t.width-n>=e+t.horizontalPadding?(t.height+a)/(n+e+t.horizontalPadding):(t.height+a)/t.width,a=i+t.verticalPadding,(s=t.width<e?(t.height+a)/e:(t.height+a)/t.width)<1&&(s=1/s),o<1&&(o=1/o),o<s},v.prototype.shiftToLastRow=function(t){var e=this.getLongestRowIndex(t),i=t.rowWidth.length-1,r=t.rows[e],n=r[r.length-1],o=n.width+t.horizontalPadding;if(t.width-t.rowWidth[i]>o&&e!=i){r.splice(-1,1),t.rows[i].push(n),t.rowWidth[e]=t.rowWidth[e]-o,t.rowWidth[i]=t.rowWidth[i]+o,t.width=t.rowWidth[instance.getLongestRowIndex(t)];for(var s=Number.MIN_VALUE,a=0;a<r.length;a++)r[a].height>s&&(s=r[a].height);e>0&&(s+=t.verticalPadding);var h=t.rowHeight[e]+t.rowHeight[i];t.rowHeight[e]=s,t.rowHeight[i]<n.height+t.verticalPadding&&(t.rowHeight[i]=n.height+t.verticalPadding);var l=t.rowHeight[e]+t.rowHeight[i];t.height+=l-h,this.shiftToLastRow(t)}},v.prototype.tilingPreLayout=function(){h.TILE&&(this.groupZeroDegreeMembers(),this.clearCompounds(),this.clearZeroDegreeMembers())},v.prototype.tilingPostLayout=function(){h.TILE&&(this.repopulateZeroDegreeMembers(),this.repopulateCompounds())},v.prototype.reduceTrees=function(){for(var t,e=[],i=!0;i;){var r=this.graphManager.getAllNodes(),n=[];i=!1;for(var o=0;o<r.length;o++)1!=(t=r[o]).getEdges().length||t.getEdges()[0].isInterGraph||null!=t.getChild()||(n.push([t,t.getEdges()[0],t.getOwner()]),i=!0);if(1==i){for(var s=[],a=0;a<n.length;a++)1==n[a][0].getEdges().length&&(s.push(n[a]),n[a][0].getOwner().remove(n[a][0]));e.push(s),this.graphManager.resetAllNodes(),this.graphManager.resetAllEdges()}}this.prunedNodesAll=e},v.prototype.growTree=function(t){for(var e,i=t[t.length-1],r=0;r<i.length;r++)e=i[r],this.findPlaceforPrunedNode(e),e[2].add(e[0]),e[2].add(e[1],e[1].source,e[1].target);t.splice(t.length-1,1),this.graphManager.resetAllNodes(),this.graphManager.resetAllEdges()},v.prototype.findPlaceforPrunedNode=function(t){var e,i,r=t[0],n=(i=r==t[1].source?t[1].target:t[1].source).startX,o=i.finishX,s=i.startY,a=i.finishY,h=[0,0,0,0];if(s>0)for(var g=n;g<=o;g++)h[0]+=this.grid[g][s-1].length+this.grid[g][s].length-1;if(o<this.grid.length-1)for(g=s;g<=a;g++)h[1]+=this.grid[o+1][g].length+this.grid[o][g].length-1;if(a<this.grid[0].length-1)for(g=n;g<=o;g++)h[2]+=this.grid[g][a+1].length+this.grid[g][a].length-1;if(n>0)for(g=s;g<=a;g++)h[3]+=this.grid[n-1][g].length+this.grid[n][g].length-1;for(var u,c,d=p.MAX_VALUE,f=0;f<h.length;f++)h[f]<d?(d=h[f],u=1,c=f):h[f]==d&&u++;if(3==u&&0==d)0==h[0]&&0==h[1]&&0==h[2]?e=1:0==h[0]&&0==h[1]&&0==h[3]?e=0:0==h[0]&&0==h[2]&&0==h[3]?e=3:0==h[1]&&0==h[2]&&0==h[3]&&(e=2);else if(2==u&&0==d){var y=Math.floor(2*Math.random());e=0==h[0]&&0==h[1]?0==y?0:1:0==h[0]&&0==h[2]?0==y?0:2:0==h[0]&&0==h[3]?0==y?0:3:0==h[1]&&0==h[2]?0==y?1:2:0==h[1]&&0==h[3]?0==y?1:3:0==y?2:3}else e=4==u&&0==d?y=Math.floor(4*Math.random()):c;0==e?r.setCenter(i.getCenterX(),i.getCenterY()-i.getHeight()/2-l.DEFAULT_EDGE_LENGTH-r.getHeight()/2):1==e?r.setCenter(i.getCenterX()+i.getWidth()/2+l.DEFAULT_EDGE_LENGTH+r.getWidth()/2,i.getCenterY()):2==e?r.setCenter(i.getCenterX(),i.getCenterY()+i.getHeight()/2+l.DEFAULT_EDGE_LENGTH+r.getHeight()/2):r.setCenter(i.getCenterX()-i.getWidth()/2-l.DEFAULT_EDGE_LENGTH-r.getWidth()/2,i.getCenterY())},t.exports=v},function(t,e,i){"use strict";var r={};r.layoutBase=i(0),r.CoSEConstants=i(1),r.CoSEEdge=i(2),r.CoSEGraph=i(3),r.CoSEGraphManager=i(4),r.CoSELayout=i(6),r.CoSENode=i(5),t.exports=r}])},t.exports=r(i(3143))},3457(t,e,i){var r;r=function(t){return function(t){var e={};function i(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.exports,n,n.exports,i),n.l=!0,n.exports}return i.m=t,i.c=e,i.i=function(t){return t},i.d=function(t,e,r){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=1)}([function(e,i){e.exports=t},function(t,e,i){"use strict";var r=i(0).layoutBase.LayoutConstants,n=i(0).layoutBase.FDLayoutConstants,o=i(0).CoSEConstants,s=i(0).CoSELayout,a=i(0).CoSENode,h=i(0).layoutBase.PointD,l=i(0).layoutBase.DimensionD,g={ready:function(){},stop:function(){},quality:"default",nodeDimensionsIncludeLabels:!1,refresh:30,fit:!0,padding:10,randomize:!0,nodeRepulsion:4500,idealEdgeLength:50,edgeElasticity:.45,nestingFactor:.1,gravity:.25,numIter:2500,tile:!0,animate:"end",animationDuration:500,tilingPaddingVertical:10,tilingPaddingHorizontal:10,gravityRangeCompound:1.5,gravityCompound:1,gravityRange:3.8,initialEnergyOnIncremental:.5};function u(t){this.options=function(t,e){var i={};for(var r in t)i[r]=t[r];for(var r in e)i[r]=e[r];return i}(g,t),c(this.options)}var c=function(t){null!=t.nodeRepulsion&&(o.DEFAULT_REPULSION_STRENGTH=n.DEFAULT_REPULSION_STRENGTH=t.nodeRepulsion),null!=t.idealEdgeLength&&(o.DEFAULT_EDGE_LENGTH=n.DEFAULT_EDGE_LENGTH=t.idealEdgeLength),null!=t.edgeElasticity&&(o.DEFAULT_SPRING_STRENGTH=n.DEFAULT_SPRING_STRENGTH=t.edgeElasticity),null!=t.nestingFactor&&(o.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=n.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=t.nestingFactor),null!=t.gravity&&(o.DEFAULT_GRAVITY_STRENGTH=n.DEFAULT_GRAVITY_STRENGTH=t.gravity),null!=t.numIter&&(o.MAX_ITERATIONS=n.MAX_ITERATIONS=t.numIter),null!=t.gravityRange&&(o.DEFAULT_GRAVITY_RANGE_FACTOR=n.DEFAULT_GRAVITY_RANGE_FACTOR=t.gravityRange),null!=t.gravityCompound&&(o.DEFAULT_COMPOUND_GRAVITY_STRENGTH=n.DEFAULT_COMPOUND_GRAVITY_STRENGTH=t.gravityCompound),null!=t.gravityRangeCompound&&(o.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=n.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=t.gravityRangeCompound),null!=t.initialEnergyOnIncremental&&(o.DEFAULT_COOLING_FACTOR_INCREMENTAL=n.DEFAULT_COOLING_FACTOR_INCREMENTAL=t.initialEnergyOnIncremental),"draft"==t.quality?r.QUALITY=0:"proof"==t.quality?r.QUALITY=2:r.QUALITY=1,o.NODE_DIMENSIONS_INCLUDE_LABELS=n.NODE_DIMENSIONS_INCLUDE_LABELS=r.NODE_DIMENSIONS_INCLUDE_LABELS=t.nodeDimensionsIncludeLabels,o.DEFAULT_INCREMENTAL=n.DEFAULT_INCREMENTAL=r.DEFAULT_INCREMENTAL=!t.randomize,o.ANIMATE=n.ANIMATE=r.ANIMATE=t.animate,o.TILE=t.tile,o.TILING_PADDING_VERTICAL="function"==typeof t.tilingPaddingVertical?t.tilingPaddingVertical.call():t.tilingPaddingVertical,o.TILING_PADDING_HORIZONTAL="function"==typeof t.tilingPaddingHorizontal?t.tilingPaddingHorizontal.call():t.tilingPaddingHorizontal};u.prototype.run=function(){var t,e,i=this.options,r=(this.idToLNode={},this.layout=new s),n=this;n.stopped=!1,this.cy=this.options.cy,this.cy.trigger({type:"layoutstart",layout:this});var o=r.newGraphManager();this.gm=o;var a=this.options.eles.nodes(),h=this.options.eles.edges();this.root=o.addRoot(),this.processChildrenList(this.root,this.getTopMostNodes(a),r);for(var l=0;l<h.length;l++){var g=h[l],u=this.idToLNode[g.data("source")],c=this.idToLNode[g.data("target")];u!==c&&0==u.getEdgesBetween(c).length&&(o.add(r.newEdge(),u,c).id=g.id())}var d=function(t,e){"number"==typeof t&&(t=e);var i=t.data("id"),r=n.idToLNode[i];return{x:r.getRect().getCenterX(),y:r.getRect().getCenterY()}},p=function o(){for(var s,a=function(){i.fit&&i.cy.fit(i.eles,i.padding),t||(t=!0,n.cy.one("layoutready",i.ready),n.cy.trigger({type:"layoutready",layout:n}))},h=n.options.refresh,l=0;l<h&&!s;l++)s=n.stopped||n.layout.tick();if(s)return r.checkLayoutSuccess()&&!r.isSubLayout&&r.doPostLayout(),r.tilingPostLayout&&r.tilingPostLayout(),r.isLayoutFinished=!0,n.options.eles.nodes().positions(d),a(),n.cy.one("layoutstop",n.options.stop),n.cy.trigger({type:"layoutstop",layout:n}),e&&cancelAnimationFrame(e),void(t=!1);var g=n.layout.getPositionsData();i.eles.nodes().positions(function(t,e){if("number"==typeof t&&(t=e),!t.isParent()){for(var i=t.id(),r=g[i],n=t;null==r&&(r=g[n.data("parent")]||g["DummyCompound_"+n.data("parent")],g[i]=r,null!=(n=n.parent()[0])););return null!=r?{x:r.x,y:r.y}:{x:t.position("x"),y:t.position("y")}}}),a(),e=requestAnimationFrame(o)};return r.addListener("layoutstarted",function(){"during"===n.options.animate&&(e=requestAnimationFrame(p))}),r.runLayout(),"during"!==this.options.animate&&(n.options.eles.nodes().not(":parent").layoutPositions(n,n.options,d),t=!1),this},u.prototype.getTopMostNodes=function(t){for(var e={},i=0;i<t.length;i++)e[t[i].id()]=!0;var r=t.filter(function(t,i){"number"==typeof t&&(t=i);for(var r=t.parent()[0];null!=r;){if(e[r.id()])return!1;r=r.parent()[0]}return!0});return r},u.prototype.processChildrenList=function(t,e,i){for(var r=e.length,n=0;n<r;n++){var o,s,g=e[n],u=g.children(),c=g.layoutDimensions({nodeDimensionsIncludeLabels:this.options.nodeDimensionsIncludeLabels});if((o=null!=g.outerWidth()&&null!=g.outerHeight()?t.add(new a(i.graphManager,new h(g.position("x")-c.w/2,g.position("y")-c.h/2),new l(parseFloat(c.w),parseFloat(c.h)))):t.add(new a(this.graphManager))).id=g.data("id"),o.paddingLeft=parseInt(g.css("padding")),o.paddingTop=parseInt(g.css("padding")),o.paddingRight=parseInt(g.css("padding")),o.paddingBottom=parseInt(g.css("padding")),this.options.nodeDimensionsIncludeLabels&&g.isParent()){var d=g.boundingBox({includeLabels:!0,includeNodes:!1}).w,p=g.boundingBox({includeLabels:!0,includeNodes:!1}).h,f=g.css("text-halign");o.labelWidth=d,o.labelHeight=p,o.labelPos=f}this.idToLNode[g.data("id")]=o,isNaN(o.rect.x)&&(o.rect.x=0),isNaN(o.rect.y)&&(o.rect.y=0),null!=u&&u.length>0&&(s=i.getGraphManager().add(i.newGraph(),o),this.processChildrenList(s,u,i))}},u.prototype.stop=function(){return this.stopped=!0,this};var d=function(t){t("layout","cose-bilkent",u)};"undefined"!=typeof cytoscape&&d(cytoscape),t.exports=d}])},t.exports=r(i(7799))},3143(t){var e;e=function(){return function(t){var e={};function i(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.exports,n,n.exports,i),n.l=!0,n.exports}return i.m=t,i.c=e,i.i=function(t){return t},i.d=function(t,e,r){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=26)}([function(t,e,i){"use strict";function r(){}r.QUALITY=1,r.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,r.DEFAULT_INCREMENTAL=!1,r.DEFAULT_ANIMATION_ON_LAYOUT=!0,r.DEFAULT_ANIMATION_DURING_LAYOUT=!1,r.DEFAULT_ANIMATION_PERIOD=50,r.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,r.DEFAULT_GRAPH_MARGIN=15,r.NODE_DIMENSIONS_INCLUDE_LABELS=!1,r.SIMPLE_NODE_SIZE=40,r.SIMPLE_NODE_HALF_SIZE=r.SIMPLE_NODE_SIZE/2,r.EMPTY_COMPOUND_NODE_SIZE=40,r.MIN_EDGE_LENGTH=1,r.WORLD_BOUNDARY=1e6,r.INITIAL_WORLD_BOUNDARY=r.WORLD_BOUNDARY/1e3,r.WORLD_CENTER_X=1200,r.WORLD_CENTER_Y=900,t.exports=r},function(t,e,i){"use strict";var r=i(2),n=i(8),o=i(9);function s(t,e,i){r.call(this,i),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=i,this.bendpoints=[],this.source=t,this.target=e}for(var a in s.prototype=Object.create(r.prototype),r)s[a]=r[a];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(t){if(this.source===t)return this.target;if(this.target===t)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(t,e){for(var i=this.getOtherEnd(t),r=e.getGraphManager().getRoot();;){if(i.getOwner()==e)return i;if(i.getOwner()==r)break;i=i.getOwner().getParent()}return null},s.prototype.updateLength=function(){var t=new Array(4);this.isOverlapingSourceAndTarget=n.getIntersection(this.target.getRect(),this.source.getRect(),t),this.isOverlapingSourceAndTarget||(this.lengthX=t[0]-t[2],this.lengthY=t[1]-t[3],Math.abs(this.lengthX)<1&&(this.lengthX=o.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=o.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=o.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=o.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},t.exports=s},function(t,e,i){"use strict";t.exports=function(t){this.vGraphObject=t}},function(t,e,i){"use strict";var r=i(2),n=i(10),o=i(13),s=i(0),a=i(16),h=i(4);function l(t,e,i,s){null==i&&null==s&&(s=e),r.call(this,s),null!=t.graphManager&&(t=t.graphManager),this.estimatedSize=n.MIN_VALUE,this.inclusionTreeDepth=n.MAX_VALUE,this.vGraphObject=s,this.edges=[],this.graphManager=t,this.rect=null!=i&&null!=e?new o(e.x,e.y,i.width,i.height):new o}for(var g in l.prototype=Object.create(r.prototype),r)l[g]=r[g];l.prototype.getEdges=function(){return this.edges},l.prototype.getChild=function(){return this.child},l.prototype.getOwner=function(){return this.owner},l.prototype.getWidth=function(){return this.rect.width},l.prototype.setWidth=function(t){this.rect.width=t},l.prototype.getHeight=function(){return this.rect.height},l.prototype.setHeight=function(t){this.rect.height=t},l.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},l.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},l.prototype.getCenter=function(){return new h(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},l.prototype.getLocation=function(){return new h(this.rect.x,this.rect.y)},l.prototype.getRect=function(){return this.rect},l.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},l.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},l.prototype.setRect=function(t,e){this.rect.x=t.x,this.rect.y=t.y,this.rect.width=e.width,this.rect.height=e.height},l.prototype.setCenter=function(t,e){this.rect.x=t-this.rect.width/2,this.rect.y=e-this.rect.height/2},l.prototype.setLocation=function(t,e){this.rect.x=t,this.rect.y=e},l.prototype.moveBy=function(t,e){this.rect.x+=t,this.rect.y+=e},l.prototype.getEdgeListToNode=function(t){var e=[],i=this;return i.edges.forEach(function(r){if(r.target==t){if(r.source!=i)throw"Incorrect edge source!";e.push(r)}}),e},l.prototype.getEdgesBetween=function(t){var e=[],i=this;return i.edges.forEach(function(r){if(r.source!=i&&r.target!=i)throw"Incorrect edge source and/or target";r.target!=t&&r.source!=t||e.push(r)}),e},l.prototype.getNeighborsList=function(){var t=new Set,e=this;return e.edges.forEach(function(i){if(i.source==e)t.add(i.target);else{if(i.target!=e)throw"Incorrect incidency!";t.add(i.source)}}),t},l.prototype.withChildren=function(){var t=new Set;if(t.add(this),null!=this.child)for(var e=this.child.getNodes(),i=0;i<e.length;i++)e[i].withChildren().forEach(function(e){t.add(e)});return t},l.prototype.getNoOfChildren=function(){var t=0;if(null==this.child)t=1;else for(var e=this.child.getNodes(),i=0;i<e.length;i++)t+=e[i].getNoOfChildren();return 0==t&&(t=1),t},l.prototype.getEstimatedSize=function(){if(this.estimatedSize==n.MIN_VALUE)throw"assert failed";return this.estimatedSize},l.prototype.calcEstimatedSize=function(){return null==this.child?this.estimatedSize=(this.rect.width+this.rect.height)/2:(this.estimatedSize=this.child.calcEstimatedSize(),this.rect.width=this.estimatedSize,this.rect.height=this.estimatedSize,this.estimatedSize)},l.prototype.scatter=function(){var t,e,i=-s.INITIAL_WORLD_BOUNDARY,r=s.INITIAL_WORLD_BOUNDARY;t=s.WORLD_CENTER_X+a.nextDouble()*(r-i)+i;var n=-s.INITIAL_WORLD_BOUNDARY,o=s.INITIAL_WORLD_BOUNDARY;e=s.WORLD_CENTER_Y+a.nextDouble()*(o-n)+n,this.rect.x=t,this.rect.y=e},l.prototype.updateBounds=function(){if(null==this.getChild())throw"assert failed";if(0!=this.getChild().getNodes().length){var t=this.getChild();if(t.updateBounds(!0),this.rect.x=t.getLeft(),this.rect.y=t.getTop(),this.setWidth(t.getRight()-t.getLeft()),this.setHeight(t.getBottom()-t.getTop()),s.NODE_DIMENSIONS_INCLUDE_LABELS){var e=t.getRight()-t.getLeft(),i=t.getBottom()-t.getTop();this.labelWidth>e&&(this.rect.x-=(this.labelWidth-e)/2,this.setWidth(this.labelWidth)),this.labelHeight>i&&("center"==this.labelPos?this.rect.y-=(this.labelHeight-i)/2:"top"==this.labelPos&&(this.rect.y-=this.labelHeight-i),this.setHeight(this.labelHeight))}}},l.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==n.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},l.prototype.transform=function(t){var e=this.rect.x;e>s.WORLD_BOUNDARY?e=s.WORLD_BOUNDARY:e<-s.WORLD_BOUNDARY&&(e=-s.WORLD_BOUNDARY);var i=this.rect.y;i>s.WORLD_BOUNDARY?i=s.WORLD_BOUNDARY:i<-s.WORLD_BOUNDARY&&(i=-s.WORLD_BOUNDARY);var r=new h(e,i),n=t.inverseTransformPoint(r);this.setLocation(n.x,n.y)},l.prototype.getLeft=function(){return this.rect.x},l.prototype.getRight=function(){return this.rect.x+this.rect.width},l.prototype.getTop=function(){return this.rect.y},l.prototype.getBottom=function(){return this.rect.y+this.rect.height},l.prototype.getParent=function(){return null==this.owner?null:this.owner.getParent()},t.exports=l},function(t,e,i){"use strict";function r(t,e){null==t&&null==e?(this.x=0,this.y=0):(this.x=t,this.y=e)}r.prototype.getX=function(){return this.x},r.prototype.getY=function(){return this.y},r.prototype.setX=function(t){this.x=t},r.prototype.setY=function(t){this.y=t},r.prototype.getDifference=function(t){return new DimensionD(this.x-t.x,this.y-t.y)},r.prototype.getCopy=function(){return new r(this.x,this.y)},r.prototype.translate=function(t){return this.x+=t.width,this.y+=t.height,this},t.exports=r},function(t,e,i){"use strict";var r=i(2),n=i(10),o=i(0),s=i(6),a=i(3),h=i(1),l=i(13),g=i(12),u=i(11);function c(t,e,i){r.call(this,i),this.estimatedSize=n.MIN_VALUE,this.margin=o.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=t,null!=e&&e instanceof s?this.graphManager=e:null!=e&&e instanceof Layout&&(this.graphManager=e.graphManager)}for(var d in c.prototype=Object.create(r.prototype),r)c[d]=r[d];c.prototype.getNodes=function(){return this.nodes},c.prototype.getEdges=function(){return this.edges},c.prototype.getGraphManager=function(){return this.graphManager},c.prototype.getParent=function(){return this.parent},c.prototype.getLeft=function(){return this.left},c.prototype.getRight=function(){return this.right},c.prototype.getTop=function(){return this.top},c.prototype.getBottom=function(){return this.bottom},c.prototype.isConnected=function(){return this.isConnected},c.prototype.add=function(t,e,i){if(null==e&&null==i){var r=t;if(null==this.graphManager)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(r)>-1)throw"Node already in graph!";return r.owner=this,this.getNodes().push(r),r}var n=t;if(!(this.getNodes().indexOf(e)>-1&&this.getNodes().indexOf(i)>-1))throw"Source or target not in graph!";if(e.owner!=i.owner||e.owner!=this)throw"Both owners must be this graph!";return e.owner!=i.owner?null:(n.source=e,n.target=i,n.isInterGraph=!1,this.getEdges().push(n),e.edges.push(n),i!=e&&i.edges.push(n),n)},c.prototype.remove=function(t){var e=t;if(t instanceof a){if(null==e)throw"Node is null!";if(null==e.owner||e.owner!=this)throw"Owner graph is invalid!";if(null==this.graphManager)throw"Owner graph manager is invalid!";for(var i=e.edges.slice(),r=i.length,n=0;n<r;n++)(o=i[n]).isInterGraph?this.graphManager.remove(o):o.source.owner.remove(o);if(-1==(s=this.nodes.indexOf(e)))throw"Node not in owner node list!";this.nodes.splice(s,1)}else if(t instanceof h){var o;if(null==(o=t))throw"Edge is null!";if(null==o.source||null==o.target)throw"Source and/or target is null!";if(null==o.source.owner||null==o.target.owner||o.source.owner!=this||o.target.owner!=this)throw"Source and/or target owner is invalid!";var s,l=o.source.edges.indexOf(o),g=o.target.edges.indexOf(o);if(!(l>-1&&g>-1))throw"Source and/or target doesn't know this edge!";if(o.source.edges.splice(l,1),o.target!=o.source&&o.target.edges.splice(g,1),-1==(s=o.source.owner.getEdges().indexOf(o)))throw"Not in owner's edge list!";o.source.owner.getEdges().splice(s,1)}},c.prototype.updateLeftTop=function(){for(var t,e,i,r=n.MAX_VALUE,o=n.MAX_VALUE,s=this.getNodes(),a=s.length,h=0;h<a;h++){var l=s[h];r>(t=l.getTop())&&(r=t),o>(e=l.getLeft())&&(o=e)}return r==n.MAX_VALUE?null:(i=null!=s[0].getParent().paddingLeft?s[0].getParent().paddingLeft:this.margin,this.left=o-i,this.top=r-i,new g(this.left,this.top))},c.prototype.updateBounds=function(t){for(var e,i,r,o,s,a=n.MAX_VALUE,h=-n.MAX_VALUE,g=n.MAX_VALUE,u=-n.MAX_VALUE,c=this.nodes,d=c.length,p=0;p<d;p++){var f=c[p];t&&null!=f.child&&f.updateBounds(),a>(e=f.getLeft())&&(a=e),h<(i=f.getRight())&&(h=i),g>(r=f.getTop())&&(g=r),u<(o=f.getBottom())&&(u=o)}var y=new l(a,g,h-a,u-g);a==n.MAX_VALUE&&(this.left=this.parent.getLeft(),this.right=this.parent.getRight(),this.top=this.parent.getTop(),this.bottom=this.parent.getBottom()),s=null!=c[0].getParent().paddingLeft?c[0].getParent().paddingLeft:this.margin,this.left=y.x-s,this.right=y.x+y.width+s,this.top=y.y-s,this.bottom=y.y+y.height+s},c.calculateBounds=function(t){for(var e,i,r,o,s=n.MAX_VALUE,a=-n.MAX_VALUE,h=n.MAX_VALUE,g=-n.MAX_VALUE,u=t.length,c=0;c<u;c++){var d=t[c];s>(e=d.getLeft())&&(s=e),a<(i=d.getRight())&&(a=i),h>(r=d.getTop())&&(h=r),g<(o=d.getBottom())&&(g=o)}return new l(s,h,a-s,g-h)},c.prototype.getInclusionTreeDepth=function(){return this==this.graphManager.getRoot()?1:this.parent.getInclusionTreeDepth()},c.prototype.getEstimatedSize=function(){if(this.estimatedSize==n.MIN_VALUE)throw"assert failed";return this.estimatedSize},c.prototype.calcEstimatedSize=function(){for(var t=0,e=this.nodes,i=e.length,r=0;r<i;r++)t+=e[r].calcEstimatedSize();return this.estimatedSize=0==t?o.EMPTY_COMPOUND_NODE_SIZE:t/Math.sqrt(this.nodes.length),this.estimatedSize},c.prototype.updateConnected=function(){var t=this;if(0!=this.nodes.length){var e,i,r=new u,n=new Set,o=this.nodes[0];for(o.withChildren().forEach(function(t){r.push(t),n.add(t)});0!==r.length;)for(var s=(e=(o=r.shift()).getEdges()).length,a=0;a<s;a++)null==(i=e[a].getOtherEndInGraph(o,this))||n.has(i)||i.withChildren().forEach(function(t){r.push(t),n.add(t)});if(this.isConnected=!1,n.size>=this.nodes.length){var h=0;n.forEach(function(e){e.owner==t&&h++}),h==this.nodes.length&&(this.isConnected=!0)}}else this.isConnected=!0},t.exports=c},function(t,e,i){"use strict";var r,n=i(1);function o(t){r=i(5),this.layout=t,this.graphs=[],this.edges=[]}o.prototype.addRoot=function(){var t=this.layout.newGraph(),e=this.layout.newNode(null),i=this.add(t,e);return this.setRootGraph(i),this.rootGraph},o.prototype.add=function(t,e,i,r,n){if(null==i&&null==r&&null==n){if(null==t)throw"Graph is null!";if(null==e)throw"Parent node is null!";if(this.graphs.indexOf(t)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(t),null!=t.parent)throw"Already has a parent!";if(null!=e.child)throw"Already has a child!";return t.parent=e,e.child=t,t}n=i,i=t;var o=(r=e).getOwner(),s=n.getOwner();if(null==o||o.getGraphManager()!=this)throw"Source not in this graph mgr!";if(null==s||s.getGraphManager()!=this)throw"Target not in this graph mgr!";if(o==s)return i.isInterGraph=!1,o.add(i,r,n);if(i.isInterGraph=!0,i.source=r,i.target=n,this.edges.indexOf(i)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(i),null==i.source||null==i.target)throw"Edge source and/or target is null!";if(-1!=i.source.edges.indexOf(i)||-1!=i.target.edges.indexOf(i))throw"Edge already in source and/or target incidency list!";return i.source.edges.push(i),i.target.edges.push(i),i},o.prototype.remove=function(t){if(t instanceof r){var e=t;if(e.getGraphManager()!=this)throw"Graph not in this graph mgr";if(e!=this.rootGraph&&(null==e.parent||e.parent.graphManager!=this))throw"Invalid parent node!";for(var i,o=[],s=(o=o.concat(e.getEdges())).length,a=0;a<s;a++)i=o[a],e.remove(i);var h,l=[];for(s=(l=l.concat(e.getNodes())).length,a=0;a<s;a++)h=l[a],e.remove(h);e==this.rootGraph&&this.setRootGraph(null);var g=this.graphs.indexOf(e);this.graphs.splice(g,1),e.parent=null}else if(t instanceof n){if(null==(i=t))throw"Edge is null!";if(!i.isInterGraph)throw"Not an inter-graph edge!";if(null==i.source||null==i.target)throw"Source and/or target is null!";if(-1==i.source.edges.indexOf(i)||-1==i.target.edges.indexOf(i))throw"Source and/or target doesn't know this edge!";if(g=i.source.edges.indexOf(i),i.source.edges.splice(g,1),g=i.target.edges.indexOf(i),i.target.edges.splice(g,1),null==i.source.owner||null==i.source.owner.getGraphManager())throw"Edge owner graph or owner graph manager is null!";if(-1==i.source.owner.getGraphManager().edges.indexOf(i))throw"Not in owner graph manager's edge list!";g=i.source.owner.getGraphManager().edges.indexOf(i),i.source.owner.getGraphManager().edges.splice(g,1)}},o.prototype.updateBounds=function(){this.rootGraph.updateBounds(!0)},o.prototype.getGraphs=function(){return this.graphs},o.prototype.getAllNodes=function(){if(null==this.allNodes){for(var t=[],e=this.getGraphs(),i=e.length,r=0;r<i;r++)t=t.concat(e[r].getNodes());this.allNodes=t}return this.allNodes},o.prototype.resetAllNodes=function(){this.allNodes=null},o.prototype.resetAllEdges=function(){this.allEdges=null},o.prototype.resetAllNodesToApplyGravitation=function(){this.allNodesToApplyGravitation=null},o.prototype.getAllEdges=function(){if(null==this.allEdges){for(var t=[],e=this.getGraphs(),i=(e.length,0);i<e.length;i++)t=t.concat(e[i].getEdges());t=t.concat(this.edges),this.allEdges=t}return this.allEdges},o.prototype.getAllNodesToApplyGravitation=function(){return this.allNodesToApplyGravitation},o.prototype.setAllNodesToApplyGravitation=function(t){if(null!=this.allNodesToApplyGravitation)throw"assert failed";this.allNodesToApplyGravitation=t},o.prototype.getRoot=function(){return this.rootGraph},o.prototype.setRootGraph=function(t){if(t.getGraphManager()!=this)throw"Root not in this graph mgr!";this.rootGraph=t,null==t.parent&&(t.parent=this.layout.newNode("Root node"))},o.prototype.getLayout=function(){return this.layout},o.prototype.isOneAncestorOfOther=function(t,e){if(null==t||null==e)throw"assert failed";if(t==e)return!0;for(var i,r=t.getOwner();null!=(i=r.getParent());){if(i==e)return!0;if(null==(r=i.getOwner()))break}for(r=e.getOwner();null!=(i=r.getParent());){if(i==t)return!0;if(null==(r=i.getOwner()))break}return!1},o.prototype.calcLowestCommonAncestors=function(){for(var t,e,i,r,n,o=this.getAllEdges(),s=o.length,a=0;a<s;a++)if(e=(t=o[a]).source,i=t.target,t.lca=null,t.sourceInLca=e,t.targetInLca=i,e!=i){for(r=e.getOwner();null==t.lca;){for(t.targetInLca=i,n=i.getOwner();null==t.lca;){if(n==r){t.lca=n;break}if(n==this.rootGraph)break;if(null!=t.lca)throw"assert failed";t.targetInLca=n.getParent(),n=t.targetInLca.getOwner()}if(r==this.rootGraph)break;null==t.lca&&(t.sourceInLca=r.getParent(),r=t.sourceInLca.getOwner())}if(null==t.lca)throw"assert failed"}else t.lca=e.getOwner()},o.prototype.calcLowestCommonAncestor=function(t,e){if(t==e)return t.getOwner();for(var i=t.getOwner();null!=i;){for(var r=e.getOwner();null!=r;){if(r==i)return r;r=r.getParent().getOwner()}i=i.getParent().getOwner()}return i},o.prototype.calcInclusionTreeDepths=function(t,e){var i;null==t&&null==e&&(t=this.rootGraph,e=1);for(var r=t.getNodes(),n=r.length,o=0;o<n;o++)(i=r[o]).inclusionTreeDepth=e,null!=i.child&&this.calcInclusionTreeDepths(i.child,e+1)},o.prototype.includesInvalidEdge=function(){for(var t,e=this.edges.length,i=0;i<e;i++)if(t=this.edges[i],this.isOneAncestorOfOther(t.source,t.target))return!0;return!1},t.exports=o},function(t,e,i){"use strict";var r=i(0);function n(){}for(var o in r)n[o]=r[o];n.MAX_ITERATIONS=2500,n.DEFAULT_EDGE_LENGTH=50,n.DEFAULT_SPRING_STRENGTH=.45,n.DEFAULT_REPULSION_STRENGTH=4500,n.DEFAULT_GRAVITY_STRENGTH=.4,n.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,n.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,n.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,n.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,n.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,n.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,n.COOLING_ADAPTATION_FACTOR=.33,n.ADAPTATION_LOWER_NODE_LIMIT=1e3,n.ADAPTATION_UPPER_NODE_LIMIT=5e3,n.MAX_NODE_DISPLACEMENT_INCREMENTAL=100,n.MAX_NODE_DISPLACEMENT=3*n.MAX_NODE_DISPLACEMENT_INCREMENTAL,n.MIN_REPULSION_DIST=n.DEFAULT_EDGE_LENGTH/10,n.CONVERGENCE_CHECK_PERIOD=100,n.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,n.MIN_EDGE_LENGTH=1,n.GRID_CALCULATION_CHECK_PERIOD=10,t.exports=n},function(t,e,i){"use strict";var r=i(12);function n(){}n.calcSeparationAmount=function(t,e,i,r){if(!t.intersects(e))throw"assert failed";var n=new Array(2);this.decideDirectionsForOverlappingNodes(t,e,n),i[0]=Math.min(t.getRight(),e.getRight())-Math.max(t.x,e.x),i[1]=Math.min(t.getBottom(),e.getBottom())-Math.max(t.y,e.y),t.getX()<=e.getX()&&t.getRight()>=e.getRight()?i[0]+=Math.min(e.getX()-t.getX(),t.getRight()-e.getRight()):e.getX()<=t.getX()&&e.getRight()>=t.getRight()&&(i[0]+=Math.min(t.getX()-e.getX(),e.getRight()-t.getRight())),t.getY()<=e.getY()&&t.getBottom()>=e.getBottom()?i[1]+=Math.min(e.getY()-t.getY(),t.getBottom()-e.getBottom()):e.getY()<=t.getY()&&e.getBottom()>=t.getBottom()&&(i[1]+=Math.min(t.getY()-e.getY(),e.getBottom()-t.getBottom()));var o=Math.abs((e.getCenterY()-t.getCenterY())/(e.getCenterX()-t.getCenterX()));e.getCenterY()===t.getCenterY()&&e.getCenterX()===t.getCenterX()&&(o=1);var s=o*i[0],a=i[1]/o;i[0]<a?a=i[0]:s=i[1],i[0]=-1*n[0]*(a/2+r),i[1]=-1*n[1]*(s/2+r)},n.decideDirectionsForOverlappingNodes=function(t,e,i){t.getCenterX()<e.getCenterX()?i[0]=-1:i[0]=1,t.getCenterY()<e.getCenterY()?i[1]=-1:i[1]=1},n.getIntersection2=function(t,e,i){var r=t.getCenterX(),n=t.getCenterY(),o=e.getCenterX(),s=e.getCenterY();if(t.intersects(e))return i[0]=r,i[1]=n,i[2]=o,i[3]=s,!0;var a=t.getX(),h=t.getY(),l=t.getRight(),g=t.getX(),u=t.getBottom(),c=t.getRight(),d=t.getWidthHalf(),p=t.getHeightHalf(),f=e.getX(),y=e.getY(),E=e.getRight(),v=e.getX(),A=e.getBottom(),N=e.getRight(),T=e.getWidthHalf(),L=e.getHeightHalf(),_=!1,m=!1;if(r===o){if(n>s)return i[0]=r,i[1]=h,i[2]=o,i[3]=A,!1;if(n<s)return i[0]=r,i[1]=u,i[2]=o,i[3]=y,!1}else if(n===s){if(r>o)return i[0]=a,i[1]=n,i[2]=E,i[3]=s,!1;if(r<o)return i[0]=l,i[1]=n,i[2]=f,i[3]=s,!1}else{var O=t.height/t.width,I=e.height/e.width,D=(s-n)/(o-r),w=void 0,R=void 0,C=void 0,M=void 0,G=void 0,x=void 0;if(-O===D?r>o?(i[0]=g,i[1]=u,_=!0):(i[0]=l,i[1]=h,_=!0):O===D&&(r>o?(i[0]=a,i[1]=h,_=!0):(i[0]=c,i[1]=u,_=!0)),-I===D?o>r?(i[2]=v,i[3]=A,m=!0):(i[2]=E,i[3]=y,m=!0):I===D&&(o>r?(i[2]=f,i[3]=y,m=!0):(i[2]=N,i[3]=A,m=!0)),_&&m)return!1;if(r>o?n>s?(w=this.getCardinalDirection(O,D,4),R=this.getCardinalDirection(I,D,2)):(w=this.getCardinalDirection(-O,D,3),R=this.getCardinalDirection(-I,D,1)):n>s?(w=this.getCardinalDirection(-O,D,1),R=this.getCardinalDirection(-I,D,3)):(w=this.getCardinalDirection(O,D,2),R=this.getCardinalDirection(I,D,4)),!_)switch(w){case 1:M=h,C=r+-p/D,i[0]=C,i[1]=M;break;case 2:C=c,M=n+d*D,i[0]=C,i[1]=M;break;case 3:M=u,C=r+p/D,i[0]=C,i[1]=M;break;case 4:C=g,M=n+-d*D,i[0]=C,i[1]=M}if(!m)switch(R){case 1:x=y,G=o+-L/D,i[2]=G,i[3]=x;break;case 2:G=N,x=s+T*D,i[2]=G,i[3]=x;break;case 3:x=A,G=o+L/D,i[2]=G,i[3]=x;break;case 4:G=v,x=s+-T*D,i[2]=G,i[3]=x}}return!1},n.getCardinalDirection=function(t,e,i){return t>e?i:1+i%4},n.getIntersection=function(t,e,i,n){if(null==n)return this.getIntersection2(t,e,i);var o,s,a,h,l,g,u,c=t.x,d=t.y,p=e.x,f=e.y,y=i.x,E=i.y,v=n.x,A=n.y;return 0===(u=(o=f-d)*(h=y-v)-(s=A-E)*(a=c-p))?null:new r((a*(g=v*E-y*A)-h*(l=p*d-c*f))/u,(s*l-o*g)/u)},n.angleOfVector=function(t,e,i,r){var n=void 0;return t!==i?(n=Math.atan((r-e)/(i-t)),i<t?n+=Math.PI:r<e&&(n+=this.TWO_PI)):n=r<e?this.ONE_AND_HALF_PI:this.HALF_PI,n},n.doIntersect=function(t,e,i,r){var n=t.x,o=t.y,s=e.x,a=e.y,h=i.x,l=i.y,g=r.x,u=r.y,c=(s-n)*(u-l)-(g-h)*(a-o);if(0===c)return!1;var d=((u-l)*(g-n)+(h-g)*(u-o))/c,p=((o-a)*(g-n)+(s-n)*(u-o))/c;return 0<d&&d<1&&0<p&&p<1},n.HALF_PI=.5*Math.PI,n.ONE_AND_HALF_PI=1.5*Math.PI,n.TWO_PI=2*Math.PI,n.THREE_PI=3*Math.PI,t.exports=n},function(t,e,i){"use strict";function r(){}r.sign=function(t){return t>0?1:t<0?-1:0},r.floor=function(t){return t<0?Math.ceil(t):Math.floor(t)},r.ceil=function(t){return t<0?Math.floor(t):Math.ceil(t)},t.exports=r},function(t,e,i){"use strict";function r(){}r.MAX_VALUE=2147483647,r.MIN_VALUE=-2147483648,t.exports=r},function(t,e,i){"use strict";var r=function(){function t(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,i,r){return i&&t(e.prototype,i),r&&t(e,r),e}}(),n=function(t){return{value:t,next:null,prev:null}},o=function(t,e,i,r){return null!==t?t.next=e:r.head=e,null!==i?i.prev=e:r.tail=e,e.prev=t,e.next=i,r.length++,e},s=function(t,e){var i=t.prev,r=t.next;return null!==i?i.next=r:e.head=r,null!==r?r.prev=i:e.tail=i,t.prev=t.next=null,e.length--,t},a=function(){function t(e){var i=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.length=0,this.head=null,this.tail=null,null!=e&&e.forEach(function(t){return i.push(t)})}return r(t,[{key:"size",value:function(){return this.length}},{key:"insertBefore",value:function(t,e){return o(e.prev,n(t),e,this)}},{key:"insertAfter",value:function(t,e){return o(e,n(t),e.next,this)}},{key:"insertNodeBefore",value:function(t,e){return o(e.prev,t,e,this)}},{key:"insertNodeAfter",value:function(t,e){return o(e,t,e.next,this)}},{key:"push",value:function(t){return o(this.tail,n(t),null,this)}},{key:"unshift",value:function(t){return o(null,n(t),this.head,this)}},{key:"remove",value:function(t){return s(t,this)}},{key:"pop",value:function(){return s(this.tail,this).value}},{key:"popNode",value:function(){return s(this.tail,this)}},{key:"shift",value:function(){return s(this.head,this).value}},{key:"shiftNode",value:function(){return s(this.head,this)}},{key:"get_object_at",value:function(t){if(t<=this.length()){for(var e=1,i=this.head;e<t;)i=i.next,e++;return i.value}}},{key:"set_object_at",value:function(t,e){if(t<=this.length()){for(var i=1,r=this.head;i<t;)r=r.next,i++;r.value=e}}}]),t}();t.exports=a},function(t,e,i){"use strict";function r(t,e,i){this.x=null,this.y=null,null==t&&null==e&&null==i?(this.x=0,this.y=0):"number"==typeof t&&"number"==typeof e&&null==i?(this.x=t,this.y=e):"Point"==t.constructor.name&&null==e&&null==i&&(i=t,this.x=i.x,this.y=i.y)}r.prototype.getX=function(){return this.x},r.prototype.getY=function(){return this.y},r.prototype.getLocation=function(){return new r(this.x,this.y)},r.prototype.setLocation=function(t,e,i){"Point"==t.constructor.name&&null==e&&null==i?(i=t,this.setLocation(i.x,i.y)):"number"==typeof t&&"number"==typeof e&&null==i&&(parseInt(t)==t&&parseInt(e)==e?this.move(t,e):(this.x=Math.floor(t+.5),this.y=Math.floor(e+.5)))},r.prototype.move=function(t,e){this.x=t,this.y=e},r.prototype.translate=function(t,e){this.x+=t,this.y+=e},r.prototype.equals=function(t){if("Point"==t.constructor.name){var e=t;return this.x==e.x&&this.y==e.y}return this==t},r.prototype.toString=function(){return(new r).constructor.name+"[x="+this.x+",y="+this.y+"]"},t.exports=r},function(t,e,i){"use strict";function r(t,e,i,r){this.x=0,this.y=0,this.width=0,this.height=0,null!=t&&null!=e&&null!=i&&null!=r&&(this.x=t,this.y=e,this.width=i,this.height=r)}r.prototype.getX=function(){return this.x},r.prototype.setX=function(t){this.x=t},r.prototype.getY=function(){return this.y},r.prototype.setY=function(t){this.y=t},r.prototype.getWidth=function(){return this.width},r.prototype.setWidth=function(t){this.width=t},r.prototype.getHeight=function(){return this.height},r.prototype.setHeight=function(t){this.height=t},r.prototype.getRight=function(){return this.x+this.width},r.prototype.getBottom=function(){return this.y+this.height},r.prototype.intersects=function(t){return!(this.getRight()<t.x||this.getBottom()<t.y||t.getRight()<this.x||t.getBottom()<this.y)},r.prototype.getCenterX=function(){return this.x+this.width/2},r.prototype.getMinX=function(){return this.getX()},r.prototype.getMaxX=function(){return this.getX()+this.width},r.prototype.getCenterY=function(){return this.y+this.height/2},r.prototype.getMinY=function(){return this.getY()},r.prototype.getMaxY=function(){return this.getY()+this.height},r.prototype.getWidthHalf=function(){return this.width/2},r.prototype.getHeightHalf=function(){return this.height/2},t.exports=r},function(t,e,i){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function n(){}n.lastID=0,n.createID=function(t){return n.isPrimitive(t)?t:(null!=t.uniqueID||(t.uniqueID=n.getString(),n.lastID++),t.uniqueID)},n.getString=function(t){return null==t&&(t=n.lastID),"Object#"+t},n.isPrimitive=function(t){var e=void 0===t?"undefined":r(t);return null==t||"object"!=e&&"function"!=e},t.exports=n},function(t,e,i){"use strict";function r(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);e<t.length;e++)i[e]=t[e];return i}return Array.from(t)}var n=i(0),o=i(6),s=i(3),a=i(1),h=i(5),l=i(4),g=i(17),u=i(27);function c(t){u.call(this),this.layoutQuality=n.QUALITY,this.createBendsAsNeeded=n.DEFAULT_CREATE_BENDS_AS_NEEDED,this.incremental=n.DEFAULT_INCREMENTAL,this.animationOnLayout=n.DEFAULT_ANIMATION_ON_LAYOUT,this.animationDuringLayout=n.DEFAULT_ANIMATION_DURING_LAYOUT,this.animationPeriod=n.DEFAULT_ANIMATION_PERIOD,this.uniformLeafNodeSizes=n.DEFAULT_UNIFORM_LEAF_NODE_SIZES,this.edgeToDummyNodes=new Map,this.graphManager=new o(this),this.isLayoutFinished=!1,this.isSubLayout=!1,this.isRemoteUse=!1,null!=t&&(this.isRemoteUse=t)}c.RANDOM_SEED=1,c.prototype=Object.create(u.prototype),c.prototype.getGraphManager=function(){return this.graphManager},c.prototype.getAllNodes=function(){return this.graphManager.getAllNodes()},c.prototype.getAllEdges=function(){return this.graphManager.getAllEdges()},c.prototype.getAllNodesToApplyGravitation=function(){return this.graphManager.getAllNodesToApplyGravitation()},c.prototype.newGraphManager=function(){var t=new o(this);return this.graphManager=t,t},c.prototype.newGraph=function(t){return new h(null,this.graphManager,t)},c.prototype.newNode=function(t){return new s(this.graphManager,t)},c.prototype.newEdge=function(t){return new a(null,null,t)},c.prototype.checkLayoutSuccess=function(){return null==this.graphManager.getRoot()||0==this.graphManager.getRoot().getNodes().length||this.graphManager.includesInvalidEdge()},c.prototype.runLayout=function(){var t;return this.isLayoutFinished=!1,this.tilingPreLayout&&this.tilingPreLayout(),this.initParameters(),t=!this.checkLayoutSuccess()&&this.layout(),"during"!==n.ANIMATE&&(t&&(this.isSubLayout||this.doPostLayout()),this.tilingPostLayout&&this.tilingPostLayout(),this.isLayoutFinished=!0,t)},c.prototype.doPostLayout=function(){this.incremental||this.transform(),this.update()},c.prototype.update2=function(){if(this.createBendsAsNeeded&&(this.createBendpointsFromDummyNodes(),this.graphManager.resetAllEdges()),!this.isRemoteUse){for(var t=this.graphManager.getAllEdges(),e=0;e<t.length;e++)t[e];var i=this.graphManager.getRoot().getNodes();for(e=0;e<i.length;e++)i[e];this.update(this.graphManager.getRoot())}},c.prototype.update=function(t){if(null==t)this.update2();else if(t instanceof s){var e=t;if(null!=e.getChild())for(var i=e.getChild().getNodes(),r=0;r<i.length;r++)update(i[r]);null!=e.vGraphObject&&e.vGraphObject.update(e)}else if(t instanceof a){var n=t;null!=n.vGraphObject&&n.vGraphObject.update(n)}else if(t instanceof h){var o=t;null!=o.vGraphObject&&o.vGraphObject.update(o)}},c.prototype.initParameters=function(){this.isSubLayout||(this.layoutQuality=n.QUALITY,this.animationDuringLayout=n.DEFAULT_ANIMATION_DURING_LAYOUT,this.animationPeriod=n.DEFAULT_ANIMATION_PERIOD,this.animationOnLayout=n.DEFAULT_ANIMATION_ON_LAYOUT,this.incremental=n.DEFAULT_INCREMENTAL,this.createBendsAsNeeded=n.DEFAULT_CREATE_BENDS_AS_NEEDED,this.uniformLeafNodeSizes=n.DEFAULT_UNIFORM_LEAF_NODE_SIZES),this.animationDuringLayout&&(this.animationOnLayout=!1)},c.prototype.transform=function(t){if(null==t)this.transform(new l(0,0));else{var e=new g,i=this.graphManager.getRoot().updateLeftTop();if(null!=i){e.setWorldOrgX(t.x),e.setWorldOrgY(t.y),e.setDeviceOrgX(i.x),e.setDeviceOrgY(i.y);for(var r=this.getAllNodes(),n=0;n<r.length;n++)r[n].transform(e)}}},c.prototype.positionNodesRandomly=function(t){if(null==t)this.positionNodesRandomly(this.getGraphManager().getRoot()),this.getGraphManager().getRoot().updateBounds(!0);else for(var e,i,r=t.getNodes(),n=0;n<r.length;n++)null==(i=(e=r[n]).getChild())||0==i.getNodes().length?e.scatter():(this.positionNodesRandomly(i),e.updateBounds())},c.prototype.getFlatForest=function(){for(var t=[],e=!0,i=this.graphManager.getRoot().getNodes(),n=!0,o=0;o<i.length;o++)null!=i[o].getChild()&&(n=!1);if(!n)return t;var s=new Set,a=[],h=new Map,l=[];for(l=l.concat(i);l.length>0&&e;){for(a.push(l[0]);a.length>0&&e;){var g=a[0];a.splice(0,1),s.add(g);var u=g.getEdges();for(o=0;o<u.length;o++){var c=u[o].getOtherEnd(g);if(h.get(g)!=c){if(s.has(c)){e=!1;break}a.push(c),h.set(c,g)}}}if(e){var d=[].concat(r(s));for(t.push(d),o=0;o<d.length;o++){var p=d[o],f=l.indexOf(p);f>-1&&l.splice(f,1)}s=new Set,h=new Map}else t=[]}return t},c.prototype.createDummyNodesForBendpoints=function(t){for(var e=[],i=t.source,r=this.graphManager.calcLowestCommonAncestor(t.source,t.target),n=0;n<t.bendpoints.length;n++){var o=this.newNode(null);o.setRect(new Point(0,0),new Dimension(1,1)),r.add(o);var s=this.newEdge(null);this.graphManager.add(s,i,o),e.add(o),i=o}return s=this.newEdge(null),this.graphManager.add(s,i,t.target),this.edgeToDummyNodes.set(t,e),t.isInterGraph()?this.graphManager.remove(t):r.remove(t),e},c.prototype.createBendpointsFromDummyNodes=function(){var t=[];t=t.concat(this.graphManager.getAllEdges()),t=[].concat(r(this.edgeToDummyNodes.keys())).concat(t);for(var e=0;e<t.length;e++){var i=t[e];if(i.bendpoints.length>0){for(var n=this.edgeToDummyNodes.get(i),o=0;o<n.length;o++){var s=n[o],a=new l(s.getCenterX(),s.getCenterY()),h=i.bendpoints.get(o);h.x=a.x,h.y=a.y,s.getOwner().remove(s)}this.graphManager.add(i,i.source,i.target)}}},c.transform=function(t,e,i,r){if(null!=i&&null!=r){var n=e;return t<=50?n-=(e-e/i)/50*(50-t):n+=(e*r-e)/50*(t-50),n}var o,s;return t<=50?(o=9*e/500,s=e/10):(o=9*e/50,s=-8*e),o*t+s},c.findCenterOfTree=function(t){var e=[];e=e.concat(t);var i=[],r=new Map,n=!1,o=null;1!=e.length&&2!=e.length||(n=!0,o=e[0]);for(var s=0;s<e.length;s++){var a=(g=e[s]).getNeighborsList().size;r.set(g,g.getNeighborsList().size),1==a&&i.push(g)}var h=[];for(h=h.concat(i);!n;){var l=[];for(l=l.concat(h),h=[],s=0;s<e.length;s++){var g=e[s],u=e.indexOf(g);u>=0&&e.splice(u,1),g.getNeighborsList().forEach(function(t){if(i.indexOf(t)<0){var e=r.get(t)-1;1==e&&h.push(t),r.set(t,e)}})}i=i.concat(h),1!=e.length&&2!=e.length||(n=!0,o=e[0])}return o},c.prototype.setGraphManager=function(t){this.graphManager=t},t.exports=c},function(t,e,i){"use strict";function r(){}r.seed=1,r.x=0,r.nextDouble=function(){return r.x=1e4*Math.sin(r.seed++),r.x-Math.floor(r.x)},t.exports=r},function(t,e,i){"use strict";var r=i(4);function n(t,e){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}n.prototype.getWorldOrgX=function(){return this.lworldOrgX},n.prototype.setWorldOrgX=function(t){this.lworldOrgX=t},n.prototype.getWorldOrgY=function(){return this.lworldOrgY},n.prototype.setWorldOrgY=function(t){this.lworldOrgY=t},n.prototype.getWorldExtX=function(){return this.lworldExtX},n.prototype.setWorldExtX=function(t){this.lworldExtX=t},n.prototype.getWorldExtY=function(){return this.lworldExtY},n.prototype.setWorldExtY=function(t){this.lworldExtY=t},n.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},n.prototype.setDeviceOrgX=function(t){this.ldeviceOrgX=t},n.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},n.prototype.setDeviceOrgY=function(t){this.ldeviceOrgY=t},n.prototype.getDeviceExtX=function(){return this.ldeviceExtX},n.prototype.setDeviceExtX=function(t){this.ldeviceExtX=t},n.prototype.getDeviceExtY=function(){return this.ldeviceExtY},n.prototype.setDeviceExtY=function(t){this.ldeviceExtY=t},n.prototype.transformX=function(t){var e=0,i=this.lworldExtX;return 0!=i&&(e=this.ldeviceOrgX+(t-this.lworldOrgX)*this.ldeviceExtX/i),e},n.prototype.transformY=function(t){var e=0,i=this.lworldExtY;return 0!=i&&(e=this.ldeviceOrgY+(t-this.lworldOrgY)*this.ldeviceExtY/i),e},n.prototype.inverseTransformX=function(t){var e=0,i=this.ldeviceExtX;return 0!=i&&(e=this.lworldOrgX+(t-this.ldeviceOrgX)*this.lworldExtX/i),e},n.prototype.inverseTransformY=function(t){var e=0,i=this.ldeviceExtY;return 0!=i&&(e=this.lworldOrgY+(t-this.ldeviceOrgY)*this.lworldExtY/i),e},n.prototype.inverseTransformPoint=function(t){return new r(this.inverseTransformX(t.x),this.inverseTransformY(t.y))},t.exports=n},function(t,e,i){"use strict";var r=i(15),n=i(7),o=i(0),s=i(8),a=i(9);function h(){r.call(this),this.useSmartIdealEdgeLengthCalculation=n.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.idealEdgeLength=n.DEFAULT_EDGE_LENGTH,this.springConstant=n.DEFAULT_SPRING_STRENGTH,this.repulsionConstant=n.DEFAULT_REPULSION_STRENGTH,this.gravityConstant=n.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=n.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=n.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=n.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.displacementThresholdPerNode=3*n.DEFAULT_EDGE_LENGTH/100,this.coolingFactor=n.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.initialCoolingFactor=n.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.totalDisplacement=0,this.oldTotalDisplacement=0,this.maxIterations=n.MAX_ITERATIONS}for(var l in h.prototype=Object.create(r.prototype),r)h[l]=r[l];h.prototype.initParameters=function(){r.prototype.initParameters.call(this,arguments),this.totalIterations=0,this.notAnimatedIterations=0,this.useFRGridVariant=n.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION,this.grid=[]},h.prototype.calcIdealEdgeLengths=function(){for(var t,e,i,r,s,a,h=this.getGraphManager().getAllEdges(),l=0;l<h.length;l++)(t=h[l]).idealLength=this.idealEdgeLength,t.isInterGraph&&(i=t.getSource(),r=t.getTarget(),s=t.getSourceInLca().getEstimatedSize(),a=t.getTargetInLca().getEstimatedSize(),this.useSmartIdealEdgeLengthCalculation&&(t.idealLength+=s+a-2*o.SIMPLE_NODE_SIZE),e=t.getLca().getInclusionTreeDepth(),t.idealLength+=n.DEFAULT_EDGE_LENGTH*n.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR*(i.getInclusionTreeDepth()+r.getInclusionTreeDepth()-2*e))},h.prototype.initSpringEmbedder=function(){var t=this.getAllNodes().length;this.incremental?(t>n.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*n.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(t-n.ADAPTATION_LOWER_NODE_LIMIT)/(n.ADAPTATION_UPPER_NODE_LIMIT-n.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-n.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=n.MAX_NODE_DISPLACEMENT_INCREMENTAL):(t>n.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(n.COOLING_ADAPTATION_FACTOR,1-(t-n.ADAPTATION_LOWER_NODE_LIMIT)/(n.ADAPTATION_UPPER_NODE_LIMIT-n.ADAPTATION_LOWER_NODE_LIMIT)*(1-n.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=n.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(5*this.getAllNodes().length,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var t,e=this.getAllEdges(),i=0;i<e.length;i++)t=e[i],this.calcSpringForce(t,t.idealLength)},h.prototype.calcRepulsionForces=function(){var t,e,i,r,o,s=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],a=arguments.length>1&&void 0!==arguments[1]&&arguments[1],h=this.getAllNodes();if(this.useFRGridVariant)for(this.totalIterations%n.GRID_CALCULATION_CHECK_PERIOD==1&&s&&this.updateGrid(),o=new Set,t=0;t<h.length;t++)i=h[t],this.calculateRepulsionForceOfANode(i,o,s,a),o.add(i);else for(t=0;t<h.length;t++)for(i=h[t],e=t+1;e<h.length;e++)r=h[e],i.getOwner()==r.getOwner()&&this.calcRepulsionForce(i,r)},h.prototype.calcGravitationalForces=function(){for(var t,e=this.getAllNodesToApplyGravitation(),i=0;i<e.length;i++)t=e[i],this.calcGravitationalForce(t)},h.prototype.moveNodes=function(){for(var t=this.getAllNodes(),e=0;e<t.length;e++)t[e].move()},h.prototype.calcSpringForce=function(t,e){var i,r,n,o,s=t.getSource(),a=t.getTarget();if(this.uniformLeafNodeSizes&&null==s.getChild()&&null==a.getChild())t.updateLengthSimple();else if(t.updateLength(),t.isOverlapingSourceAndTarget)return;0!=(i=t.getLength())&&(n=(r=this.springConstant*(i-e))*(t.lengthX/i),o=r*(t.lengthY/i),s.springForceX+=n,s.springForceY+=o,a.springForceX-=n,a.springForceY-=o)},h.prototype.calcRepulsionForce=function(t,e){var i,r,o,h,l,g,u,c=t.getRect(),d=e.getRect(),p=new Array(2),f=new Array(4);if(c.intersects(d)){s.calcSeparationAmount(c,d,p,n.DEFAULT_EDGE_LENGTH/2),g=2*p[0],u=2*p[1];var y=t.noOfChildren*e.noOfChildren/(t.noOfChildren+e.noOfChildren);t.repulsionForceX-=y*g,t.repulsionForceY-=y*u,e.repulsionForceX+=y*g,e.repulsionForceY+=y*u}else this.uniformLeafNodeSizes&&null==t.getChild()&&null==e.getChild()?(i=d.getCenterX()-c.getCenterX(),r=d.getCenterY()-c.getCenterY()):(s.getIntersection(c,d,f),i=f[2]-f[0],r=f[3]-f[1]),Math.abs(i)<n.MIN_REPULSION_DIST&&(i=a.sign(i)*n.MIN_REPULSION_DIST),Math.abs(r)<n.MIN_REPULSION_DIST&&(r=a.sign(r)*n.MIN_REPULSION_DIST),o=i*i+r*r,h=Math.sqrt(o),g=(l=this.repulsionConstant*t.noOfChildren*e.noOfChildren/o)*i/h,u=l*r/h,t.repulsionForceX-=g,t.repulsionForceY-=u,e.repulsionForceX+=g,e.repulsionForceY+=u},h.prototype.calcGravitationalForce=function(t){var e,i,r,n,o,s,a,h;i=((e=t.getOwner()).getRight()+e.getLeft())/2,r=(e.getTop()+e.getBottom())/2,n=t.getCenterX()-i,o=t.getCenterY()-r,s=Math.abs(n)+t.getWidth()/2,a=Math.abs(o)+t.getHeight()/2,t.getOwner()==this.graphManager.getRoot()?(s>(h=e.getEstimatedSize()*this.gravityRangeFactor)||a>h)&&(t.gravitationForceX=-this.gravityConstant*n,t.gravitationForceY=-this.gravityConstant*o):(s>(h=e.getEstimatedSize()*this.compoundGravityRangeFactor)||a>h)&&(t.gravitationForceX=-this.gravityConstant*n*this.compoundGravityConstant,t.gravitationForceY=-this.gravityConstant*o*this.compoundGravityConstant)},h.prototype.isConverged=function(){var t,e=!1;return this.totalIterations>this.maxIterations/3&&(e=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),t=this.totalDisplacement<this.totalDisplacementThreshold,this.oldTotalDisplacement=this.totalDisplacement,t||e},h.prototype.animate=function(){this.animationDuringLayout&&!this.isSubLayout&&(this.notAnimatedIterations==this.animationPeriod?(this.update(),this.notAnimatedIterations=0):this.notAnimatedIterations++)},h.prototype.calcNoOfChildrenForAllNodes=function(){for(var t,e=this.graphManager.getAllNodes(),i=0;i<e.length;i++)(t=e[i]).noOfChildren=t.getNoOfChildren()},h.prototype.calcGrid=function(t){var e,i;e=parseInt(Math.ceil((t.getRight()-t.getLeft())/this.repulsionRange)),i=parseInt(Math.ceil((t.getBottom()-t.getTop())/this.repulsionRange));for(var r=new Array(e),n=0;n<e;n++)r[n]=new Array(i);for(n=0;n<e;n++)for(var o=0;o<i;o++)r[n][o]=new Array;return r},h.prototype.addNodeToGrid=function(t,e,i){var r,n,o,s;r=parseInt(Math.floor((t.getRect().x-e)/this.repulsionRange)),n=parseInt(Math.floor((t.getRect().width+t.getRect().x-e)/this.repulsionRange)),o=parseInt(Math.floor((t.getRect().y-i)/this.repulsionRange)),s=parseInt(Math.floor((t.getRect().height+t.getRect().y-i)/this.repulsionRange));for(var a=r;a<=n;a++)for(var h=o;h<=s;h++)this.grid[a][h].push(t),t.setGridCoordinates(r,n,o,s)},h.prototype.updateGrid=function(){var t,e,i=this.getAllNodes();for(this.grid=this.calcGrid(this.graphManager.getRoot()),t=0;t<i.length;t++)e=i[t],this.addNodeToGrid(e,this.graphManager.getRoot().getLeft(),this.graphManager.getRoot().getTop())},h.prototype.calculateRepulsionForceOfANode=function(t,e,i,r){if(this.totalIterations%n.GRID_CALCULATION_CHECK_PERIOD==1&&i||r){var o,s=new Set;t.surrounding=new Array;for(var a=this.grid,h=t.startX-1;h<t.finishX+2;h++)for(var l=t.startY-1;l<t.finishY+2;l++)if(!(h<0||l<0||h>=a.length||l>=a[0].length))for(var g=0;g<a[h][l].length;g++)if(o=a[h][l][g],t.getOwner()==o.getOwner()&&t!=o&&!e.has(o)&&!s.has(o)){var u=Math.abs(t.getCenterX()-o.getCenterX())-(t.getWidth()/2+o.getWidth()/2),c=Math.abs(t.getCenterY()-o.getCenterY())-(t.getHeight()/2+o.getHeight()/2);u<=this.repulsionRange&&c<=this.repulsionRange&&s.add(o)}t.surrounding=[].concat(function(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);e<t.length;e++)i[e]=t[e];return i}return Array.from(t)}(s))}for(h=0;h<t.surrounding.length;h++)this.calcRepulsionForce(t,t.surrounding[h])},h.prototype.calcRepulsionRange=function(){return 0},t.exports=h},function(t,e,i){"use strict";var r=i(1),n=i(7);function o(t,e,i){r.call(this,t,e,i),this.idealLength=n.DEFAULT_EDGE_LENGTH}for(var s in o.prototype=Object.create(r.prototype),r)o[s]=r[s];t.exports=o},function(t,e,i){"use strict";var r=i(3);function n(t,e,i,n){r.call(this,t,e,i,n),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0,this.startX=0,this.finishX=0,this.startY=0,this.finishY=0,this.surrounding=[]}for(var o in n.prototype=Object.create(r.prototype),r)n[o]=r[o];n.prototype.setGridCoordinates=function(t,e,i,r){this.startX=t,this.finishX=e,this.startY=i,this.finishY=r},t.exports=n},function(t,e,i){"use strict";function r(t,e){this.width=0,this.height=0,null!==t&&null!==e&&(this.height=e,this.width=t)}r.prototype.getWidth=function(){return this.width},r.prototype.setWidth=function(t){this.width=t},r.prototype.getHeight=function(){return this.height},r.prototype.setHeight=function(t){this.height=t},t.exports=r},function(t,e,i){"use strict";var r=i(14);function n(){this.map={},this.keys=[]}n.prototype.put=function(t,e){var i=r.createID(t);this.contains(i)||(this.map[i]=e,this.keys.push(t))},n.prototype.contains=function(t){return r.createID(t),null!=this.map[t]},n.prototype.get=function(t){var e=r.createID(t);return this.map[e]},n.prototype.keySet=function(){return this.keys},t.exports=n},function(t,e,i){"use strict";var r=i(14);function n(){this.set={}}n.prototype.add=function(t){var e=r.createID(t);this.contains(e)||(this.set[e]=t)},n.prototype.remove=function(t){delete this.set[r.createID(t)]},n.prototype.clear=function(){this.set={}},n.prototype.contains=function(t){return this.set[r.createID(t)]==t},n.prototype.isEmpty=function(){return 0===this.size()},n.prototype.size=function(){return Object.keys(this.set).length},n.prototype.addAllTo=function(t){for(var e=Object.keys(this.set),i=e.length,r=0;r<i;r++)t.push(this.set[e[r]])},n.prototype.size=function(){return Object.keys(this.set).length},n.prototype.addAll=function(t){for(var e=t.length,i=0;i<e;i++){var r=t[i];this.add(r)}},t.exports=n},function(t,e,i){"use strict";var r=function(){function t(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,i,r){return i&&t(e.prototype,i),r&&t(e,r),e}}(),n=i(11),o=function(){function t(e,i){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),null===i&&void 0===i||(this.compareFunction=this._defaultCompareFunction);var r=void 0;r=e instanceof n?e.size():e.length,this._quicksort(e,0,r-1)}return r(t,[{key:"_quicksort",value:function(t,e,i){if(e<i){var r=this._partition(t,e,i);this._quicksort(t,e,r),this._quicksort(t,r+1,i)}}},{key:"_partition",value:function(t,e,i){for(var r=this._get(t,e),n=e,o=i;;){for(;this.compareFunction(r,this._get(t,o));)o--;for(;this.compareFunction(this._get(t,n),r);)n++;if(!(n<o))return o;this._swap(t,n,o),n++,o--}}},{key:"_get",value:function(t,e){return t instanceof n?t.get_object_at(e):t[e]}},{key:"_set",value:function(t,e,i){t instanceof n?t.set_object_at(e,i):t[e]=i}},{key:"_swap",value:function(t,e,i){var r=this._get(t,e);this._set(t,e,this._get(t,i)),this._set(t,i,r)}},{key:"_defaultCompareFunction",value:function(t,e){return e>t}}]),t}();t.exports=o},function(t,e,i){"use strict";var r=function(){function t(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,i,r){return i&&t(e.prototype,i),r&&t(e,r),e}}(),n=function(){function t(e,i){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:-1,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:-1;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.sequence1=e,this.sequence2=i,this.match_score=r,this.mismatch_penalty=n,this.gap_penalty=o,this.iMax=e.length+1,this.jMax=i.length+1,this.grid=new Array(this.iMax);for(var s=0;s<this.iMax;s++){this.grid[s]=new Array(this.jMax);for(var a=0;a<this.jMax;a++)this.grid[s][a]=0}this.tracebackGrid=new Array(this.iMax);for(var h=0;h<this.iMax;h++){this.tracebackGrid[h]=new Array(this.jMax);for(var l=0;l<this.jMax;l++)this.tracebackGrid[h][l]=[null,null,null]}this.alignments=[],this.score=-1,this.computeGrids()}return r(t,[{key:"getScore",value:function(){return this.score}},{key:"getAlignments",value:function(){return this.alignments}},{key:"computeGrids",value:function(){for(var t=1;t<this.jMax;t++)this.grid[0][t]=this.grid[0][t-1]+this.gap_penalty,this.tracebackGrid[0][t]=[!1,!1,!0];for(var e=1;e<this.iMax;e++)this.grid[e][0]=this.grid[e-1][0]+this.gap_penalty,this.tracebackGrid[e][0]=[!1,!0,!1];for(var i=1;i<this.iMax;i++)for(var r=1;r<this.jMax;r++){var n=[this.sequence1[i-1]===this.sequence2[r-1]?this.grid[i-1][r-1]+this.match_score:this.grid[i-1][r-1]+this.mismatch_penalty,this.grid[i-1][r]+this.gap_penalty,this.grid[i][r-1]+this.gap_penalty],o=this.arrayAllMaxIndexes(n);this.grid[i][r]=n[o[0]],this.tracebackGrid[i][r]=[o.includes(0),o.includes(1),o.includes(2)]}this.score=this.grid[this.iMax-1][this.jMax-1]}},{key:"alignmentTraceback",value:function(){var t=[];for(t.push({pos:[this.sequence1.length,this.sequence2.length],seq1:"",seq2:""});t[0];){var e=t[0],i=this.tracebackGrid[e.pos[0]][e.pos[1]];i[0]&&t.push({pos:[e.pos[0]-1,e.pos[1]-1],seq1:this.sequence1[e.pos[0]-1]+e.seq1,seq2:this.sequence2[e.pos[1]-1]+e.seq2}),i[1]&&t.push({pos:[e.pos[0]-1,e.pos[1]],seq1:this.sequence1[e.pos[0]-1]+e.seq1,seq2:"-"+e.seq2}),i[2]&&t.push({pos:[e.pos[0],e.pos[1]-1],seq1:"-"+e.seq1,seq2:this.sequence2[e.pos[1]-1]+e.seq2}),0===e.pos[0]&&0===e.pos[1]&&this.alignments.push({sequence1:e.seq1,sequence2:e.seq2}),t.shift()}return this.alignments}},{key:"getAllIndexes",value:function(t,e){for(var i=[],r=-1;-1!==(r=t.indexOf(e,r+1));)i.push(r);return i}},{key:"arrayAllMaxIndexes",value:function(t){return this.getAllIndexes(t,Math.max.apply(null,t))}}]),t}();t.exports=n},function(t,e,i){"use strict";var r=function(){};r.FDLayout=i(18),r.FDLayoutConstants=i(7),r.FDLayoutEdge=i(19),r.FDLayoutNode=i(20),r.DimensionD=i(21),r.HashMap=i(22),r.HashSet=i(23),r.IGeometry=i(8),r.IMath=i(9),r.Integer=i(10),r.Point=i(12),r.PointD=i(4),r.RandomSeed=i(16),r.RectangleD=i(13),r.Transform=i(17),r.UniqueIDGeneretor=i(14),r.Quicksort=i(24),r.LinkedList=i(11),r.LGraphObject=i(2),r.LGraph=i(5),r.LEdge=i(1),r.LGraphManager=i(6),r.LNode=i(3),r.Layout=i(15),r.LayoutConstants=i(0),r.NeedlemanWunsch=i(25),t.exports=r},function(t,e,i){"use strict";function r(){this.listeners=[]}var n=r.prototype;n.addListener=function(t,e){this.listeners.push({event:t,callback:e})},n.removeListener=function(t,e){for(var i=this.listeners.length;i>=0;i--){var r=this.listeners[i];r.event===t&&r.callback===e&&this.listeners.splice(i,1)}},n.emit=function(t,e){for(var i=0;i<this.listeners.length;i++){var r=this.listeners[i];t===r.event&&r.callback(e)}},t.exports=r}])},t.exports=e()},7928(t,e,i){"use strict";i.r(e),i.d(e,{render:()=>p});var r=i(797),n=i(165),o=i(3457),s=i(451);function a(t,e){t.forEach(t=>{const i={id:t.id,labelText:t.label,height:t.height,width:t.width,padding:t.padding??0};Object.keys(t).forEach(e=>{["id","label","height","width","padding","x","y"].includes(e)||(i[e]=t[e])}),e.add({group:"nodes",data:i,position:{x:t.x??0,y:t.y??0}})})}function h(t,e){t.forEach(t=>{const i={id:t.id,source:t.start,target:t.end};Object.keys(t).forEach(e=>{["id","start","end"].includes(e)||(i[e]=t[e])}),e.add({group:"edges",data:i})})}function l(t){return new Promise(e=>{const i=(0,s.Ltv)("body").append("div").attr("id","cy").attr("style","display:none"),o=(0,n.A)({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});i.remove(),a(t.nodes,o),h(t.edges,o),o.nodes().forEach(function(t){t.layoutDimensions=()=>{const e=t.data();return{w:e.width,h:e.height}}});o.layout({name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1}).run(),o.ready(t=>{r.Rm.info("Cytoscape ready",t),e(o)})})}function g(t){return t.nodes().map(t=>{const e=t.data(),i=t.position(),r={id:e.id,x:i.x,y:i.y};return Object.keys(e).forEach(t=>{"id"!==t&&(r[t]=e[t])}),r})}function u(t){return t.edges().map(t=>{const e=t.data(),i=t._private.rscratch,r={id:e.id,source:e.source,target:e.target,startX:i.startX,startY:i.startY,midX:i.midX,midY:i.midY,endX:i.endX,endY:i.endY};return Object.keys(e).forEach(t=>{["id","source","target"].includes(t)||(r[t]=e[t])}),r})}async function c(t,e){r.Rm.debug("Starting cose-bilkent layout algorithm");try{d(t);const e=await l(t),i=g(e),n=u(e);return r.Rm.debug(`Layout completed: ${i.length} nodes, ${n.length} edges`),{nodes:i,edges:n}}catch(i){throw r.Rm.error("Error in cose-bilkent layout algorithm:",i),i}}function d(t){if(!t)throw new Error("Layout data is required");if(!t.config)throw new Error("Configuration is required in layout data");if(!t.rootNode)throw new Error("Root node is required");if(!t.nodes||!Array.isArray(t.nodes))throw new Error("No nodes found in layout data");if(!Array.isArray(t.edges))throw new Error("Edges array is required in layout data");return!0}n.A.use(o),(0,r.K2)(a,"addNodes"),(0,r.K2)(h,"addEdges"),(0,r.K2)(l,"createCytoscapeInstance"),(0,r.K2)(g,"extractPositionedNodes"),(0,r.K2)(u,"extractPositionedEdges"),(0,r.K2)(c,"executeCoseBilkentLayout"),(0,r.K2)(d,"validateLayoutData");var p=(0,r.K2)(async(t,e,{insertCluster:i,insertEdge:r,insertEdgeLabel:n,insertMarkers:o,insertNode:s,log:a,positionEdgeLabel:h},{algorithm:l})=>{const g={},u={},d=e.select("g");o(d,t.markers,t.type,t.diagramId);const p=d.insert("g").attr("class","subgraphs"),f=d.insert("g").attr("class","edgePaths"),y=d.insert("g").attr("class","edgeLabels"),E=d.insert("g").attr("class","nodes");a.debug("Inserting nodes into DOM for dimension calculation"),await Promise.all(t.nodes.map(async e=>{if(e.isGroup){const t={...e};u[e.id]=t,g[e.id]=t,await i(p,e)}else{const i={...e};g[e.id]=i;const r=await s(E,e,{config:t.config,dir:t.direction||"TB"}),n=r.node().getBBox();i.width=n.width,i.height=n.height,i.domId=r,a.debug(`Node ${e.id} dimensions: ${n.width}x${n.height}`)}})),a.debug("Running cose-bilkent layout algorithm");const v={...t,nodes:t.nodes.map(t=>{const e=g[t.id];return{...t,width:e.width,height:e.height}})},A=await c(v,t.config);a.debug("Positioning nodes based on layout results"),A.nodes.forEach(t=>{const e=g[t.id];e?.domId&&(e.domId.attr("transform",`translate(${t.x}, ${t.y})`),e.x=t.x,e.y=t.y,a.debug(`Positioned node ${e.id} at center (${t.x}, ${t.y})`))}),A.edges.forEach(e=>{const i=t.edges.find(t=>t.id===e.id);i&&(i.points=[{x:e.startX,y:e.startY},{x:e.midX,y:e.midY},{x:e.endX,y:e.endY}])}),a.debug("Inserting and positioning edges"),await Promise.all(t.edges.map(async e=>{await n(y,e);const i=g[e.start??""],o=g[e.end??""];if(i&&o){const n=A.edges.find(t=>t.id===e.id);if(n){a.debug("APA01 positionedEdge",n);const s={...e},l=r(f,s,u,t.type,i,o,t.diagramId);h(s,l)}else{const n={...e,points:[{x:i.x||0,y:i.y||0},{x:o.x||0,y:o.y||0}]},s=r(f,n,u,t.type,i,o,t.diagramId);h(n,s)}}})),a.debug("Cose-bilkent rendering completed")},"render")}}]); \ No newline at end of file diff --git a/docs/build/assets/js/8007.cfe7f045.js b/docs/build/assets/js/8007.cfe7f045.js deleted file mode 100644 index 538a97fc5..000000000 --- a/docs/build/assets/js/8007.cfe7f045.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[931,8007],{8968(e,a,n){n.d(a,{Ay:()=>c});n(6540);const s={grid:"grid_JFHO",group:"group_Nfvo",item:"item_phlc",itemLink:"itemLink_HeDt",label:"label_MAb0",h:"h_tlk1",beta:"beta_BGXC",soon:"soon_WxqE",tip:"tip_ojjV",legend:"legend_X6Dh",legendItem:"legendItem_PTOk"};var r=n(4848);const t={stable:"",beta:s.beta,soon:s.soon};function o({label:e,tip:a,status:n="stable",href:o,className:l}){const c=[s.h,t[n]].filter(Boolean).join(" "),i=(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:c,"aria-hidden":"true"}),(0,r.jsx)("span",{className:s.label,children:e}),a&&(0,r.jsx)("span",{className:s.tip,children:a})]});if(o){const n=/^https?:\/\//.test(o);return(0,r.jsx)("a",{className:[s.item,s.itemLink,l].filter(Boolean).join(" "),href:o,title:a||e,...n?{target:"_blank",rel:"noopener noreferrer"}:{},children:i})}return(0,r.jsx)("div",{className:[s.item,l].filter(Boolean).join(" "),tabIndex:0,title:a||e,children:i})}function l({label:e,className:a}){return(0,r.jsx)("h4",{className:[s.group,a].filter(Boolean).join(" "),children:e})}function c({items:e,legend:a=!1,children:n,className:t}){return(0,r.jsxs)("div",{className:t,children:[a&&(0,r.jsx)(i,{}),(0,r.jsx)("div",{className:s.grid,children:e?e.map((e,a)=>e.group?(0,r.jsx)(l,{label:e.group},a):(0,r.jsx)(o,{...e},a)):n})]})}function i(){return(0,r.jsxs)("div",{className:s.legend,children:[(0,r.jsxs)("span",{className:s.legendItem,children:[(0,r.jsx)("span",{className:s.h,"aria-hidden":"true"}),"Stable"]}),(0,r.jsxs)("span",{className:s.legendItem,children:[(0,r.jsx)("span",{className:[s.h,s.beta].join(" "),"aria-hidden":"true"}),"Beta"]}),(0,r.jsxs)("span",{className:s.legendItem,children:[(0,r.jsx)("span",{className:[s.h,s.soon].join(" "),"aria-hidden":"true"}),"Coming soon"]})]})}},832(e,a,n){n.r(a),n.d(a,{default:()=>o});n(6540);var s=n(1827),r=n(8968),t=n(4848);function o({data:e}){const{features:a=[],title:n="Features",intro:o=null}=e||{},l=a.map(e=>({label:e.title||e.slug,tip:e.summary||"",status:"stable",href:e.docsUrl||void 0}));return(0,t.jsx)(s.A,{title:n,description:o||"Capabilities shipped in this app, sourced from openspec/specs/.",children:(0,t.jsxs)("main",{className:"container margin-vert--lg",children:[(0,t.jsx)("h1",{children:n}),o&&(0,t.jsx)("p",{children:o}),0===l.length?(0,t.jsx)("p",{children:"No features documented yet."}):(0,t.jsx)(r.Ay,{items:l,legend:!0})]})})}},8007(e,a,n){n.d(a,{bv:()=>A,cN:()=>H,ru:()=>M});var s=n(6540);const r={hex:"hex_LAHd",sm:"sm_qFQ6",md:"md_UwWv",lg:"lg_znfx"};var t=n(4848);const o={sm:"sm",md:"md",lg:"lg"};function l({size:e="md",color:a,className:n,style:s,...l}){const c=o[e]||"md",i=[r.hex,r[c],n].filter(Boolean).join(" ");return(0,t.jsx)("span",{"aria-hidden":"true",className:i,style:a?{background:a,...s}:s,...l})}var c=n(2966);const i={btn:"btn_iG9q",icon:"icon_Vbzo","s-sm":"s-sm_TEhc","s-md":"s-md_l62V","s-lg":"s-lg_cTht","v-primary":"v-primary_VicA","v-secondary":"v-secondary_aIVG","v-ghost":"v-ghost__okS","v-on-dark-primary":"v-on-dark-primary_TlyP","v-on-dark-secondary":"v-on-dark-secondary_WITB","v-on-dark-tertiary":"v-on-dark-tertiary_tOA5","t-orange":"t-orange_jA8I"};function d({variant:e="primary",tone:a,href:n,size:s="md",icon:r,className:o,children:l,...d}){const p=[i.btn,i["v-"+e],i["s-"+s],a&&i["t-"+a],o].filter(Boolean).join(" "),h="string"==typeof r?c.Z[r]:r,u=h?(0,t.jsx)("span",{className:i.icon,"aria-hidden":"true",children:h}):null,C=(0,t.jsxs)(t.Fragment,{children:[u,l]});return n?(0,t.jsx)("a",{href:n,className:p,...d,children:C}):(0,t.jsx)("button",{type:"button",className:p,...d,children:C})}n(2303);const p=[{d:.1,sMin:32,sMax:56,oMin:.03,oMax:.1,w:5},{d:.25,sMin:56,sMax:96,oMin:.04,oMax:.13,w:4},{d:.45,sMin:96,sMax:150,oMin:.05,oMax:.16,w:3},{d:.65,sMin:150,sMax:220,oMin:.07,oMax:.18,w:2},{d:.85,sMin:220,sMax:300,oMin:.08,oMax:.2,w:1}];p.reduce((e,a)=>e+a.w,0);const h=JSON.parse('{"app-versions":{"inner":"<path fill=\\"currentColor\\" d=\\"M5.5,9A1.5,1.5 0 0,0 7,7.5A1.5,1.5 0 0,0 5.5,6A1.5,1.5 0 0,0 4,7.5A1.5,1.5 0 0,0 5.5,9M17.41,11.58C17.77,11.94 18,12.44 18,13C18,13.55 17.78,14.05 17.41,14.41L12.41,19.41C12.05,19.77 11.55,20 11,20C10.45,20 9.95,19.78 9.58,19.41L2.59,12.42C2.22,12.05 2,11.55 2,11V6C2,4.89 2.89,4 4,4H9C9.55,4 10.05,4.22 10.41,4.58L17.41,11.58M13.54,5.71L14.54,4.71L21.41,11.58C21.78,11.94 22,12.45 22,13C22,13.55 21.78,14.05 21.42,14.41L16.04,19.79L15.04,18.79L20.75,13L13.54,5.71Z\\"/>","viewBox":"0 0 24 24"},"decidesk":{"inner":"<path fill=\\"currentColor\\" d=\\"M2.3,20.28L11.9,10.68L10.5,9.26L9.78,9.97C9.39,10.36 8.76,10.36 8.37,9.97L7.66,9.26C7.27,8.87 7.27,8.24 7.66,7.85L13.32,2.19C13.71,1.8 14.34,1.8 14.73,2.19L15.44,2.9C15.83,3.29 15.83,3.92 15.44,4.31L14.73,5L16.15,6.43C16.54,6.04 17.17,6.04 17.56,6.43C17.95,6.82 17.95,7.46 17.56,7.85L18.97,9.26L19.68,8.55C20.07,8.16 20.71,8.16 21.1,8.55L21.8,9.26C22.19,9.65 22.19,10.29 21.8,10.68L16.15,16.33C15.76,16.72 15.12,16.72 14.73,16.33L14.03,15.63C13.63,15.24 13.63,14.6 14.03,14.21L14.73,13.5L13.32,12.09L3.71,21.7C3.32,22.09 2.69,22.09 2.3,21.7C1.91,21.31 1.91,20.67 2.3,20.28M20,19A2,2 0 0,1 22,21V22H12V21A2,2 0 0,1 14,19H20Z\\"/>","viewBox":"0 0 24 24"},"deskdesk":{"inner":"<path fill=\\"currentColor\\" d=\\"M3 6H21C21.55 6 22 6.45 22 7C22 7.55 21.55 8 21 8V19H19V17H15V19H13V8H5V19H3V8C2.45 8 2 7.55 2 7C2 6.45 2.45 6 3 6M16 10.5V11H18V10.5C18 10.22 17.78 10 17.5 10H16.5C16.22 10 16 10.22 16 10.5M16 14.5V15H18V14.5C18 14.22 17.78 14 17.5 14H16.5C16.22 14 16 14.22 16 14.5Z\\"/>","viewBox":"0 0 24 24"},"docudesk":{"inner":"<path fill=\\"currentColor\\" d=\\"M6,2c-1.1,0-2,.9-2,2v16c0,1.1.9,2,2,2h12c1.1,0,2-.9,2-2v-12l-6-6H6M6,4h7v5h5v11H6V4M8,12v2h8v-2h-8M8,16v2h5v-2h-5Z\\"/>","viewBox":"0 0 24 24"},"doriath":{"inner":"<rect x=\\"5\\" y=\\"11\\" width=\\"14\\" height=\\"10\\" rx=\\"2\\" fill=\\"currentColor\\"/><path d=\\"M8,11V7a4,4,0,0,1,8,0v4\\" fill=\\"none\\" stroke=\\"currentColor\\" stroke-width=\\"2\\" stroke-linecap=\\"round\\"/>","viewBox":"0 0 24 24"},"financeq":{"inner":"<path fill=\\"currentColor\\" d=\\"M6,16.5L3,19.44V11H6M11,14.66L9.43,13.32L8,14.64V7H11M16,13L13,16V3H16M18.81,12.81L17,11H22V16L20.21,14.21L13,21.36L9.53,18.34L5.75,22H3L9.47,15.66L13,18.64\\"/>","viewBox":"0 0 24 24"},"hrmq":{"inner":"<path fill=\\"currentColor\\" d=\\"M12 3C14.21 3 16 4.79 16 7S14.21 11 12 11 8 9.21 8 7 9.79 3 12 3M16 13.54C16 14.6 15.72 17.07 13.81 19.83L13 15L13.94 13.12C13.32 13.05 12.67 13 12 13S10.68 13.05 10.06 13.12L11 15L10.19 19.83C8.28 17.07 8 14.6 8 13.54C5.61 14.24 4 15.5 4 17V21H20V17C20 15.5 18.4 14.24 16 13.54Z\\"/>","viewBox":"0 0 24 24"},"larpingapp":{"inner":"<path fill=\\"currentColor\\" d=\\"M2,13h2v2h2v-2h2v2h2v-2h2v2h2v-5l3-3V1h2l4,2-4,2v2l3,3v12h-11v-3c0-1.1-.9-2-2-2s-2,.9-2,2v3H2v-9M18,10c-.5,0-1,.5-1,1.2v1.8h2v-1.8c0-.7-.5-1.2-1-1.2Z\\"/>","viewBox":"0 0 24 24"},"launchpad":{"inner":"<path fill=\\"currentColor\\" d=\\"M3 3h8v8H3V3zm0 10h8v8H3v-8zm10-10h8v8h-8V3zm0 10h8v8h-8v-8z\\"/>","viewBox":"0 0 24 24"},"nldesign":{"inner":"<path fill=\\"currentColor\\" d=\\"M2 2h9v9H2V2zm11 0h9v9h-9V2zM2 13h9v9H2v-9zm13 2a4 4 0 1 1 0 8 4 4 0 0 1 0-8z\\"/>","viewBox":"0 0 24 24"},"openanonymiser":{"inner":"<path fill=\\"currentColor\\" d=\\"M17.06 13C15.2 13 13.64 14.33 13.24 16.1C12.29 15.69 11.42 15.8 10.76 16.09C10.35 14.31 8.79 13 6.94 13C4.77 13 3 14.79 3 17C3 19.21 4.77 21 6.94 21C9 21 10.68 19.38 10.84 17.32C11.18 17.08 12.07 16.63 13.16 17.34C13.34 19.39 15 21 17.06 21C19.23 21 21 19.21 21 17C21 14.79 19.23 13 17.06 13M6.94 19.86C5.38 19.86 4.13 18.58 4.13 17S5.39 14.14 6.94 14.14C8.5 14.14 9.75 15.42 9.75 17S8.5 19.86 6.94 19.86M17.06 19.86C15.5 19.86 14.25 18.58 14.25 17S15.5 14.14 17.06 14.14C18.62 14.14 19.88 15.42 19.88 17S18.61 19.86 17.06 19.86M22 10.5H2V12H22V10.5M15.53 2.63C15.31 2.14 14.75 1.88 14.22 2.05L12 2.79L9.77 2.05L9.72 2.04C9.19 1.89 8.63 2.17 8.43 2.68L6 9H18L15.56 2.68L15.53 2.63Z\\"/>","viewBox":"0 0 24 24"},"openbuild":{"inner":"<path fill=\\"currentColor\\" d=\\"M21 16.5c0 .38-.21.71-.53.88l-7.9 4.44c-.16.12-.36.18-.57.18-.21 0-.41-.06-.57-.18l-7.9-4.44A.991.991 0 0 1 3 16.5v-9c0-.38.21-.71.53-.88l7.9-4.44c.16-.12.36-.18.57-.18.21 0 .41.06.57.18l7.9 4.44c.32.17.53.5.53.88v9M12 4.15 6.04 7.5 12 10.85 17.96 7.5 12 4.15M5 15.91l6 3.38v-6.71L5 9.21v6.7m14 0v-6.7l-6 3.37v6.71l6-3.38Z\\"/>","viewBox":"0 0 24 24"},"opencatalogi":{"inner":"<path fill=\\"currentColor\\" fill-rule=\\"evenodd\\" d=\\"M 287 28.117 C 302.675 43.536, 316.625 56.612, 318 57.176 C 322.480 59.011, 334.602 60.734, 340.618 60.389 C 343.853 60.204, 349.783 59.330, 353.795 58.448 L 361.091 56.843 388.458 29.172 C 403.510 13.952, 416.165 1.163, 416.580 0.750 C 416.994 0.338, 381.596 0.019, 337.917 0.041 L 258.500 0.083 287 28.117 M 438.433 100.434 L 439.165 200.868 434.832 204.033 C 429.209 208.143, 426.500 209.159, 420.935 209.250 C 411.567 209.404, 406.552 205.245, 358.038 157.100 C 349.493 148.620, 337.947 139.513, 331.773 136.385 C 322.369 131.619, 306.018 130.184, 293.644 133.038 C 274.943 137.351, 266.469 153.625, 269.994 178.458 C 271.713 190.570, 275.840 198.421, 286.946 210.710 C 291.813 216.094, 298.428 222.942, 301.647 225.926 C 304.866 228.910, 342.229 265.479, 384.676 307.189 L 461.851 383.026 469.676 384.986 C 479.203 387.373, 492.466 387.159, 501.778 384.470 C 508.012 382.669, 508.221 382.487, 531.278 358.712 L 554.500 334.768 555.056 426.134 L 555.613 517.500 552.229 520.673 C 544.095 528.300, 534.423 529.118, 525.302 522.951 C 522.495 521.053, 507.776 507.399, 492.592 492.609 C 462.435 463.233, 456.507 458.142, 447.500 453.884 C 440.342 450.500, 428.148 448.571, 419 449.375 C 394.520 451.527, 384.798 464.066, 386.236 491.633 C 387.207 510.252, 391.969 517.708, 421.241 546.440 C 431.833 556.838, 463.900 588.314, 492.500 616.387 C 521.100 644.460, 552.150 674.964, 561.500 684.174 C 578.220 700.643, 578.607 700.946, 585 702.618 C 593.440 704.826, 606.541 704.845, 616.104 702.663 L 623.708 700.929 643.106 681.214 C 738.670 584.094, 793.637 527.886, 798.335 522.481 C 803.287 516.784, 808.927 507.027, 810.752 501 C 813.039 493.450, 812.990 475.469, 810.663 468 C 806.894 455.900, 798.518 449.036, 784.934 446.914 C 769.405 444.489, 753.788 447.680, 742.855 455.512 C 739.910 457.621, 723.325 473.393, 706 490.559 C 688.675 507.726, 673.085 522.485, 671.355 523.357 C 663.393 527.372, 653.707 525.947, 646.564 519.709 L 642.889 516.500 642.282 381.267 L 641.675 246.033 662.105 225.267 C 692.137 194.740, 695.500 188.923, 695.500 167.500 C 695.500 152.292, 694.323 147.285, 689.134 140.419 C 682.049 131.045, 667.187 126.581, 650.490 128.812 C 646.118 129.397, 642.413 129.747, 642.257 129.590 C 642.101 129.434, 642.091 114.441, 642.236 96.272 L 642.500 63.237 661.500 81.754 C 671.950 91.938, 688.391 108.075, 698.036 117.613 L 715.572 134.956 723.536 136.957 C 733.425 139.441, 747.617 139.209, 756.383 136.422 C 762.068 134.614, 763.265 133.528, 791.983 104.135 L 821.701 73.720 822.250 186.610 L 822.798 299.500 820.704 301.772 C 819.553 303.021, 816.207 305.219, 813.269 306.657 C 806.678 309.881, 800.188 309.464, 793.148 305.363 C 790.591 303.874, 776.125 290.465, 761 275.566 C 724.888 239.992, 717.016 234.150, 702.326 232.027 C 682.232 229.121, 667.594 233.104, 659.524 243.672 C 654.567 250.165, 653.552 254.562, 653.562 269.500 C 653.569 280.549, 653.901 283.330, 655.775 288.029 C 661.070 301.314, 662.819 303.212, 734.541 373.500 C 821.062 458.290, 834.508 471.505, 840 477.138 C 844.895 482.159, 846.262 482.967, 852.432 484.482 C 860.986 486.583, 873.633 486.550, 883.294 484.401 L 890.500 482.799 907.552 465.649 C 941.383 431.626, 1056.673 313.941, 1063.951 306 C 1076.066 292.783, 1080.844 279.456, 1079.715 262.029 C 1078.526 243.680, 1070.695 232.783, 1056.254 229.385 C 1048.364 227.529, 1033.931 227.742, 1025.919 229.833 C 1013.866 232.980, 1009.702 236.323, 974.500 271.122 C 956.350 289.064, 939.925 304.560, 938 305.558 C 932.505 308.408, 924.599 307.997, 918.233 304.531 C 915.336 302.954, 912.411 300.995, 911.733 300.179 C 910.437 298.619, 909.370 202.325, 909.117 64.250 L 909 0 731.491 0 L 553.981 0 554.241 103.022 L 554.500 206.044 551 207.017 C 545.287 208.604, 540.700 208.153, 535.331 205.478 C 525.680 200.668, 526.672 212.153, 526.178 99.458 L 525.742 0 481.721 0 L 437.700 0 438.433 100.434 M 330 522.072 C 318.329 524.116, 310.453 530.116, 307.244 539.408 C 303.959 548.921, 304.077 565.694, 307.502 576.006 C 310.352 584.587, 318.251 594.082, 347.912 624.580 C 369.891 647.179, 377.673 655.833, 379.720 659.948 C 384.405 669.371, 383.107 677.437, 375.247 687.742 L 372.613 691.196 186.306 690.455 L 0 689.714 0 730.857 L 0 772 11.250 772.101 C 17.438 772.156, 100.955 772.494, 196.845 772.851 L 371.190 773.500 373.682 776.500 C 377.988 781.683, 380.980 789.073, 380.990 794.554 C 381.009 804.262, 378.535 807.443, 344.955 840.896 C 312.855 872.874, 307.209 879.655, 303.703 890.434 C 301.050 898.588, 300.864 915.113, 303.332 923.291 C 307.591 937.404, 320.343 944.019, 340.784 942.719 C 355.106 941.808, 361.461 939.082, 374 928.469 C 377.025 925.908, 409.425 894.467, 446 858.599 C 482.575 822.731, 521.139 784.939, 531.699 774.617 L 550.897 755.849 552.573 748.318 C 554.513 739.594, 554.127 721.905, 551.864 715.851 C 550.886 713.235, 529.720 691.021, 477.068 637.351 C 384.551 543.047, 375.864 534.444, 367.957 529.299 C 357.877 522.742, 342.687 519.849, 330 522.072 M 858.043 522.072 C 851.131 523.302, 844.015 526.587, 837 531.787 C 833.975 534.030, 792.047 574.482, 743.827 621.682 C 644.533 718.875, 653.161 708.849, 652.334 728 C 651.984 736.111, 652.293 740.019, 653.690 745.174 L 655.500 751.848 741.377 839.324 C 821.205 920.639, 835.015 934, 843.836 938.456 C 854.881 944.034, 876.652 944.279, 887.111 938.943 C 892.406 936.242, 897.806 929.439, 899.745 923.027 C 901.997 915.577, 901.959 898.520, 899.673 890.824 C 896.626 880.564, 889.429 871.658, 858.455 839.815 C 837.870 818.652, 828.218 808.007, 826.484 804.554 C 821.970 795.565, 823.615 785.064, 830.822 776.855 L 833.907 773.341 1018.954 773.807 L 1204 774.273 1204 733.300 L 1204 692.327 1019.875 691.706 C 859.690 691.165, 835.539 690.893, 834.125 689.611 C 833.231 688.801, 830.926 685.538, 829.002 682.361 C 825.951 677.323, 825.504 675.749, 825.502 670.042 C 825.501 665.706, 826.136 662.151, 827.387 659.500 C 828.604 656.920, 839.809 645.025, 858.942 626 C 889.655 595.461, 895.427 589.038, 899.657 580.690 C 906.028 568.118, 906.633 547.042, 900.943 535.889 C 898.321 530.750, 891.506 525.233, 885.544 523.426 C 879.173 521.494, 865.168 520.805, 858.043 522.072 M 592.500 771.649 C 581.852 773.866, 586.843 769.360, 494.150 860.441 C 445.942 907.810, 404.132 949.702, 401.238 953.533 C 392.867 964.616, 391.565 968.902, 391.530 985.500 C 391.496 1001.300, 392.713 1005.559, 399.077 1011.923 C 409.149 1021.995, 432.938 1023.707, 449.539 1015.556 C 458.681 1011.067, 465.999 1004.701, 497.768 973.604 C 526.558 945.423, 529.846 943.028, 539.783 943.010 C 545.354 942.999, 551.767 945.642, 557.402 950.271 L 560.304 952.654 560.081 1078.327 L 559.859 1204 600.816 1204 L 641.773 1204 642.146 1079.556 L 642.519 955.111 645.293 952.216 C 653.118 944.049, 666.191 941.982, 675.500 947.441 C 678.581 949.248, 690.801 960.841, 707.337 977.644 C 743.768 1014.664, 750.331 1019.820, 764.469 1022.525 C 774.209 1024.389, 781.784 1024.375, 789.830 1022.478 C 805.283 1018.835, 811.961 1008.685, 811.988 988.799 C 812.009 973.140, 808.758 964.138, 798.879 952.500 C 788.991 940.852, 625.758 775.143, 623.147 774.103 C 616.414 771.420, 599.936 770.100, 592.500 771.649\\"/>","viewBox":"0 0 1204 1204"},"openconnector":{"inner":"<path fill=\\"currentColor\\" d=\\"M8.4,18.2c.4.5.6,1.1.6,1.8,0,1.7-1.3,3-3,3s-3-1.3-3-3,1.3-3,3-3,.8.1,1.2.3l1.4-1.8c-.9-1-1.3-2.4-1.1-3.7l-2-.7c-.5.8-1.4,1.4-2.5,1.4-1.7,0-3-1.3-3-3s1.3-3,3-3,3,1.3,3,3v.2l2,.7c.6-1.2,1.8-2.1,3.2-2.3v-2.2c-1.2-.3-2.2-1.5-2.2-2.9s1.3-3,3-3,3,1.3,3,3-1,2.6-2.2,2.9v2.2c1.4.2,2.6,1.1,3.2,2.3l2-.7v-.2c0-1.7,1.3-3,3-3s3,1.3,3,3-1.3,3-3,3-2-.6-2.5-1.4l-2,.7c.2,1.3-.2,2.7-1.1,3.7l1.4,1.8c.4-.2.8-.3,1.2-.3,1.7,0,3,1.3,3,3s-1.3,3-3,3-3-1.3-3-3,.2-1.3.6-1.8l-1.4-1.8c-1.4.8-3,.8-4.4,0l-1.4,1.8Z\\"/>","viewBox":"0 0 24 24"},"openregister":{"inner":"<path fill=\\"currentColor\\" d=\\"M19,12v1.5c2.2,0,4,1.8,4,4s-.2,1.6-.7,2.2l-1.1-1.1c.2-.3.3-.7.3-1.1,0-1.4-1.1-2.5-2.5-2.5v1.5l-2.2-2.2,2.2-2.2M19,23v-1.5c-2.2,0-4-1.8-4-4s.2-1.6.7-2.2l1.1,1.1c-.2.3-.3.7-.3,1.1,0,1.4,1.1,2.5,2.5,2.5v-1.5l2.2,2.2-2.2,2.2M12,3c4.4,0,8,1.8,8,4s-3.6,4-8,4-8-1.8-8-4S7.6,3,12,3M4,9c0,2.2,3.6,4,8,4s2.2-.1,3.1-.3c-1,.9-1.6,2-2,3.3h-1.2c-4.4,0-8-1.8-8-4v-3M20,9v2h-1.1c.7-.6,1.1-1.3,1.1-2M4,14c0,2.2,3.6,4,8,4h1c0,1,.4,2,.9,2.9h-1.9c-4.4.1-8-1.7-8-3.9v-3Z\\"/>","viewBox":"0 0 24 24"},"pipelinq":{"inner":"<circle cx=\\"9\\" cy=\\"7.5\\" r=\\"3.5\\"/><path d=\\"M2,20V17.5C2,15.01,6.03,13,9,13S16,15.01,16,17.5V20Z\\"/><rect x=\\"18\\" y=\\"5\\" width=\\"4\\" height=\\"2\\" rx=\\"0.5\\"/><rect x=\\"18\\" y=\\"10\\" width=\\"4\\" height=\\"2\\" rx=\\"0.5\\"/><rect x=\\"18\\" y=\\"15\\" width=\\"3\\" height=\\"2\\" rx=\\"0.5\\"/>","viewBox":"0 0 24 24"},"planix":{"inner":"<path fill=\\"currentColor\\" d=\\"M16,5V18H21V5M4,18H9V5H4M10,18H15V5H10V18Z\\"/>","viewBox":"0 0 24 24"},"procest":{"inner":"<path d=\\"M5,3H19A2,2,0,0,1,21,5V19A2,2,0,0,1,19,21H5A2,2,0,0,1,3,19V5A2,2,0,0,1,5,3M5,5V9H19V5H5M5,11V19H9V11H5M11,11V19H19V11H11\\"/><circle cx=\\"7\\" cy=\\"14\\" r=\\"1.5\\"/><circle cx=\\"7\\" cy=\\"18\\" r=\\"1.5\\"/><rect x=\\"13\\" y=\\"13\\" width=\\"4.5\\" height=\\"1.5\\" rx=\\"0.5\\"/><rect x=\\"13\\" y=\\"17\\" width=\\"3\\" height=\\"1.5\\" rx=\\"0.5\\"/>","viewBox":"0 0 24 24"},"purchaseq":{"inner":"<path fill=\\"currentColor\\" d=\\"M17,18C15.89,18 15,18.89 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20C19,18.89 18.1,18 17,18M1,2V4H3L6.6,11.59L5.24,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H19V15H7.42A0.25,0.25 0 0,1 7.17,14.75C7.17,14.7 7.18,14.66 7.2,14.63L8.1,13H15.55C16.3,13 16.96,12.58 17.3,11.97L20.88,5.5C20.95,5.34 21,5.17 21,5A1,1 0 0,0 20,4H5.21L4.27,2M7,18C5.89,18 5,18.89 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20C9,18.89 8.1,18 7,18Z\\"/>","viewBox":"0 0 24 24"},"scholiq":{"inner":"<path fill=\\"currentColor\\" d=\\"M12 3L1 9l11 6 9-4.91V17h2V9L12 3zM5 13.18v4L12 21l7-3.82v-4L12 17l-7-3.82z\\"/>","viewBox":"0 0 24 24"},"shillinq":{"inner":"<path fill=\\"currentColor\\" d=\\"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm128 72c8.8 0 16 7.2 16 16v17.3c8.5 1.2 16.7 3.1 24.1 5.1c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-11.1-3-22-5.2-32.1-5.3c-8.4-.1-17.4 1.8-23.6 5.5c-5.7 3.4-8.1 7.3-8.1 12.8c0 3.7 1.3 6.5 7.3 10.1c6.9 4.1 16.6 7.1 29.2 10.9l.5 .1 0 0 0 0c11.3 3.4 25.3 7.6 36.3 14.6c12.1 7.6 22.4 19.7 22.7 38.2c.3 19.3-9.6 33.3-22.9 41.6c-7.7 4.8-16.4 7.6-25.1 9.1V440c0 8.8-7.2 16-16 16s-16-7.2-16-16V422.2c-11.2-2.1-21.7-5.7-30.9-8.9l0 0 0 0c-2.1-.7-4.2-1.4-6.2-2.1c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c2.5 .8 4.8 1.6 7.1 2.4l0 0 0 0 0 0c13.6 4.6 24.6 8.4 36.3 8.7c9.1 .3 17.9-1.7 23.7-5.3c5.1-3.2 7.9-7.3 7.8-14c-.1-4.6-1.8-7.8-7.7-11.6c-6.8-4.3-16.5-7.4-29-11.2l-1.6-.5 0 0c-11-3.3-24.3-7.3-34.8-13.7c-12-7.2-22.6-18.9-22.7-37.3c-.1-19.4 10.8-32.8 23.8-40.5c7.5-4.4 15.8-7.2 24.1-8.7V232c0-8.8 7.2-16 16-16z\\"/>","viewBox":"0 0 384 512"},"softwarecatalog":{"inner":"<path fill=\\"currentColor\\" d=\\"M5.6,3.4l1.4,1.4-3.2,3.2,3.2,3.2-1.4,1.4L1,8,5.6,3.4M11.4,3.4l4.6,4.6-4.6,4.6-1.4-1.4,3.2-3.2-3.2-3.2,1.4-1.4M22,6v12c0,1.1-.9,2-2,2H4c-1.1,0-2-.9-2-2v-4h2v4h16V6h-3v-2h3c1.1,0,2,.9,2,2Z\\"/>","viewBox":"0 0 24 24"},"zaakafhandelapp":{"inner":"<path fill=\\"currentColor\\" d=\\"M9.5 18V9H8V18M12.75 18V9H11.25V18M16 18V9H14.5V18M17.03 6C18.11 6 19 6.88 19 8V19C19 20.13 18.11 21 17.03 21C17.03 21.58 16.56 22 16 22C15.5 22 15 21.58 15 21H9C9 21.58 8.5 22 8 22C7.44 22 6.97 21.58 6.97 21C5.89 21 5 20.13 5 19V8C5 6.88 5.89 6 6.97 6H9V3C9 2.42 9.46 2 10 2H14C14.54 2 15 2.42 15 3V6M10.5 3.5V6H13.5V3.5M17.03 19V8H6.97V19\\"/>","viewBox":"0 0 24 24"}}');Object.keys(h);function u({app:e,className:a,title:n,...s}){const r=e&&h[e];return r?(0,t.jsx)("svg",{viewBox:r.viewBox,className:a,fill:"currentColor",role:n?"img":void 0,"aria-hidden":n?void 0:"true","aria-label":n,focusable:"false",xmlns:"http://www.w3.org/2000/svg",dangerouslySetInnerHTML:{__html:r.inner},...s}):null}var C=n(8077);n(3730),n(6573);var m=n(5260);var g=n(4586),v=n(7225);let x;try{x=n(Object(function(){var e=new Error("Cannot find module '../../../data/app-downloads.json'");throw e.code="MODULE_NOT_FOUND",e}()))}catch(B){x={generated_at:null,totals:{downloads:0,apps_total:0,apps_in_store:0},apps:[]}}x.totals.downloads,x.totals.downloads_github??x.totals.downloads,x.totals.downloads_codeberg,x.totals.apps_total,x.totals.apps_in_store,x.generated_at;const f=new Map(x.apps.map(e=>[e.id,e]));function y(e,a="en"){return Number(e||0).toLocaleString(a)}const j={head:"head_P6K9",bgCobalt:"bgCobalt_HTUI",crumb:"crumb_McrY",sep:"sep_fk34",badge:"badge_uILI",versionBadge:"versionBadge_C6FH",downloadsBadge:"downloadsBadge_ypk7",title:"title_IlJO",titleText:"titleText_CFnw",tagline:"tagline_cZrs",intro:"intro_ZCy_",headInner:"headInner_fnOh",withIllustration:"withIllustration_EoC8",badgeRow:"badgeRow_Gk44",downloadIcon:"downloadIcon_KKSS",titleIcon:"titleIcon_Opve",actions:"actions_Wy3O",illustration:"illustration_tbFl"},w={Stable:"var(--c-mint-500)",Beta:"var(--c-orange-knvb)",RC:"var(--c-blue-cobalt)",Alpha:"var(--c-red-vermillion)"};function H({crumb:e,status:a,version:n,locales:r,title:o,tagline:c,intro:i,primaryCta:p,secondaryCta:x,tertiaryCta:H,icon:b,iconColor:L,illustration:M,className:_,appId:N,downloads:V,background:k}){const A=null!=V?V:N?function(e){const a=f.get(e);return a?"number"==typeof a.downloads_total?a.downloads_total:(a.github?a.github.downloads:0)+(a.codeberg?a.codeberg.downloads:0):0}(N):0,B=Boolean(M),I=void 0!==b?b:N&&(S=N,Boolean(S&&h[S]))?(0,t.jsx)(u,{app:N}):null;var S;const z=void 0!==L?L:"cobalt"===k?"var(--c-orange-knvb)":"var(--c-blue-cobalt)",D="cobalt"===k?j.bgCobalt:null,{siteConfig:T}=(0,g.A)(),q=T?.customFields?.appVersion,O=n||(q?`v${q}`:void 0),F=a||(q?{label:(0,v.Nu)(q),color:w[(0,v.Nu)(q)]}:void 0),Z=N?C.xS[N]:void 0,P=Z?(()=>{const e="string"==typeof o?o:Z.name,a="string"==typeof c?c:void 0,n={"@context":"https://schema.org","@type":"SoftwareApplication","@id":`${T?.url||""}${Z.productHref}#app`,name:e,applicationCategory:(0,C.WA)(N),operatingSystem:"Nextcloud",url:`${T?.url||""}${Z.productHref}`,sameAs:[Z.docsHref].filter(Boolean),publisher:{"@id":"https://www.conduction.nl/#org"},offers:{"@type":"Offer",price:"0",priceCurrency:"EUR",availability:"https://schema.org/InStock"},license:"https://eupl.eu/1.2/en/"};return a&&(n.description=a),O&&(n.softwareVersion=O.replace(/^v/,"")),A>0&&(n.interactionStatistic={"@type":"InteractionCounter",interactionType:{"@type":"DownloadAction"},userInteractionCount:A}),n})():null,U=e&&Array.isArray(e)&&e.length>0?(()=>{const a=(T?.url||"").replace(/\/$/,"");return{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:e.map((e,n)=>{const s="string"==typeof e?e:e.label,r="object"==typeof e&&e.href?e.href:void 0,t=r?r.startsWith("http")?r:`${a}${r}`:void 0,o={"@type":"ListItem",position:n+1,name:s};return t&&(o.item=t),o})}})():null;return(0,t.jsxs)("section",{className:[j.head,B&&j.withIllustration,D,_].filter(Boolean).join(" "),children:[P&&(0,t.jsx)(m.A,{children:(0,t.jsx)("script",{type:"application/ld+json",children:JSON.stringify(P)})}),U&&(0,t.jsx)(m.A,{children:(0,t.jsx)("script",{type:"application/ld+json",children:JSON.stringify(U)})}),e&&Array.isArray(e)&&(0,t.jsx)("div",{className:j.crumb,children:e.map((a,n)=>{const r=n<e.length-1?(0,t.jsx)("span",{className:j.sep,children:"/"}):null;return"string"==typeof a?(0,t.jsxs)(s.Fragment,{children:[a,r]},n):(0,t.jsxs)(s.Fragment,{children:[a.href?(0,t.jsx)("a",{href:a.href,children:a.label}):(0,t.jsx)("span",{children:a.label}),r]},n)})}),(0,t.jsxs)("div",{className:j.headInner,children:[(0,t.jsxs)("div",{className:j.copy,children:[(F||O||r||A>0)&&(0,t.jsxs)("div",{className:j.badgeRow,children:[F&&(0,t.jsxs)("span",{className:j.badge,children:[(0,t.jsx)(l,{size:"md",color:F.color||w[F.label]||"var(--c-mint-500)"}),F.label]}),O&&(0,t.jsx)("span",{className:[j.badge,j.versionBadge].join(" "),children:O}),r&&(0,t.jsx)("span",{className:[j.badge,j.versionBadge].join(" "),children:r}),A>0&&(0,t.jsxs)("span",{className:[j.badge,j.downloadsBadge].join(" "),title:"Total release-asset downloads from GitHub. Updated weekdays at 09:00.","data-app-downloads":N||"",children:[(0,t.jsx)("svg",{className:j.downloadIcon,viewBox:"0 0 24 24","aria-hidden":"true",children:(0,t.jsx)("path",{d:"M12 3v12m0 0l-5-5m5 5l5-5M5 21h14"})}),y(A)," downloads"]})]}),o&&(0,t.jsxs)("h1",{className:j.title,children:[I&&(0,t.jsx)("span",{className:j.titleIcon,style:{background:z},"aria-hidden":"true",children:I}),(0,t.jsx)("span",{className:j.titleText,children:o})]}),c&&(0,t.jsx)("p",{className:j.tagline,children:c}),i&&(0,t.jsx)("div",{className:j.intro,children:i}),(p||x||H)&&(0,t.jsxs)("div",{className:j.actions,children:[p&&(0,t.jsx)(d,{variant:"primary",tone:p.tone??("cobalt"===k?"orange":void 0),href:p.href,icon:p.icon,children:p.label}),x&&(0,t.jsx)(d,{variant:"secondary",tone:x.tone,href:x.href,icon:x.icon,children:x.label}),H&&(0,t.jsxs)(d,{variant:H.variant||("cobalt"===k?"on-dark-tertiary":"ghost"),href:H.href,icon:H.icon,children:[H.label," \u2192"]})]})]}),B&&(0,t.jsx)("div",{className:j.illustration,children:M})]})]})}n(8903);const b="never_ygaU";t.Fragment,t.Fragment,t.Fragment,t.Fragment,t.Fragment;const L={shelf:"shelf_jCDe",head:"head_Ui2y",eyebrow:"eyebrow_aGay",h:"h_xjiq",title:"title_c_bx",lede:"lede_VXtA",grid:"grid_kCXK","cols-2":"cols-2_yqXD","cols-3":"cols-3_uoVN",card:"card_mwLz",panel:"panel_AVv7",cardTitle:"cardTitle_NSqq",cardDesc:"cardDesc__ccc"};function M({eyebrow:e,title:a,lede:n,widgets:s=[],columns:r,className:o}){const l=r||(s.length>=4?3:Math.min(s.length,3));return(0,t.jsxs)("section",{className:[L.shelf,o].filter(Boolean).join(" "),children:[(e||a||n)&&(0,t.jsxs)("header",{className:L.head,children:[e&&(0,t.jsxs)("div",{className:L.eyebrow,children:[(0,t.jsx)("span",{className:L.h}),e]}),a&&(0,t.jsx)("h2",{className:L.title,children:a}),n&&(0,t.jsx)("p",{className:L.lede,children:n})]}),(0,t.jsx)("div",{className:[L.grid,L[`cols-${l}`]].join(" "),children:s.map((e,a)=>(0,t.jsxs)("article",{className:L.card,children:[(0,t.jsx)("div",{className:L.panel,children:e.panel}),e.title&&(0,t.jsx)("h3",{className:L.cardTitle,children:e.title}),e.desc&&(0,t.jsx)("p",{className:L.cardDesc,children:e.desc})]},a))})]})}n(8968),n(832),n(1312);const _={root:"root_A5ie",heading:"heading_bCjS",list:"list_JWNJ","variant-rail":"variant-rail_bVTU","variant-inline":"variant-inline_N9cV",card:"card_E3dE",head:"head_AUSd",hex:"hex_SFbx",hexGlyph:"hexGlyph_zJRU",eyebrow:"eyebrow_wYCr",title:"title_T279",rows:"rows_uopa",row:"row_jVO9",rowLink:"rowLink_rfne",rowHint:"rowHint_kfTw",rowArrow:"rowArrow_JTWO",rowIcon:"rowIcon_WV0y",rowText:"rowText_YUX5",rowLabel:"rowLabel_udoF"},N=[{key:"product",surfaceKey:"product",hrefKey:"productHref",label:"Open product page",hint:"Capabilities, pricing, install link"},{key:"docs",surfaceKey:"docs",hrefKey:"docsHref",label:"Read the documentation",hint:"Reference, guides, API"},{key:"academy",surfaceKey:"academy",hrefKey:"academyHref",label:"Read in the academy",hint:"Tutorials, case studies, blog"}],V={product:(0,t.jsxs)("svg",{viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,t.jsx)("path",{d:"M3 7l9-4 9 4-9 4-9-4z"}),(0,t.jsx)("path",{d:"M3 12l9 4 9-4"}),(0,t.jsx)("path",{d:"M3 17l9 4 9-4"})]}),docs:(0,t.jsxs)("svg",{viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,t.jsx)("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),(0,t.jsx)("path",{d:"M14 2v6h6"}),(0,t.jsx)("path",{d:"M9 13h6M9 17h6M9 9h2"})]}),academy:(0,t.jsxs)("svg",{viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,t.jsx)("path",{d:"M3 7l9-4 9 4-9 4-9-4z"}),(0,t.jsx)("path",{d:"M5 11v5a7 7 0 0 0 14 0v-5"}),(0,t.jsx)("path",{d:"M21 7v5"})]})};function k({app:e,surface:a,variant:n}){const s=C.xS[e];if(!s)return null;const r=N.filter(e=>e.surfaceKey!==a),o=`app-cross-links-${s.slug}`;return(0,t.jsxs)("div",{className:_.card,"aria-labelledby":o,children:[(0,t.jsxs)("div",{className:_.head,children:[(0,t.jsx)("span",{className:_.hex,"aria-hidden":"true",children:(0,t.jsx)(u,{app:e,className:_.hexGlyph})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:_.eyebrow,children:"About this app"}),(0,t.jsx)("h4",{className:_.title,id:o,children:s.name})]})]}),(0,t.jsx)("ul",{className:_.rows,children:r.map(e=>(0,t.jsx)("li",{className:_.row,children:(0,t.jsxs)("a",{href:s[e.hrefKey],className:_.rowLink,target:"docs"===e.key?"_blank":void 0,rel:"docs"===e.key?"noopener noreferrer":void 0,children:[(0,t.jsx)("span",{className:_.rowIcon,"aria-hidden":"true",children:V[e.key]}),(0,t.jsxs)("span",{className:_.rowText,children:[(0,t.jsx)("span",{className:_.rowLabel,children:e.label}),(0,t.jsx)("span",{className:_.rowHint,children:e.hint})]}),(0,t.jsx)("span",{className:_.rowArrow,"aria-hidden":"true",children:"\u2192"})]})},e.key))})]})}function A({apps:e=[],variant:a="inline",surface:n,className:s,heading:r}){const o=e.filter(e=>C.xS[e]);if(0===o.length)return null;const l=[_.root,_[`variant-${a}`],s].filter(Boolean).join(" ");return(0,t.jsxs)("aside",{className:l,"aria-label":"Related app links",children:[r&&(0,t.jsx)("h3",{className:_.heading,children:r}),(0,t.jsx)("div",{className:_.list,children:o.map(e=>(0,t.jsx)(k,{app:e,surface:n,variant:a},e))})]})}n(6588)},8077(e,a,n){n.d(a,{WA:()=>t,xS:()=>s});const s={opencatalogi:{slug:"opencatalogi",name:"OpenCatalogi",category:"Data",productHref:"/apps/opencatalogi",docsHref:"https://opencatalogi.conduction.nl",academyHref:"/academy?app=opencatalogi"},openregister:{slug:"openregister",name:"OpenRegister",category:"Data",productHref:"/apps/openregister",docsHref:"https://openregister.conduction.nl",academyHref:"/academy?app=openregister"},openconnector:{slug:"openconnector",name:"OpenConnector",category:"Connectors",productHref:"/apps/openconnector",docsHref:"https://openconnector.conduction.nl",academyHref:"/academy?app=openconnector"},docudesk:{slug:"docudesk",name:"DocuDesk",category:"Documents",productHref:"/apps/docudesk",docsHref:"https://docudesk.conduction.nl",academyHref:"/academy?app=docudesk"},launchpad:{slug:"launchpad",name:"LaunchPad",category:"Dashboards",productHref:"/apps/launchpad",docsHref:"https://launchpad.conduction.nl",academyHref:"/academy?app=launchpad"},zaakafhandelapp:{slug:"zaakafhandelapp",name:"ZaakAfhandelApp",category:"Processes",productHref:"/apps/zaakafhandelapp",docsHref:"https://zaakafhandelapp.conduction.nl",academyHref:"/academy?app=zaakafhandelapp"},pipelinq:{slug:"pipelinq",name:"PipelinQ",category:"Processes",productHref:"/apps/pipelinq",docsHref:"https://pipelinq.conduction.nl",academyHref:"/academy?app=pipelinq"},procest:{slug:"procest",name:"Procest",category:"Processes",productHref:"/apps/procest",docsHref:"https://procest.conduction.nl",academyHref:"/academy?app=procest"},decidesk:{slug:"decidesk",name:"DeciDesk",category:"Processes",productHref:"/apps/decidesk",docsHref:"https://decidesk.conduction.nl",academyHref:"/academy?app=decidesk"},softwarecatalog:{slug:"softwarecatalog",name:"SoftwareCatalog",category:"Data",productHref:"/apps/softwarecatalog",docsHref:"https://softwarecatalog.conduction.nl",academyHref:"/academy?app=softwarecatalog"},larpingapp:{slug:"larpingapp",name:"LarpingApp",category:"Processes",productHref:"/apps/larpingapp",docsHref:"https://larpingapp.conduction.nl",academyHref:"/academy?app=larpingapp"},nldesign:{slug:"nldesign",name:"NLDesign",category:"Documents",productHref:"/apps/nldesign",docsHref:"https://nldesign.conduction.nl",academyHref:"/academy?app=nldesign"},shillinq:{slug:"shillinq",name:"Shillinq",category:"Processes",productHref:"/apps/shillinq",docsHref:"https://shillinq.conduction.nl",academyHref:"/academy?app=shillinq"},openbuild:{slug:"openbuild",name:"OpenBuild",category:"Processes",productHref:"/apps/openbuild",docsHref:"https://openbuild.conduction.nl",academyHref:"/academy?app=openbuild"},doriath:{slug:"doriath",name:"Doriath",category:"Connectors",productHref:"/apps/doriath",docsHref:"https://doriath.conduction.nl",academyHref:"/academy?app=doriath"},"app-versions":{slug:"app-versions",name:"App Versions",category:"Data",productHref:"/apps/app-versions",docsHref:"https://app-versions.conduction.nl",academyHref:"/academy?app=app-versions"}},r={Data:"BusinessApplication",Processes:"BusinessApplication",Connectors:"DeveloperApplication",Documents:"BusinessApplication",Dashboards:"BusinessApplication",AI:"BusinessApplication"};function t(e){const a=s[e];return a&&r[a.category]||"BusinessApplication"}const o=Object.keys(s);o.reduce((e,a)=>(e[a]=s[a].name,e),{})}}]); \ No newline at end of file diff --git a/docs/build/assets/js/8119.c4eabbab.js b/docs/build/assets/js/8119.c4eabbab.js deleted file mode 100644 index 8a1841cfe..000000000 --- a/docs/build/assets/js/8119.c4eabbab.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[8119],{8119(a,h,s){s.d(h,{createGitGraphServices:()=>c.b});var c=s(3398);s(9302)}}]); \ No newline at end of file diff --git a/docs/build/assets/js/8320.93852659.js b/docs/build/assets/js/8320.93852659.js deleted file mode 100644 index c72ac533a..000000000 --- a/docs/build/assets/js/8320.93852659.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[8320],{8320(r,s,a){a.d(s,{diagram:()=>i});var e=a(4787),t=(a(2501),a(8343),a(9625),a(4345),a(3848),a(6615),a(1334),a(273),a(5105),a(8013),a(5739),a(8515),a(3706),a(797)),i={parser:e._$,get db(){return new e.NM},renderer:e.Lh,styles:e.tM,init:(0,t.K2)(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/8363.c84dffc7.js b/docs/build/assets/js/8363.c84dffc7.js deleted file mode 100644 index 08bbbde26..000000000 --- a/docs/build/assets/js/8363.c84dffc7.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[8363],{8363(t,e,a){a.d(e,{diagram:()=>R});var i,n=a(3894),r=(a(9625),a(4345),a(3848),a(6615),a(1334),a(273),a(5105),a(8013),a(5739),a(8515)),d=a(3706),s=a(797),o=a(451),g=a(1301),h=a(697),p=(0,s.K2)(t=>t.append("circle").attr("class","start-state").attr("r",(0,d.D7)().state.sizeUnit).attr("cx",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit).attr("cy",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit),"drawStartState"),c=(0,s.K2)(t=>t.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",(0,d.D7)().state.textHeight).attr("class","divider").attr("x2",2*(0,d.D7)().state.textHeight).attr("y1",0).attr("y2",0),"drawDivider"),l=(0,s.K2)((t,e)=>{const a=t.append("text").attr("x",2*(0,d.D7)().state.padding).attr("y",(0,d.D7)().state.textHeight+2*(0,d.D7)().state.padding).attr("font-size",(0,d.D7)().state.fontSize).attr("class","state-title").text(e.id),i=a.node().getBBox();return t.insert("rect",":first-child").attr("x",(0,d.D7)().state.padding).attr("y",(0,d.D7)().state.padding).attr("width",i.width+2*(0,d.D7)().state.padding).attr("height",i.height+2*(0,d.D7)().state.padding).attr("rx",(0,d.D7)().state.radius),a},"drawSimpleState"),x=(0,s.K2)((t,e)=>{const a=(0,s.K2)(function(t,e,a){const i=t.append("tspan").attr("x",2*(0,d.D7)().state.padding).text(e);a||i.attr("dy",(0,d.D7)().state.textHeight)},"addTspan"),i=t.append("text").attr("x",2*(0,d.D7)().state.padding).attr("y",(0,d.D7)().state.textHeight+1.3*(0,d.D7)().state.padding).attr("font-size",(0,d.D7)().state.fontSize).attr("class","state-title").text(e.descriptions[0]).node().getBBox(),n=i.height,r=t.append("text").attr("x",(0,d.D7)().state.padding).attr("y",n+.4*(0,d.D7)().state.padding+(0,d.D7)().state.dividerMargin+(0,d.D7)().state.textHeight).attr("class","state-description");let o=!0,g=!0;e.descriptions.forEach(function(t){o||(a(r,t,g),g=!1),o=!1});const h=t.append("line").attr("x1",(0,d.D7)().state.padding).attr("y1",(0,d.D7)().state.padding+n+(0,d.D7)().state.dividerMargin/2).attr("y2",(0,d.D7)().state.padding+n+(0,d.D7)().state.dividerMargin/2).attr("class","descr-divider"),p=r.node().getBBox(),c=Math.max(p.width,i.width);return h.attr("x2",c+3*(0,d.D7)().state.padding),t.insert("rect",":first-child").attr("x",(0,d.D7)().state.padding).attr("y",(0,d.D7)().state.padding).attr("width",c+2*(0,d.D7)().state.padding).attr("height",p.height+n+2*(0,d.D7)().state.padding).attr("rx",(0,d.D7)().state.radius),t},"drawDescrState"),D=(0,s.K2)((t,e,a)=>{const i=(0,d.D7)().state.padding,n=2*(0,d.D7)().state.padding,r=t.node().getBBox(),s=r.width,o=r.x,g=t.append("text").attr("x",0).attr("y",(0,d.D7)().state.titleShift).attr("font-size",(0,d.D7)().state.fontSize).attr("class","state-title").text(e.id),h=g.node().getBBox().width+n;let p,c=Math.max(h,s);c===s&&(c+=n);const l=t.node().getBBox();e.doc,p=o-i,h>s&&(p=(s-c)/2+i),Math.abs(o-l.x)<i&&h>s&&(p=o-(h-s)/2);const x=1-(0,d.D7)().state.textHeight;return t.insert("rect",":first-child").attr("x",p).attr("y",x).attr("class",a?"alt-composit":"composit").attr("width",c).attr("height",l.height+(0,d.D7)().state.textHeight+(0,d.D7)().state.titleShift+1).attr("rx","0"),g.attr("x",p+i),h<=s&&g.attr("x",o+(c-n)/2-h/2+i),t.insert("rect",":first-child").attr("x",p).attr("y",(0,d.D7)().state.titleShift-(0,d.D7)().state.textHeight-(0,d.D7)().state.padding).attr("width",c).attr("height",3*(0,d.D7)().state.textHeight).attr("rx",(0,d.D7)().state.radius),t.insert("rect",":first-child").attr("x",p).attr("y",(0,d.D7)().state.titleShift-(0,d.D7)().state.textHeight-(0,d.D7)().state.padding).attr("width",c).attr("height",l.height+3+2*(0,d.D7)().state.textHeight).attr("rx",(0,d.D7)().state.radius),t},"addTitleAndBox"),u=(0,s.K2)(t=>(t.append("circle").attr("class","end-state-outer").attr("r",(0,d.D7)().state.sizeUnit+(0,d.D7)().state.miniPadding).attr("cx",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit+(0,d.D7)().state.miniPadding).attr("cy",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit+(0,d.D7)().state.miniPadding),t.append("circle").attr("class","end-state-inner").attr("r",(0,d.D7)().state.sizeUnit).attr("cx",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit+2).attr("cy",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit+2)),"drawEndState"),f=(0,s.K2)((t,e)=>{let a=(0,d.D7)().state.forkWidth,i=(0,d.D7)().state.forkHeight;if(e.parentId){let t=a;a=i,i=t}return t.append("rect").style("stroke","black").style("fill","black").attr("width",a).attr("height",i).attr("x",(0,d.D7)().state.padding).attr("y",(0,d.D7)().state.padding)},"drawForkJoinState"),y=(0,s.K2)((t,e,a,i)=>{let n=0;const r=i.append("text");r.style("text-anchor","start"),r.attr("class","noteText");let s=t.replace(/\r\n/g,"<br/>");s=s.replace(/\n/g,"<br/>");const o=s.split(d.Y2.lineBreakRegex);let g=1.25*(0,d.D7)().state.noteMargin;for(const h of o){const t=h.trim();if(t.length>0){const i=r.append("tspan");if(i.text(t),0===g){g+=i.node().getBBox().height}n+=g,i.attr("x",e+(0,d.D7)().state.noteMargin),i.attr("y",a+n+1.25*(0,d.D7)().state.noteMargin)}}return{textWidth:r.node().getBBox().width,textHeight:n}},"_drawLongText"),w=(0,s.K2)((t,e)=>{e.attr("class","state-note");const a=e.append("rect").attr("x",0).attr("y",(0,d.D7)().state.padding),i=e.append("g"),{textWidth:n,textHeight:r}=y(t,0,0,i);return a.attr("height",r+2*(0,d.D7)().state.noteMargin),a.attr("width",n+2*(0,d.D7)().state.noteMargin),a},"drawNote"),m=(0,s.K2)(function(t,e){const a=e.id,i={id:a,label:e.id,width:0,height:0},n=t.append("g").attr("id",a).attr("class","stateGroup");"start"===e.type&&p(n),"end"===e.type&&u(n),"fork"!==e.type&&"join"!==e.type||f(n,e),"note"===e.type&&w(e.note.text,n),"divider"===e.type&&c(n),"default"===e.type&&0===e.descriptions.length&&l(n,e),"default"===e.type&&e.descriptions.length>0&&x(n,e);const r=n.node().getBBox();return i.width=r.width+2*(0,d.D7)().state.padding,i.height=r.height+2*(0,d.D7)().state.padding,i},"drawState"),b=0,B=(0,s.K2)(function(t,e,a){const i=(0,s.K2)(function(t){switch(t){case n.u4.relationType.AGGREGATION:return"aggregation";case n.u4.relationType.EXTENSION:return"extension";case n.u4.relationType.COMPOSITION:return"composition";case n.u4.relationType.DEPENDENCY:return"dependency"}},"getRelationType");e.points=e.points.filter(t=>!Number.isNaN(t.y));const g=e.points,h=(0,o.n8j)().x(function(t){return t.x}).y(function(t){return t.y}).curve(o.qrM),p=t.append("path").attr("d",h(g)).attr("id","edge"+b).attr("class","transition");let c="";if((0,d.D7)().state.arrowMarkerAbsolute&&(c=(0,d.ID)(!0)),p.attr("marker-end","url("+c+"#"+i(n.u4.relationType.DEPENDENCY)+"End)"),void 0!==a.title){const i=t.append("g").attr("class","stateLabel"),{x:n,y:o}=r._K.calcLabelPosition(e.points),g=d.Y2.getRows(a.title);let h=0;const p=[];let c=0,l=0;for(let t=0;t<=g.length;t++){const e=i.append("text").attr("text-anchor","middle").text(g[t]).attr("x",n).attr("y",o+h),a=e.node().getBBox();if(c=Math.max(c,a.width),l=Math.min(l,a.x),s.Rm.info(a.x,n,o+h),0===h){const t=e.node().getBBox();h=t.height,s.Rm.info("Title height",h,o)}p.push(e)}let x=h*g.length;if(g.length>1){const t=(g.length-1)*h*.5;p.forEach((e,a)=>e.attr("y",o+a*h-t)),x=h*g.length}const D=i.node().getBBox();i.insert("rect",":first-child").attr("class","box").attr("x",n-c/2-(0,d.D7)().state.padding/2).attr("y",o-x/2-(0,d.D7)().state.padding/2-3.5).attr("width",c+(0,d.D7)().state.padding).attr("height",x+(0,d.D7)().state.padding),s.Rm.info(D)}b++},"drawEdge"),k={},S=(0,s.K2)(function(){},"setConf"),N=(0,s.K2)(function(t){t.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"insertMarkers"),E=(0,s.K2)(function(t,e,a,n){i=(0,d.D7)().state;const r=(0,d.D7)().securityLevel;let g;"sandbox"===r&&(g=(0,o.Ltv)("#i"+e));const h="sandbox"===r?(0,o.Ltv)(g.nodes()[0].contentDocument.body):(0,o.Ltv)("body"),p="sandbox"===r?g.nodes()[0].contentDocument:document;s.Rm.debug("Rendering diagram "+t);const c=h.select(`[id='${e}']`);N(c);const l=n.db.getRootDoc(),x=c.append("g").attr("id",e+"-root");v(l,x,void 0,!1,h,p,n);const D=i.padding,u=c.node().getBBox(),f=u.width+2*D,y=u.height+2*D,w=1.75*f;(0,d.a$)(c,y,w,i.useMaxWidth),c.attr("viewBox",`${u.x-i.padding} ${u.y-i.padding} `+f+" "+y)},"draw"),M=(0,s.K2)(t=>t?t.length*i.fontSizeFactor:1,"getLabelWidth"),v=(0,s.K2)((t,e,a,n,r,o,p)=>{const c=new h.T({compound:!0,multigraph:!0});let l,x=!0;for(l=0;l<t.length;l++)if("relation"===t[l].stmt){x=!1;break}a?c.setGraph({rankdir:"LR",multigraph:!0,compound:!0,ranker:"tight-tree",ranksep:x?1:i.edgeLengthFactor,nodeSep:x?1:50,isMultiGraph:!0}):c.setGraph({rankdir:"TB",multigraph:!0,compound:!0,ranksep:x?1:i.edgeLengthFactor,nodeSep:x?1:50,ranker:"tight-tree",isMultiGraph:!0}),c.setDefaultEdgeLabel(function(){return{}});const u=p.db.getStates(),f=p.db.getRelations(),y=Object.keys(u);for(const d of y){const t=u[d];let s;if(a&&(t.parentId=a),t.doc){let a=e.append("g").attr("id",t.id).attr("class","stateGroup");s=v(t.doc,a,t.id,!n,r,o,p);{a=D(a,t,n);let e=a.node().getBBox();s.width=e.width,s.height=e.height+i.padding/2,k[t.id]={y:i.compositTitleSize}}}else s=m(e,t,c);if(t.note){const a={descriptions:[],id:t.id+"-note",note:t.note,type:"note"},i=m(e,a,c);"left of"===t.note.position?(c.setNode(s.id+"-note",i),c.setNode(s.id,s)):(c.setNode(s.id,s),c.setNode(s.id+"-note",i)),c.setParent(s.id,s.id+"-group"),c.setParent(s.id+"-note",s.id+"-group")}else c.setNode(s.id,s)}s.Rm.debug("Count=",c.nodeCount(),c);let w=0;f.forEach(function(t){w++,s.Rm.debug("Setting edge",t),c.setEdge(t.id1,t.id2,{relation:t,width:M(t.title),height:i.labelHeight*d.Y2.getRows(t.title).length,labelpos:"c"},"id"+w)}),(0,g.Zp)(c),s.Rm.debug("Graph after layout",c.nodes());const b=e.node();c.nodes().forEach(function(t){if(void 0!==t&&void 0!==c.node(t)){s.Rm.warn("Node "+t+": "+JSON.stringify(c.node(t))),r.select("#"+b.id+" #"+t).attr("transform","translate("+(c.node(t).x-c.node(t).width/2)+","+(c.node(t).y+(k[t]?k[t].y:0)-c.node(t).height/2)+" )"),r.select("#"+b.id+" #"+t).attr("data-x-shift",c.node(t).x-c.node(t).width/2);o.querySelectorAll("#"+b.id+" #"+t+" .divider").forEach(t=>{const e=t.parentElement;let a=0,i=0;e&&(e.parentElement&&(a=e.parentElement.getBBox().width),i=parseInt(e.getAttribute("data-x-shift"),10),Number.isNaN(i)&&(i=0)),t.setAttribute("x1",0-i+8),t.setAttribute("x2",a-i-8)})}else s.Rm.debug("No Node "+t+": "+JSON.stringify(c.node(t)))});let S=b.getBBox();c.edges().forEach(function(t){void 0!==t&&void 0!==c.edge(t)&&(s.Rm.debug("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(c.edge(t))),B(e,c.edge(t),c.edge(t).relation))}),S=b.getBBox();const N={id:a||"root",label:a||"root",width:0,height:0};return N.width=S.width+2*i.padding,N.height=S.height+2*i.padding,s.Rm.debug("Doc rendered",N,c),N},"renderDoc"),K={setConf:S,draw:E},R={parser:n.Zk,get db(){return new n.u4(1)},renderer:K,styles:n.tM,init:(0,s.K2)(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/8646.4b2e4233.js b/docs/build/assets/js/8646.4b2e4233.js deleted file mode 100644 index 8b4e06d29..000000000 --- a/docs/build/assets/js/8646.4b2e4233.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[8646],{8646(t,e,i){i.d(e,{diagram:()=>I});var a=i(3706),n=i(797),s=i(451),r=function(){var t=(0,n.K2)(function(t,e,i,a){for(i=i||{},a=t.length;a--;i[t[a]]=e);return i},"o"),e=[1,3],i=[1,4],a=[1,5],s=[1,6],r=[1,7],o=[1,4,5,10,12,13,14,15,18,25,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],l=[1,4,5,10,12,13,14,15,18,25,28,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],h=[55,56,57],c=[2,36],d=[1,37],u=[1,36],x=[1,38],g=[1,35],f=[1,43],p=[1,41],y=[1,45],T=[1,14],m=[1,23],q=[1,18],A=[1,19],_=[1,20],b=[1,21],S=[1,22],k=[1,24],F=[1,25],P=[1,26],C=[1,27],L=[1,28],v=[1,29],I=[1,32],E=[1,33],D=[1,34],z=[1,39],w=[1,40],K=[1,42],U=[1,44],N=[1,63],R=[1,62],B=[4,5,8,10,12,13,14,15,18,44,47,49,55,56,57,63,64,65,66,67],W=[1,66],$=[1,67],Q=[1,68],O=[1,69],X=[1,70],H=[1,71],M=[1,72],Y=[1,73],j=[1,74],G=[1,75],V=[1,76],Z=[1,77],J=[4,5,6,7,8,9,10,11,12,13,14,15,18],tt=[1,91],et=[1,92],it=[1,93],at=[1,100],nt=[1,94],st=[1,97],rt=[1,95],ot=[1,96],lt=[1,98],ht=[1,99],ct=[1,103],dt=[10,55,56,57],ut=[4,5,6,8,10,11,13,17,18,19,20,55,56,57],xt={trace:(0,n.K2)(function(){},"trace"),yy:{},symbols_:{error:2,idStringToken:3,ALPHA:4,NUM:5,NODE_STRING:6,DOWN:7,MINUS:8,DEFAULT:9,COMMA:10,COLON:11,AMP:12,BRKT:13,MULT:14,UNICODE_TEXT:15,styleComponent:16,UNIT:17,SPACE:18,STYLE:19,PCT:20,idString:21,style:22,stylesOpt:23,classDefStatement:24,CLASSDEF:25,start:26,eol:27,QUADRANT:28,document:29,line:30,statement:31,axisDetails:32,quadrantDetails:33,points:34,title:35,title_value:36,acc_title:37,acc_title_value:38,acc_descr:39,acc_descr_value:40,acc_descr_multiline_value:41,section:42,text:43,point_start:44,point_x:45,point_y:46,class_name:47,"X-AXIS":48,"AXIS-TEXT-DELIMITER":49,"Y-AXIS":50,QUADRANT_1:51,QUADRANT_2:52,QUADRANT_3:53,QUADRANT_4:54,NEWLINE:55,SEMI:56,EOF:57,alphaNumToken:58,textNoTagsToken:59,STR:60,MD_STR:61,alphaNum:62,PUNCTUATION:63,PLUS:64,EQUALS:65,DOT:66,UNDERSCORE:67,$accept:0,$end:1},terminals_:{2:"error",4:"ALPHA",5:"NUM",6:"NODE_STRING",7:"DOWN",8:"MINUS",9:"DEFAULT",10:"COMMA",11:"COLON",12:"AMP",13:"BRKT",14:"MULT",15:"UNICODE_TEXT",17:"UNIT",18:"SPACE",19:"STYLE",20:"PCT",25:"CLASSDEF",28:"QUADRANT",35:"title",36:"title_value",37:"acc_title",38:"acc_title_value",39:"acc_descr",40:"acc_descr_value",41:"acc_descr_multiline_value",42:"section",44:"point_start",45:"point_x",46:"point_y",47:"class_name",48:"X-AXIS",49:"AXIS-TEXT-DELIMITER",50:"Y-AXIS",51:"QUADRANT_1",52:"QUADRANT_2",53:"QUADRANT_3",54:"QUADRANT_4",55:"NEWLINE",56:"SEMI",57:"EOF",60:"STR",61:"MD_STR",63:"PUNCTUATION",64:"PLUS",65:"EQUALS",66:"DOT",67:"UNDERSCORE"},productions_:[0,[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[21,1],[21,2],[22,1],[22,2],[23,1],[23,3],[24,5],[26,2],[26,2],[26,2],[29,0],[29,2],[30,2],[31,0],[31,1],[31,2],[31,1],[31,1],[31,1],[31,2],[31,2],[31,2],[31,1],[31,1],[34,4],[34,5],[34,5],[34,6],[32,4],[32,3],[32,2],[32,4],[32,3],[32,2],[33,2],[33,2],[33,2],[33,2],[27,1],[27,1],[27,1],[43,1],[43,2],[43,1],[43,1],[62,1],[62,2],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[59,1],[59,1],[59,1]],performAction:(0,n.K2)(function(t,e,i,a,n,s,r){var o=s.length-1;switch(n){case 23:case 68:this.$=s[o];break;case 24:case 69:this.$=s[o-1]+""+s[o];break;case 26:this.$=s[o-1]+s[o];break;case 27:this.$=[s[o].trim()];break;case 28:s[o-2].push(s[o].trim()),this.$=s[o-2];break;case 29:this.$=s[o-4],a.addClass(s[o-2],s[o]);break;case 37:this.$=[];break;case 42:this.$=s[o].trim(),a.setDiagramTitle(this.$);break;case 43:this.$=s[o].trim(),a.setAccTitle(this.$);break;case 44:case 45:this.$=s[o].trim(),a.setAccDescription(this.$);break;case 46:a.addSection(s[o].substr(8)),this.$=s[o].substr(8);break;case 47:a.addPoint(s[o-3],"",s[o-1],s[o],[]);break;case 48:a.addPoint(s[o-4],s[o-3],s[o-1],s[o],[]);break;case 49:a.addPoint(s[o-4],"",s[o-2],s[o-1],s[o]);break;case 50:a.addPoint(s[o-5],s[o-4],s[o-2],s[o-1],s[o]);break;case 51:a.setXAxisLeftText(s[o-2]),a.setXAxisRightText(s[o]);break;case 52:s[o-1].text+=" \u27f6 ",a.setXAxisLeftText(s[o-1]);break;case 53:a.setXAxisLeftText(s[o]);break;case 54:a.setYAxisBottomText(s[o-2]),a.setYAxisTopText(s[o]);break;case 55:s[o-1].text+=" \u27f6 ",a.setYAxisBottomText(s[o-1]);break;case 56:a.setYAxisBottomText(s[o]);break;case 57:a.setQuadrant1Text(s[o]);break;case 58:a.setQuadrant2Text(s[o]);break;case 59:a.setQuadrant3Text(s[o]);break;case 60:a.setQuadrant4Text(s[o]);break;case 64:case 66:this.$={text:s[o],type:"text"};break;case 65:this.$={text:s[o-1].text+""+s[o],type:s[o-1].type};break;case 67:this.$={text:s[o],type:"markdown"}}},"anonymous"),table:[{18:e,26:1,27:2,28:i,55:a,56:s,57:r},{1:[3]},{18:e,26:8,27:2,28:i,55:a,56:s,57:r},{18:e,26:9,27:2,28:i,55:a,56:s,57:r},t(o,[2,33],{29:10}),t(l,[2,61]),t(l,[2,62]),t(l,[2,63]),{1:[2,30]},{1:[2,31]},t(h,c,{30:11,31:12,24:13,32:15,33:16,34:17,43:30,58:31,1:[2,32],4:d,5:u,10:x,12:g,13:f,14:p,15:y,18:T,25:m,35:q,37:A,39:_,41:b,42:S,48:k,50:F,51:P,52:C,53:L,54:v,60:I,61:E,63:D,64:z,65:w,66:K,67:U}),t(o,[2,34]),{27:46,55:a,56:s,57:r},t(h,[2,37]),t(h,c,{24:13,32:15,33:16,34:17,43:30,58:31,31:47,4:d,5:u,10:x,12:g,13:f,14:p,15:y,18:T,25:m,35:q,37:A,39:_,41:b,42:S,48:k,50:F,51:P,52:C,53:L,54:v,60:I,61:E,63:D,64:z,65:w,66:K,67:U}),t(h,[2,39]),t(h,[2,40]),t(h,[2,41]),{36:[1,48]},{38:[1,49]},{40:[1,50]},t(h,[2,45]),t(h,[2,46]),{18:[1,51]},{4:d,5:u,10:x,12:g,13:f,14:p,15:y,43:52,58:31,60:I,61:E,63:D,64:z,65:w,66:K,67:U},{4:d,5:u,10:x,12:g,13:f,14:p,15:y,43:53,58:31,60:I,61:E,63:D,64:z,65:w,66:K,67:U},{4:d,5:u,10:x,12:g,13:f,14:p,15:y,43:54,58:31,60:I,61:E,63:D,64:z,65:w,66:K,67:U},{4:d,5:u,10:x,12:g,13:f,14:p,15:y,43:55,58:31,60:I,61:E,63:D,64:z,65:w,66:K,67:U},{4:d,5:u,10:x,12:g,13:f,14:p,15:y,43:56,58:31,60:I,61:E,63:D,64:z,65:w,66:K,67:U},{4:d,5:u,10:x,12:g,13:f,14:p,15:y,43:57,58:31,60:I,61:E,63:D,64:z,65:w,66:K,67:U},{4:d,5:u,8:N,10:x,12:g,13:f,14:p,15:y,18:R,44:[1,58],47:[1,59],58:61,59:60,63:D,64:z,65:w,66:K,67:U},t(B,[2,64]),t(B,[2,66]),t(B,[2,67]),t(B,[2,70]),t(B,[2,71]),t(B,[2,72]),t(B,[2,73]),t(B,[2,74]),t(B,[2,75]),t(B,[2,76]),t(B,[2,77]),t(B,[2,78]),t(B,[2,79]),t(B,[2,80]),t(B,[2,81]),t(o,[2,35]),t(h,[2,38]),t(h,[2,42]),t(h,[2,43]),t(h,[2,44]),{3:65,4:W,5:$,6:Q,7:O,8:X,9:H,10:M,11:Y,12:j,13:G,14:V,15:Z,21:64},t(h,[2,53],{59:60,58:61,4:d,5:u,8:N,10:x,12:g,13:f,14:p,15:y,18:R,49:[1,78],63:D,64:z,65:w,66:K,67:U}),t(h,[2,56],{59:60,58:61,4:d,5:u,8:N,10:x,12:g,13:f,14:p,15:y,18:R,49:[1,79],63:D,64:z,65:w,66:K,67:U}),t(h,[2,57],{59:60,58:61,4:d,5:u,8:N,10:x,12:g,13:f,14:p,15:y,18:R,63:D,64:z,65:w,66:K,67:U}),t(h,[2,58],{59:60,58:61,4:d,5:u,8:N,10:x,12:g,13:f,14:p,15:y,18:R,63:D,64:z,65:w,66:K,67:U}),t(h,[2,59],{59:60,58:61,4:d,5:u,8:N,10:x,12:g,13:f,14:p,15:y,18:R,63:D,64:z,65:w,66:K,67:U}),t(h,[2,60],{59:60,58:61,4:d,5:u,8:N,10:x,12:g,13:f,14:p,15:y,18:R,63:D,64:z,65:w,66:K,67:U}),{45:[1,80]},{44:[1,81]},t(B,[2,65]),t(B,[2,82]),t(B,[2,83]),t(B,[2,84]),{3:83,4:W,5:$,6:Q,7:O,8:X,9:H,10:M,11:Y,12:j,13:G,14:V,15:Z,18:[1,82]},t(J,[2,23]),t(J,[2,1]),t(J,[2,2]),t(J,[2,3]),t(J,[2,4]),t(J,[2,5]),t(J,[2,6]),t(J,[2,7]),t(J,[2,8]),t(J,[2,9]),t(J,[2,10]),t(J,[2,11]),t(J,[2,12]),t(h,[2,52],{58:31,43:84,4:d,5:u,10:x,12:g,13:f,14:p,15:y,60:I,61:E,63:D,64:z,65:w,66:K,67:U}),t(h,[2,55],{58:31,43:85,4:d,5:u,10:x,12:g,13:f,14:p,15:y,60:I,61:E,63:D,64:z,65:w,66:K,67:U}),{46:[1,86]},{45:[1,87]},{4:tt,5:et,6:it,8:at,11:nt,13:st,16:90,17:rt,18:ot,19:lt,20:ht,22:89,23:88},t(J,[2,24]),t(h,[2,51],{59:60,58:61,4:d,5:u,8:N,10:x,12:g,13:f,14:p,15:y,18:R,63:D,64:z,65:w,66:K,67:U}),t(h,[2,54],{59:60,58:61,4:d,5:u,8:N,10:x,12:g,13:f,14:p,15:y,18:R,63:D,64:z,65:w,66:K,67:U}),t(h,[2,47],{22:89,16:90,23:101,4:tt,5:et,6:it,8:at,11:nt,13:st,17:rt,18:ot,19:lt,20:ht}),{46:[1,102]},t(h,[2,29],{10:ct}),t(dt,[2,27],{16:104,4:tt,5:et,6:it,8:at,11:nt,13:st,17:rt,18:ot,19:lt,20:ht}),t(ut,[2,25]),t(ut,[2,13]),t(ut,[2,14]),t(ut,[2,15]),t(ut,[2,16]),t(ut,[2,17]),t(ut,[2,18]),t(ut,[2,19]),t(ut,[2,20]),t(ut,[2,21]),t(ut,[2,22]),t(h,[2,49],{10:ct}),t(h,[2,48],{22:89,16:90,23:105,4:tt,5:et,6:it,8:at,11:nt,13:st,17:rt,18:ot,19:lt,20:ht}),{4:tt,5:et,6:it,8:at,11:nt,13:st,16:90,17:rt,18:ot,19:lt,20:ht,22:106},t(ut,[2,26]),t(h,[2,50],{10:ct}),t(dt,[2,28],{16:104,4:tt,5:et,6:it,8:at,11:nt,13:st,17:rt,18:ot,19:lt,20:ht})],defaultActions:{8:[2,30],9:[2,31]},parseError:(0,n.K2)(function(t,e){if(!e.recoverable){var i=new Error(t);throw i.hash=e,i}this.trace(t)},"parseError"),parse:(0,n.K2)(function(t){var e=this,i=[0],a=[],s=[null],r=[],o=this.table,l="",h=0,c=0,d=0,u=r.slice.call(arguments,1),x=Object.create(this.lexer),g={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(g.yy[f]=this.yy[f]);x.setInput(t,g.yy),g.yy.lexer=x,g.yy.parser=this,void 0===x.yylloc&&(x.yylloc={});var p=x.yylloc;r.push(p);var y=x.options&&x.options.ranges;function T(){var t;return"number"!=typeof(t=a.pop()||x.lex()||1)&&(t instanceof Array&&(t=(a=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,n.K2)(function(t){i.length=i.length-2*t,s.length=s.length-t,r.length=r.length-t},"popStack"),(0,n.K2)(T,"lex");for(var m,q,A,_,b,S,k,F,P,C={};;){if(A=i[i.length-1],this.defaultActions[A]?_=this.defaultActions[A]:(null==m&&(m=T()),_=o[A]&&o[A][m]),void 0===_||!_.length||!_[0]){var L="";for(S in P=[],o[A])this.terminals_[S]&&S>2&&P.push("'"+this.terminals_[S]+"'");L=x.showPosition?"Parse error on line "+(h+1)+":\n"+x.showPosition()+"\nExpecting "+P.join(", ")+", got '"+(this.terminals_[m]||m)+"'":"Parse error on line "+(h+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(L,{text:x.match,token:this.terminals_[m]||m,line:x.yylineno,loc:p,expected:P})}if(_[0]instanceof Array&&_.length>1)throw new Error("Parse Error: multiple actions possible at state: "+A+", token: "+m);switch(_[0]){case 1:i.push(m),s.push(x.yytext),r.push(x.yylloc),i.push(_[1]),m=null,q?(m=q,q=null):(c=x.yyleng,l=x.yytext,h=x.yylineno,p=x.yylloc,d>0&&d--);break;case 2:if(k=this.productions_[_[1]][1],C.$=s[s.length-k],C._$={first_line:r[r.length-(k||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(k||1)].first_column,last_column:r[r.length-1].last_column},y&&(C._$.range=[r[r.length-(k||1)].range[0],r[r.length-1].range[1]]),void 0!==(b=this.performAction.apply(C,[l,c,h,g.yy,_[1],s,r].concat(u))))return b;k&&(i=i.slice(0,-1*k*2),s=s.slice(0,-1*k),r=r.slice(0,-1*k)),i.push(this.productions_[_[1]][0]),s.push(C.$),r.push(C._$),F=o[i[i.length-2]][i[i.length-1]],i.push(F);break;case 3:return!0}}return!0},"parse")},gt=function(){return{EOF:1,parseError:(0,n.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,n.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,n.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,n.K2)(function(t){var e=t.length,i=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var a=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===a.length?this.yylloc.first_column:0)+a[a.length-i.length].length-i[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,n.K2)(function(){return this._more=!0,this},"more"),reject:(0,n.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,n.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,n.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,n.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,n.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,n.K2)(function(t,e){var i,a,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(a=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=a.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:a?a[a.length-1].length-a[a.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],i=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var s in n)this[s]=n[s];return!1}return!1},"test_match"),next:(0,n.K2)(function(){if(this.done)return this.EOF;var t,e,i,a;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),s=0;s<n.length;s++)if((i=this._input.match(this.rules[n[s]]))&&(!e||i[0].length>e[0].length)){if(e=i,a=s,this.options.backtrack_lexer){if(!1!==(t=this.test_match(i,n[s])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[a]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,n.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,n.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,n.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,n.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,n.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,n.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,n.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,n.K2)(function(t,e,i,a){switch(i){case 0:case 1:case 3:break;case 2:return 55;case 4:return this.begin("title"),35;case 5:return this.popState(),"title_value";case 6:return this.begin("acc_title"),37;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),39;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:case 23:case 25:case 31:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 48;case 14:return 50;case 15:return 49;case 16:return 51;case 17:return 52;case 18:return 53;case 19:return 54;case 20:return 25;case 21:this.begin("md_string");break;case 22:return"MD_STR";case 24:this.begin("string");break;case 26:return"STR";case 27:this.begin("class_name");break;case 28:return this.popState(),47;case 29:return this.begin("point_start"),44;case 30:return this.begin("point_x"),45;case 32:this.popState(),this.begin("point_y");break;case 33:return this.popState(),46;case 34:return 28;case 35:return 4;case 36:return 15;case 37:return 11;case 38:return 64;case 39:return 10;case 40:case 41:return 65;case 42:return 14;case 43:return 13;case 44:return 67;case 45:return 66;case 46:return 12;case 47:return 8;case 48:return 5;case 49:return 18;case 50:return 56;case 51:return 63;case 52:return 57}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:classDef\b)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?::::)/i,/^(?:^\w+)/i,/^(?:\s*:\s*\[\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?:\s*\] *)/i,/^(?:\s*,\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?:[^\x00-\x7F]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s)/i,/^(?:;)/i,/^(?:[!"#$%&'*+,-.`?\\_/])/i,/^(?:$)/i],conditions:{class_name:{rules:[28],inclusive:!1},point_y:{rules:[33],inclusive:!1},point_x:{rules:[32],inclusive:!1},point_start:{rules:[30,31],inclusive:!1},acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},title:{rules:[5],inclusive:!1},md_string:{rules:[22,23],inclusive:!1},string:{rules:[25,26],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,6,8,10,13,14,15,16,17,18,19,20,21,24,27,29,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],inclusive:!0}}}}();function ft(){this.yy={}}return xt.lexer=gt,(0,n.K2)(ft,"Parser"),ft.prototype=xt,xt.Parser=ft,new ft}();r.parser=r;var o=r,l=(0,a.P$)(),h=class{constructor(){this.classes=new Map,this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}static{(0,n.K2)(this,"QuadrantBuilder")}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:a.UI.quadrantChart?.chartWidth||500,chartWidth:a.UI.quadrantChart?.chartHeight||500,titlePadding:a.UI.quadrantChart?.titlePadding||10,titleFontSize:a.UI.quadrantChart?.titleFontSize||20,quadrantPadding:a.UI.quadrantChart?.quadrantPadding||5,xAxisLabelPadding:a.UI.quadrantChart?.xAxisLabelPadding||5,yAxisLabelPadding:a.UI.quadrantChart?.yAxisLabelPadding||5,xAxisLabelFontSize:a.UI.quadrantChart?.xAxisLabelFontSize||16,yAxisLabelFontSize:a.UI.quadrantChart?.yAxisLabelFontSize||16,quadrantLabelFontSize:a.UI.quadrantChart?.quadrantLabelFontSize||16,quadrantTextTopPadding:a.UI.quadrantChart?.quadrantTextTopPadding||5,pointTextPadding:a.UI.quadrantChart?.pointTextPadding||5,pointLabelFontSize:a.UI.quadrantChart?.pointLabelFontSize||12,pointRadius:a.UI.quadrantChart?.pointRadius||5,xAxisPosition:a.UI.quadrantChart?.xAxisPosition||"top",yAxisPosition:a.UI.quadrantChart?.yAxisPosition||"left",quadrantInternalBorderStrokeWidth:a.UI.quadrantChart?.quadrantInternalBorderStrokeWidth||1,quadrantExternalBorderStrokeWidth:a.UI.quadrantChart?.quadrantExternalBorderStrokeWidth||2}}getDefaultThemeConfig(){return{quadrant1Fill:l.quadrant1Fill,quadrant2Fill:l.quadrant2Fill,quadrant3Fill:l.quadrant3Fill,quadrant4Fill:l.quadrant4Fill,quadrant1TextFill:l.quadrant1TextFill,quadrant2TextFill:l.quadrant2TextFill,quadrant3TextFill:l.quadrant3TextFill,quadrant4TextFill:l.quadrant4TextFill,quadrantPointFill:l.quadrantPointFill,quadrantPointTextFill:l.quadrantPointTextFill,quadrantXAxisTextFill:l.quadrantXAxisTextFill,quadrantYAxisTextFill:l.quadrantYAxisTextFill,quadrantTitleFill:l.quadrantTitleFill,quadrantInternalBorderStrokeFill:l.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:l.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),this.classes=new Map,n.Rm.info("clear called")}setData(t){this.data={...this.data,...t}}addPoints(t){this.data.points=[...t,...this.data.points]}addClass(t,e){this.classes.set(t,e)}setConfig(t){n.Rm.trace("setConfig called with: ",t),this.config={...this.config,...t}}setThemeConfig(t){n.Rm.trace("setThemeConfig called with: ",t),this.themeConfig={...this.themeConfig,...t}}calculateSpace(t,e,i,a){const n=2*this.config.xAxisLabelPadding+this.config.xAxisLabelFontSize,s={top:"top"===t&&e?n:0,bottom:"bottom"===t&&e?n:0},r=2*this.config.yAxisLabelPadding+this.config.yAxisLabelFontSize,o={left:"left"===this.config.yAxisPosition&&i?r:0,right:"right"===this.config.yAxisPosition&&i?r:0},l=this.config.titleFontSize+2*this.config.titlePadding,h={top:a?l:0},c=this.config.quadrantPadding+o.left,d=this.config.quadrantPadding+s.top+h.top,u=this.config.chartWidth-2*this.config.quadrantPadding-o.left-o.right,x=this.config.chartHeight-2*this.config.quadrantPadding-s.top-s.bottom-h.top;return{xAxisSpace:s,yAxisSpace:o,titleSpace:h,quadrantSpace:{quadrantLeft:c,quadrantTop:d,quadrantWidth:u,quadrantHalfWidth:u/2,quadrantHeight:x,quadrantHalfHeight:x/2}}}getAxisLabels(t,e,i,a){const{quadrantSpace:n,titleSpace:s}=a,{quadrantHalfHeight:r,quadrantHeight:o,quadrantLeft:l,quadrantHalfWidth:h,quadrantTop:c,quadrantWidth:d}=n,u=Boolean(this.data.xAxisRightText),x=Boolean(this.data.yAxisTopText),g=[];return this.data.xAxisLeftText&&e&&g.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:l+(u?h/2:0),y:"top"===t?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+c+o+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:u?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&e&&g.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:l+h+(u?h/2:0),y:"top"===t?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+c+o+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:u?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&i&&g.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:"left"===this.config.yAxisPosition?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+l+d+this.config.quadrantPadding,y:c+o-(x?r/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:x?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&i&&g.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:"left"===this.config.yAxisPosition?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+l+d+this.config.quadrantPadding,y:c+r-(x?r/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:x?"center":"left",horizontalPos:"top",rotation:-90}),g}getQuadrants(t){const{quadrantSpace:e}=t,{quadrantHalfHeight:i,quadrantLeft:a,quadrantHalfWidth:n,quadrantTop:s}=e,r=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a+n,y:s,width:n,height:i,fill:this.themeConfig.quadrant1Fill},{text:{text:this.data.quadrant2Text,fill:this.themeConfig.quadrant2TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a,y:s,width:n,height:i,fill:this.themeConfig.quadrant2Fill},{text:{text:this.data.quadrant3Text,fill:this.themeConfig.quadrant3TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a,y:s+i,width:n,height:i,fill:this.themeConfig.quadrant3Fill},{text:{text:this.data.quadrant4Text,fill:this.themeConfig.quadrant4TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a+n,y:s+i,width:n,height:i,fill:this.themeConfig.quadrant4Fill}];for(const o of r)o.text.x=o.x+o.width/2,0===this.data.points.length?(o.text.y=o.y+o.height/2,o.text.horizontalPos="middle"):(o.text.y=o.y+this.config.quadrantTextTopPadding,o.text.horizontalPos="top");return r}getQuadrantPoints(t){const{quadrantSpace:e}=t,{quadrantHeight:i,quadrantLeft:a,quadrantTop:n,quadrantWidth:r}=e,o=(0,s.m4Y)().domain([0,1]).range([a,r+a]),l=(0,s.m4Y)().domain([0,1]).range([i+n,n]);return this.data.points.map(t=>{const e=this.classes.get(t.className);e&&(t={...e,...t});return{x:o(t.x),y:l(t.y),fill:t.color??this.themeConfig.quadrantPointFill,radius:t.radius??this.config.pointRadius,text:{text:t.text,fill:this.themeConfig.quadrantPointTextFill,x:o(t.x),y:l(t.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0},strokeColor:t.strokeColor??this.themeConfig.quadrantPointFill,strokeWidth:t.strokeWidth??"0px"}})}getBorders(t){const e=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:i}=t,{quadrantHalfHeight:a,quadrantHeight:n,quadrantLeft:s,quadrantHalfWidth:r,quadrantTop:o,quadrantWidth:l}=i;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-e,y1:o,x2:s+l+e,y2:o},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s+l,y1:o+e,x2:s+l,y2:o+n-e},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-e,y1:o+n,x2:s+l+e,y2:o+n},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s,y1:o+e,x2:s,y2:o+n-e},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+r,y1:o+e,x2:s+r,y2:o+n-e},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+e,y1:o+a,x2:s+l-e,y2:o+a}]}getTitle(t){if(t)return{text:this.data.titleText,fill:this.themeConfig.quadrantTitleFill,fontSize:this.config.titleFontSize,horizontalPos:"top",verticalPos:"center",rotation:0,y:this.config.titlePadding,x:this.config.chartWidth/2}}build(){const t=this.config.showXAxis&&!(!this.data.xAxisLeftText&&!this.data.xAxisRightText),e=this.config.showYAxis&&!(!this.data.yAxisTopText&&!this.data.yAxisBottomText),i=this.config.showTitle&&!!this.data.titleText,a=this.data.points.length>0?"bottom":this.config.xAxisPosition,n=this.calculateSpace(a,t,e,i);return{points:this.getQuadrantPoints(n),quadrants:this.getQuadrants(n),axisLabels:this.getAxisLabels(a,t,e,n),borderLines:this.getBorders(n),title:this.getTitle(i)}}},c=class extends Error{static{(0,n.K2)(this,"InvalidStyleError")}constructor(t,e,i){super(`value for ${t} ${e} is invalid, please use a valid ${i}`),this.name="InvalidStyleError"}};function d(t){return!/^#?([\dA-Fa-f]{6}|[\dA-Fa-f]{3})$/.test(t)}function u(t){return!/^\d+$/.test(t)}function x(t){return!/^\d+px$/.test(t)}(0,n.K2)(d,"validateHexCode"),(0,n.K2)(u,"validateNumber"),(0,n.K2)(x,"validateSizeInPixels");var g=(0,a.D7)();function f(t){return(0,a.jZ)(t.trim(),g)}(0,n.K2)(f,"textSanitizer");var p=new h;function y(t){p.setData({quadrant1Text:f(t.text)})}function T(t){p.setData({quadrant2Text:f(t.text)})}function m(t){p.setData({quadrant3Text:f(t.text)})}function q(t){p.setData({quadrant4Text:f(t.text)})}function A(t){p.setData({xAxisLeftText:f(t.text)})}function _(t){p.setData({xAxisRightText:f(t.text)})}function b(t){p.setData({yAxisTopText:f(t.text)})}function S(t){p.setData({yAxisBottomText:f(t.text)})}function k(t){const e={};for(const i of t){const[t,a]=i.trim().split(/\s*:\s*/);if("radius"===t){if(u(a))throw new c(t,a,"number");e.radius=parseInt(a)}else if("color"===t){if(d(a))throw new c(t,a,"hex code");e.color=a}else if("stroke-color"===t){if(d(a))throw new c(t,a,"hex code");e.strokeColor=a}else{if("stroke-width"!==t)throw new Error(`style named ${t} is not supported.`);if(x(a))throw new c(t,a,"number of pixels (eg. 10px)");e.strokeWidth=a}}return e}function F(t,e,i,a,n){const s=k(n);p.addPoints([{x:i,y:a,text:f(t.text),className:e,...s}])}function P(t,e){p.addClass(t,k(e))}function C(t){p.setConfig({chartWidth:t})}function L(t){p.setConfig({chartHeight:t})}function v(){const t=(0,a.D7)(),{themeVariables:e,quadrantChart:i}=t;return i&&p.setConfig(i),p.setThemeConfig({quadrant1Fill:e.quadrant1Fill,quadrant2Fill:e.quadrant2Fill,quadrant3Fill:e.quadrant3Fill,quadrant4Fill:e.quadrant4Fill,quadrant1TextFill:e.quadrant1TextFill,quadrant2TextFill:e.quadrant2TextFill,quadrant3TextFill:e.quadrant3TextFill,quadrant4TextFill:e.quadrant4TextFill,quadrantPointFill:e.quadrantPointFill,quadrantPointTextFill:e.quadrantPointTextFill,quadrantXAxisTextFill:e.quadrantXAxisTextFill,quadrantYAxisTextFill:e.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:e.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:e.quadrantInternalBorderStrokeFill,quadrantTitleFill:e.quadrantTitleFill}),p.setData({titleText:(0,a.ab)()}),p.build()}(0,n.K2)(y,"setQuadrant1Text"),(0,n.K2)(T,"setQuadrant2Text"),(0,n.K2)(m,"setQuadrant3Text"),(0,n.K2)(q,"setQuadrant4Text"),(0,n.K2)(A,"setXAxisLeftText"),(0,n.K2)(_,"setXAxisRightText"),(0,n.K2)(b,"setYAxisTopText"),(0,n.K2)(S,"setYAxisBottomText"),(0,n.K2)(k,"parseStyles"),(0,n.K2)(F,"addPoint"),(0,n.K2)(P,"addClass"),(0,n.K2)(C,"setWidth"),(0,n.K2)(L,"setHeight"),(0,n.K2)(v,"getQuadrantData");var I={parser:o,db:{setWidth:C,setHeight:L,setQuadrant1Text:y,setQuadrant2Text:T,setQuadrant3Text:m,setQuadrant4Text:q,setXAxisLeftText:A,setXAxisRightText:_,setYAxisTopText:b,setYAxisBottomText:S,parseStyles:k,addPoint:F,addClass:P,getQuadrantData:v,clear:(0,n.K2)(function(){p.clear(),(0,a.IU)()},"clear"),setAccTitle:a.SV,getAccTitle:a.iN,setDiagramTitle:a.ke,getDiagramTitle:a.ab,getAccDescription:a.m7,setAccDescription:a.EI},renderer:{draw:(0,n.K2)((t,e,i,r)=>{function o(t){return"top"===t?"hanging":"middle"}function l(t){return"left"===t?"start":"middle"}function h(t){return`translate(${t.x}, ${t.y}) rotate(${t.rotation||0})`}(0,n.K2)(o,"getDominantBaseLine"),(0,n.K2)(l,"getTextAnchor"),(0,n.K2)(h,"getTransformation");const c=(0,a.D7)();n.Rm.debug("Rendering quadrant chart\n"+t);const d=c.securityLevel;let u;"sandbox"===d&&(u=(0,s.Ltv)("#i"+e));const x=("sandbox"===d?(0,s.Ltv)(u.nodes()[0].contentDocument.body):(0,s.Ltv)("body")).select(`[id="${e}"]`),g=x.append("g").attr("class","main"),f=c.quadrantChart?.chartWidth??500,p=c.quadrantChart?.chartHeight??500;(0,a.a$)(x,p,f,c.quadrantChart?.useMaxWidth??!0),x.attr("viewBox","0 0 "+f+" "+p),r.db.setHeight(p),r.db.setWidth(f);const y=r.db.getQuadrantData(),T=g.append("g").attr("class","quadrants"),m=g.append("g").attr("class","border"),q=g.append("g").attr("class","data-points"),A=g.append("g").attr("class","labels"),_=g.append("g").attr("class","title");y.title&&_.append("text").attr("x",0).attr("y",0).attr("fill",y.title.fill).attr("font-size",y.title.fontSize).attr("dominant-baseline",o(y.title.horizontalPos)).attr("text-anchor",l(y.title.verticalPos)).attr("transform",h(y.title)).text(y.title.text),y.borderLines&&m.selectAll("line").data(y.borderLines).enter().append("line").attr("x1",t=>t.x1).attr("y1",t=>t.y1).attr("x2",t=>t.x2).attr("y2",t=>t.y2).style("stroke",t=>t.strokeFill).style("stroke-width",t=>t.strokeWidth);const b=T.selectAll("g.quadrant").data(y.quadrants).enter().append("g").attr("class","quadrant");b.append("rect").attr("x",t=>t.x).attr("y",t=>t.y).attr("width",t=>t.width).attr("height",t=>t.height).attr("fill",t=>t.fill),b.append("text").attr("x",0).attr("y",0).attr("fill",t=>t.text.fill).attr("font-size",t=>t.text.fontSize).attr("dominant-baseline",t=>o(t.text.horizontalPos)).attr("text-anchor",t=>l(t.text.verticalPos)).attr("transform",t=>h(t.text)).text(t=>t.text.text);A.selectAll("g.label").data(y.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text(t=>t.text).attr("fill",t=>t.fill).attr("font-size",t=>t.fontSize).attr("dominant-baseline",t=>o(t.horizontalPos)).attr("text-anchor",t=>l(t.verticalPos)).attr("transform",t=>h(t));const S=q.selectAll("g.data-point").data(y.points).enter().append("g").attr("class","data-point");S.append("circle").attr("cx",t=>t.x).attr("cy",t=>t.y).attr("r",t=>t.radius).attr("fill",t=>t.fill).attr("stroke",t=>t.strokeColor).attr("stroke-width",t=>t.strokeWidth),S.append("text").attr("x",0).attr("y",0).text(t=>t.text.text).attr("fill",t=>t.text.fill).attr("font-size",t=>t.text.fontSize).attr("dominant-baseline",t=>o(t.text.horizontalPos)).attr("text-anchor",t=>l(t.text.verticalPos)).attr("transform",t=>h(t.text))},"draw")},styles:(0,n.K2)(()=>"","styles")}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/8cb5fad5.ace0548f.js b/docs/build/assets/js/8cb5fad5.ace0548f.js deleted file mode 100644 index 99ab38e1f..000000000 --- a/docs/build/assets/js/8cb5fad5.ace0548f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[4673],{5261(i){i.exports=JSON.parse('{"categoryGeneratedIndex":{"title":"Admin guide","description":"Org-wide administration \u2014 toggling features, configuring policies, and managing users or groups.","slug":"/category/admin-guide","permalink":"/docs/category/admin-guide","sidebar":"tutorialSidebar","navigation":{"previous":{"title":"Open Doriath for the first time","permalink":"/docs/tutorials/user/first-launch"},"next":{"title":"Manage Doriath settings","permalink":"/docs/tutorials/admin/admin-settings"}}}}')}}]); \ No newline at end of file diff --git a/docs/build/assets/js/922e3df9.9aa2bb8d.js b/docs/build/assets/js/922e3df9.9aa2bb8d.js deleted file mode 100644 index aaea943e4..000000000 --- a/docs/build/assets/js/922e3df9.9aa2bb8d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[9011],{9408(e,i,t){t.r(i),t.d(i,{assets:()=>d,contentTitle:()=>a,default:()=>c,frontMatter:()=>o,metadata:()=>n,toc:()=>l});const n=JSON.parse('{"id":"tutorials/admin/admin-settings","title":"Manage Doriath settings","description":"Configure encryption, group-level sharing policies, and the audit log from the Nextcloud admin settings panel.","source":"@site/tutorials/admin/01-admin-settings.md","sourceDirName":"tutorials/admin","slug":"/tutorials/admin/admin-settings","permalink":"/docs/tutorials/admin/admin-settings","draft":false,"unlisted":false,"editUrl":"https://github.com/ConductionNL/doriath/tree/development/docs/tutorials/admin/01-admin-settings.md","tags":[],"version":"current","sidebarPosition":1,"frontMatter":{"sidebar_position":1,"title":"Manage Doriath settings","description":"Configure encryption, group-level sharing policies, and the audit log from the Nextcloud admin settings panel."},"sidebar":"tutorialSidebar","previous":{"title":"Admin guide","permalink":"/docs/category/admin-guide"},"next":{"title":"Doriath \u2014 Architecture & Data Model","permalink":"/docs/ARCHITECTURE"}}');var s=t(4848),r=t(8453);const o={sidebar_position:1,title:"Manage Doriath settings",description:"Configure encryption, group-level sharing policies, and the audit log from the Nextcloud admin settings panel."},a="Manage Doriath settings",d={},l=[{value:"Goal",id:"goal",level:2},{value:"Prerequisites",id:"prerequisites",level:2},{value:"Steps",id:"steps",level:2},{value:"Verification",id:"verification",level:2},{value:"Common issues",id:"common-issues",level:2},{value:"Reference",id:"reference",level:2}];function h(e){const i={a:"a",blockquote:"blockquote",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.header,{children:(0,s.jsx)(i.h1,{id:"manage-doriath-settings",children:"Manage Doriath settings"})}),"\n",(0,s.jsx)(i.p,{children:"The admin-side configuration for Doriath \u2014 encryption back end,\ngroup-level sharing policy, audit retention."}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"This guide is being written as Doriath approaches feature-completeness."}),"\nThe structure below mirrors the journeydoc shape the rest of the\nfleet uses; bodies and screenshots fill in once the admin UI lands.\nFollow the ",(0,s.jsx)(i.a,{href:"https://github.com/ConductionNL/doriath",children:"GitHub repository"}),"\nfor milestones."]}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"goal",children:"Goal"}),"\n",(0,s.jsxs)(i.p,{children:["By the end of this guide you will have opened the Doriath admin panel\nunder ",(0,s.jsx)(i.strong,{children:"Settings \u2192 Administration \u2192 Doriath"}),", verified that the\nencryption back end is wired up, set a default sharing policy for new\nteam vaults, and confirmed that the audit log is being written."]}),"\n",(0,s.jsx)(i.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"A Nextcloud admin account on an instance where Doriath is installed\nand enabled."}),"\n",(0,s.jsxs)(i.li,{children:["The ",(0,s.jsx)(i.strong,{children:"OpenRegister"})," app installed and enabled."]}),"\n",(0,s.jsx)(i.li,{children:"Nextcloud server-side encryption configured at the platform level\n(Doriath does not enable it for you \u2014 it relies on it)."}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"steps",children:"Steps"}),"\n",(0,s.jsx)(i.p,{children:"The numbered steps land here once the admin UI is built. The journeydoc\ncapture spec (see ADR-030) ships a placeholder; the real shoot() calls\nare added together with the implementation."}),"\n",(0,s.jsx)(i.h2,{id:"verification",children:"Verification"}),"\n",(0,s.jsx)(i.p,{children:"You are set up correctly when: the Doriath settings panel renders\nwithout an error banner, the encryption-back-end indicator is green,\nsaving a sharing policy persists across a reload, and a freshly created\nentry appears in the audit log within a few seconds."}),"\n",(0,s.jsx)(i.h2,{id:"common-issues",children:"Common issues"}),"\n",(0,s.jsxs)(i.table,{children:[(0,s.jsx)(i.thead,{children:(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.th,{children:"Symptom"}),(0,s.jsx)(i.th,{children:"Fix"})]})}),(0,s.jsxs)(i.tbody,{children:[(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"Settings panel not visible"}),(0,s.jsx)(i.td,{children:"The app is not enabled, or OpenRegister is missing."})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"Encryption indicator stays red"}),(0,s.jsx)(i.td,{children:"Nextcloud server-side encryption is not configured at the platform level; configure it first, then reload Doriath."})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"Audit log is empty after creating an entry"}),(0,s.jsxs)(i.td,{children:["OpenRegister's audit trail is not enabled for the Doriath register \u2014 re-import the configuration from ",(0,s.jsx)(i.strong,{children:"Settings \u2192 Registers"}),"."]})]})]})]}),"\n",(0,s.jsx)(i.h2,{id:"reference",children:"Reference"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"/docs/tutorials/user/first-launch",children:"Open Doriath for the first time"})," \u2014 the user-side journey."]}),"\n",(0,s.jsxs)(i.li,{children:["Doriath on GitHub: ",(0,s.jsx)(i.a,{href:"https://github.com/ConductionNL/doriath",children:"ConductionNL/doriath"}),"."]}),"\n"]})]})}function c(e={}){const{wrapper:i}={...(0,r.R)(),...e.components};return i?(0,s.jsx)(i,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/9261.0f038ba8.js b/docs/build/assets/js/9261.0f038ba8.js deleted file mode 100644 index 611daa23d..000000000 --- a/docs/build/assets/js/9261.0f038ba8.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[9261],{9261(n,t,e){e.r(t),e.d(t,{CnArchFlow:()=>m,CnDomainTree:()=>s,CnHex:()=>i,CnHoneycombBg:()=>h,CnPair:()=>b,CnPipeline:()=>l,CnPlatform:()=>r,CnSideBox:()=>d});const o={sm:40,md:64,lg:96,xl:128},a={cobalt:{fill:"var(--c-blue-cobalt)",ink:"#fff"},orange:{fill:"var(--c-orange-knvb)",ink:"#fff"},mint:{fill:"var(--c-mint-500)",ink:"#fff"},lavender:{fill:"var(--c-lavender-500)",ink:"#fff"},terracotta:{fill:"var(--c-terracotta-500)",ink:"#fff"},forest:{fill:"var(--c-forest-500)",ink:"#fff"},nextcloud:{fill:"var(--c-nextcloud-blue)",ink:"#fff"},commonground:{fill:"var(--c-commonground-yellow)",ink:"var(--c-cobalt-900)"},red:{fill:"var(--c-red-vermillion)",ink:"#fff"}};class i extends HTMLElement{static get observedAttributes(){return["color","size","variant","layout","interactive"]}constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){this.render(),this.hasAttribute("interactive")&&!this.hasAttribute("tabindex")&&(this.setAttribute("tabindex","0"),this.setAttribute("role","button"),this.addEventListener("keydown",this._onKey))}disconnectedCallback(){this.removeEventListener("keydown",this._onKey)}attributeChangedCallback(){this.shadowRoot&&this.render()}_onKey=n=>{"Enter"!==n.key&&" "!==n.key||(n.preventDefault(),this.click())};render(){const n=this.getAttribute("color")||"cobalt",t=this.getAttribute("size")||"md",e=this.getAttribute("variant")||"solid",i=this.getAttribute("layout")||"vertical",s=this.hasAttribute("interactive"),r=a[n]||a.cobalt,l=o[t]?`${o[t]}px`:t,c="outline"===e,d=c?"transparent":r.fill,p=c?r.fill:"transparent",h=c?4:0,g=c?r.fill:r.ink;this.shadowRoot.innerHTML=`\n <style>\n :host {\n --cn-hex-size: ${l};\n --cn-hex-ink: ${g};\n\n display: inline-flex;\n width: var(--cn-hex-size);\n height: calc(var(--cn-hex-size) * 1.1547);\n color: var(--cn-hex-ink);\n font-family: var(--conduction-typography-font-family-body, system-ui, sans-serif);\n font-weight: 600;\n font-size: calc(var(--cn-hex-size) * 0.16);\n line-height: 1.15;\n text-align: center;\n position: relative;\n outline: none;\n transition: transform 160ms ease;\n }\n\n ${s?"\n :host { cursor: pointer; }\n :host(:hover) svg.shape { transform: scale(1.04); }\n :host(:focus-visible) svg.shape polygon {\n stroke: var(--c-orange-knvb, #F36C21);\n stroke-width: 3;\n }\n ":""}\n\n svg.shape {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n overflow: visible;\n transition: transform 160ms ease;\n }\n svg.shape polygon {\n fill: ${d};\n stroke: ${p};\n stroke-width: ${h};\n stroke-linejoin: round;\n transition: fill 160ms ease, stroke 160ms ease;\n }\n\n .content {\n position: relative;\n width: 100%; height: 100%;\n display: flex;\n flex-direction: ${"horizontal"===i?"row":"column"};\n align-items: center;\n justify-content: center;\n gap: ${"horizontal"===i?"6%":"4%"};\n padding: ${"horizontal"===i?"0 20%":"22% 16%"};\n box-sizing: border-box;\n }\n\n ::slotted([slot="icon"]) {\n width: ${"horizontal"===i?"34%":"42%"};\n height: auto;\n flex-shrink: 0;\n color: currentColor;\n fill: currentColor;\n }\n\n .label {\n display: inline-block;\n letter-spacing: -0.005em;\n word-break: keep-all;\n }\n </style>\n\n <svg class="shape" viewBox="0 0 100 115.47" preserveAspectRatio="none" aria-hidden="true">\n <polygon points="50,2 98,28.87 98,86.6 50,113.47 2,86.6 2,28.87" />\n </svg>\n <div class="content">\n <slot name="icon"></slot>\n <span class="label"><slot></slot></span>\n </div>\n `}}customElements.get("cn-hex")||customElements.define("cn-hex",i);class s extends HTMLElement{static get observedAttributes(){return["compact","tone"]}constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){this.render()}attributeChangedCallback(){this.shadowRoot&&this.render()}render(){const n=this.hasAttribute("compact"),t="dim"===(this.getAttribute("tone")||"cobalt")?"var(--c-cobalt-100)":"var(--c-cobalt-200)",e=n?"var(--space-3)":"var(--space-5)",o=n?"20px":"32px",a=n?"var(--space-5)":"var(--space-9)";this.shadowRoot.innerHTML=`\n <style>\n :host {\n display: block;\n font-family: var(--conduction-typography-font-family-body, system-ui, sans-serif);\n }\n .tree {\n display: flex; flex-direction: column;\n align-items: center;\n gap: ${e};\n padding: ${a} var(--space-7);\n overflow-x: auto;\n }\n .connector {\n width: 1px;\n height: ${o};\n background: ${t};\n flex-shrink: 0;\n }\n .branches {\n display: flex;\n gap: var(--space-7);\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n }\n .legend {\n display: flex; gap: var(--space-6);\n flex-wrap: wrap;\n margin-top: var(--space-4);\n padding-top: var(--space-5);\n border-top: 1px solid var(--c-cobalt-100);\n width: 100%;\n justify-content: center;\n }\n .legend:empty { display: none; }\n\n ::slotted([slot="legend"]) {\n display: flex; align-items: center; gap: var(--space-2);\n font-size: 13px;\n color: var(--c-cobalt-700);\n }\n </style>\n\n <div class="tree">\n <slot name="apex"></slot>\n <div class="connector"></div>\n <div class="branches"><slot></slot></div>\n <div class="legend"><slot name="legend"></slot></div>\n </div>\n `}}customElements.get("cn-domain-tree")||customElements.define("cn-domain-tree",s);class r extends HTMLElement{static get observedAttributes(){return["ground","tone"]}constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){this.render()}attributeChangedCallback(){this.shadowRoot&&this.render()}render(){const n=this.hasAttribute("ground"),t=this.getAttribute("tone")||"cobalt-50",e="white"===t?"white":"light"===t?"var(--c-cobalt-100)":"var(--c-cobalt-50)";this.shadowRoot.innerHTML=`\n <style>\n :host {\n display: block;\n font-family: var(--conduction-typography-font-family-body, system-ui, sans-serif);\n }\n\n .stage {\n position: relative;\n background: ${e};\n border-radius: var(--radius-lg);\n padding: var(--space-9) var(--space-7);\n overflow: hidden;\n }\n\n .grid {\n display: grid;\n grid-template-columns: repeat(5, 1fr);\n grid-template-rows: repeat(3, auto);\n gap: var(--space-3) var(--space-4);\n justify-items: center;\n align-items: center;\n position: relative;\n z-index: 1;\n }\n\n /* Apex (workspace) sits dead centre */\n ::slotted([slot="apex"]) {\n grid-column: 3;\n grid-row: 2;\n }\n\n /* Six orbiting apps \u2014 assigned by nth-child of the default slot */\n ::slotted(*:not([slot])) {\n /* default cells fall outside the grid; positioned per-index below */\n }\n ::slotted(:nth-child(1):not([slot])) { grid-column: 2; grid-row: 1; }\n ::slotted(:nth-child(2):not([slot])) { grid-column: 4; grid-row: 1; }\n ::slotted(:nth-child(3):not([slot])) { grid-column: 1; grid-row: 2; }\n ::slotted(:nth-child(4):not([slot])) { grid-column: 5; grid-row: 2; }\n ::slotted(:nth-child(5):not([slot])) { grid-column: 2; grid-row: 3; }\n ::slotted(:nth-child(6):not([slot])) { grid-column: 4; grid-row: 3; }\n\n ${n?"\n .ground {\n position: absolute;\n bottom: 8%;\n left: 50%;\n transform: translateX(-50%);\n width: 80%;\n height: 28px;\n background: radial-gradient(ellipse at center,\n rgba(33, 70, 139, 0.18) 0%,\n transparent 70%);\n z-index: 0;\n pointer-events: none;\n }\n ":""}\n\n .caption {\n margin-top: var(--space-5);\n font-family: var(--conduction-typography-font-family-code, ui-monospace, monospace);\n font-size: 11px;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--c-cobalt-400);\n text-align: center;\n }\n ::slotted([slot="caption"]) {\n font-family: var(--conduction-typography-font-family-code, ui-monospace, monospace);\n font-size: 11px;\n letter-spacing: 0.08em;\n color: var(--c-cobalt-400);\n }\n\n @media (max-width: 700px) {\n .grid {\n grid-template-columns: 1fr 1fr;\n grid-template-rows: auto;\n }\n ::slotted([slot="apex"]) { grid-column: 1 / -1; grid-row: 1; }\n ::slotted(:nth-child(1):not([slot])),\n ::slotted(:nth-child(2):not([slot])),\n ::slotted(:nth-child(3):not([slot])),\n ::slotted(:nth-child(4):not([slot])),\n ::slotted(:nth-child(5):not([slot])),\n ::slotted(:nth-child(6):not([slot])) {\n grid-column: auto;\n grid-row: auto;\n }\n }\n </style>\n\n <div class="stage">\n ${n?'<div class="ground"></div>':""}\n <div class="grid">\n <slot name="apex"></slot>\n <slot></slot>\n </div>\n <div class="caption"><slot name="caption"></slot></div>\n </div>\n `}}customElements.get("cn-platform")||customElements.define("cn-platform",r);class l extends HTMLElement{static get observedAttributes(){return["tone","align"]}constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){this.render(),this._observer=new MutationObserver(()=>this.render()),this._observer.observe(this,{childList:!0})}disconnectedCallback(){this._observer&&this._observer.disconnect()}attributeChangedCallback(){this.shadowRoot&&this.render()}render(){const n=this.getAttribute("tone")||"dotted",t=this.getAttribute("align")||"center",e=[...this.children].filter(n=>"caption"!==n.getAttribute("slot"));e.forEach((n,t)=>{n.setAttribute("slot",`step-${t}`)});const o="solid"===n?"none":"dim"===n?"2 4":"4 6",a="dim"===n?"var(--c-cobalt-200)":"var(--c-cobalt-400)",i=`\n <svg class="arrow" viewBox="0 0 60 12" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">\n <line x1="0" y1="6" x2="48" y2="6" stroke="${a}" stroke-width="1.5"\n stroke-linecap="round"\n ${"none"!==o?`stroke-dasharray="${o}"`:""}/>\n <polyline points="42,1 50,6 42,11" fill="none" stroke="${a}"\n stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>\n </svg>\n `.trim();let s="";for(let r=0;r<e.length;r++)s+=`<slot name="step-${r}"></slot>`,r<e.length-1&&(s+=i);this.shadowRoot.innerHTML=`\n <style>\n :host {\n display: block;\n font-family: var(--conduction-typography-font-family-body, system-ui, sans-serif);\n }\n\n .stage {\n background: var(--c-cobalt-50);\n border-radius: var(--radius-lg);\n padding: var(--space-9) var(--space-7);\n overflow-x: auto;\n }\n\n .row {\n display: flex;\n align-items: ${"start"===t?"flex-start":"end"===t?"flex-end":"center"};\n justify-content: center;\n gap: var(--space-3);\n flex-wrap: nowrap;\n min-height: 200px;\n }\n\n .arrow {\n width: 60px;\n height: 12px;\n flex-shrink: 0;\n }\n\n .caption {\n margin-top: var(--space-5);\n font-family: var(--conduction-typography-font-family-code, ui-monospace, monospace);\n font-size: 11px;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--c-cobalt-400);\n text-align: center;\n }\n ::slotted([slot="caption"]) {\n font-family: var(--conduction-typography-font-family-code, ui-monospace, monospace);\n font-size: 11px;\n letter-spacing: 0.08em;\n color: var(--c-cobalt-400);\n }\n\n @media (max-width: 700px) {\n .row { flex-wrap: wrap; }\n .arrow { transform: rotate(90deg); width: 40px; }\n }\n </style>\n\n <div class="stage">\n <div class="row">\n ${s}\n </div>\n <div class="caption"><slot name="caption"></slot></div>\n </div>\n `}}customElements.get("cn-pipeline")||customElements.define("cn-pipeline",l);const c={sm:180,md:220,lg:260};class d extends HTMLElement{static get observedAttributes(){return["header","compact","width"]}constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){this.render()}attributeChangedCallback(){this.shadowRoot&&this.render()}render(){const n=this.getAttribute("header")||"",t=this.hasAttribute("compact"),e=this.getAttribute("width")||"md",o=c[e]?`${c[e]}px`:e;this.shadowRoot.innerHTML=`\n <style>\n :host {\n display: inline-block;\n width: ${o};\n background: white;\n border: 1px solid var(--c-cobalt-200);\n border-radius: var(--radius-md);\n padding: ${t?"10px 10px 12px":"14px 14px 16px"};\n font-family: var(--conduction-typography-font-family-body, system-ui, sans-serif);\n }\n\n .chip {\n font-family: var(--conduction-typography-font-family-code, ui-monospace, monospace);\n font-size: 10px;\n letter-spacing: 0.16em;\n text-transform: uppercase;\n color: var(--c-cobalt-400);\n margin-bottom: ${t?"8px":"12px"};\n }\n .chip:empty { display: none; }\n\n ::slotted(*) {\n display: grid;\n grid-template-columns: ${t?"20px":"28px"} 1fr;\n gap: ${t?"8px":"12px"};\n align-items: center;\n padding: ${t?"4px 0":"6px 0"};\n font-size: ${t?"12px":"13px"};\n color: var(--c-cobalt-700);\n }\n\n ::slotted([slot="footer"]) {\n margin-top: ${t?"6px":"8px"};\n padding-top: ${t?"6px":"8px"};\n border-top: 1px dashed var(--c-cobalt-200);\n font-family: var(--conduction-typography-font-family-code, ui-monospace, monospace);\n font-size: 11px;\n color: var(--c-cobalt-400);\n text-align: center;\n display: block;\n }\n </style>\n\n <div class="chip">${this._escape(n)}</div>\n <slot></slot>\n <slot name="footer"></slot>\n `}_escape(n){return String(n).replace(/[<>&"']/g,n=>({"<":"<",">":">","&":"&",'"':""","'":"'"}[n]))}}customElements.get("cn-side-box")||customElements.define("cn-side-box",d);const p={sm:24,md:36,lg:56};class h extends HTMLElement{static get observedAttributes(){return["theme","accent","density"]}constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){this.render()}attributeChangedCallback(){this.shadowRoot&&this.render()}render(){const n=this.getAttribute("theme")||"cobalt",t=this.hasAttribute("accent"),e=this.getAttribute("density")||"md",o=p[e]||36,a=o*Math.sqrt(3),i=2*o,s=.75*i,r="light"===n,l=r?"#FFFFFF":"var(--c-cobalt-900)",c=r?"var(--c-cobalt-100)":"rgba(255,255,255,0.06)",d=r?"var(--c-cobalt-200)":"rgba(255,255,255,0.1)",h=a,g=2*s,b=(n,t)=>{const e=[];for(let a=0;a<6;a++){const i=Math.PI/3*a+Math.PI/6,s=n+o*Math.cos(i),r=t+o*Math.sin(i);e.push(`${s.toFixed(2)},${r.toFixed(2)}`)}return e.join(" ")},m=b(0,s/2),u=b(a/2,s/2+s);this.shadowRoot.innerHTML=`\n <style>\n :host {\n display: block;\n position: relative;\n background: ${l};\n color: ${r?"var(--c-cobalt-900)":"white"};\n overflow: hidden;\n border-radius: var(--radius-lg);\n }\n\n svg.bg {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n z-index: 0;\n pointer-events: none;\n }\n\n ${t?`\n .accent {\n position: absolute;\n top: 22%;\n right: 14%;\n width: ${1.2*a}px;\n height: ${1.2*i}px;\n clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);\n background: var(--c-orange-knvb);\n opacity: 0.85;\n z-index: 0;\n pointer-events: none;\n }\n `:""}\n\n .content {\n position: relative;\n z-index: 1;\n padding: var(--space-9) var(--space-7);\n }\n </style>\n\n <svg class="bg" xmlns="http://www.w3.org/2000/svg">\n <defs>\n <pattern id="cn-honeycomb-pattern" width="${h}" height="${g}" patternUnits="userSpaceOnUse">\n <polygon points="${m}" fill="${c}" stroke="${d}" stroke-width="1"/>\n <polygon points="${u}" fill="${c}" stroke="${d}" stroke-width="1"/>\n </pattern>\n </defs>\n <rect width="100%" height="100%" fill="url(#cn-honeycomb-pattern)"/>\n </svg>\n\n ${t?'<div class="accent"></div>':""}\n\n <div class="content"><slot></slot></div>\n `}}customElements.get("cn-honeycomb-bg")||customElements.define("cn-honeycomb-bg",h);const g={cobalt:"var(--c-blue-cobalt)","cobalt-700":"var(--c-cobalt-700)","cobalt-900":"var(--c-cobalt-900)",nextcloud:"var(--c-nextcloud-blue)",commonground:"var(--c-commonground-yellow)",mint:"var(--c-mint-500)",lavender:"var(--c-lavender-500)"};class b extends HTMLElement{static get observedAttributes(){return["left-label","left-caption","left-color","right-label","right-caption","right-color","bridge-label","arrow"]}constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){this.render()}attributeChangedCallback(){this.shadowRoot&&this.render()}render(){const n=this.getAttribute("left-label")||"",t=this.getAttribute("left-caption")||"",e=this.getAttribute("left-color")||"cobalt",o=this.getAttribute("right-label")||"",a=this.getAttribute("right-caption")||"",i=this.getAttribute("right-color")||"cobalt-700",s=this.getAttribute("bridge-label")||"",r=this.getAttribute("arrow")||"\u2194",l=g[e]||g.cobalt,c=g[i]||g["cobalt-700"],d="commonground"===e?"var(--c-cobalt-900)":"white",p="commonground"===i?"var(--c-cobalt-900)":"white";this.shadowRoot.innerHTML=`\n <style>\n :host {\n display: block;\n font-family: var(--conduction-typography-font-family-body, system-ui, sans-serif);\n }\n\n .panel {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n align-items: center;\n gap: var(--space-5);\n padding: var(--space-6);\n background: var(--c-cobalt-50);\n border-radius: var(--radius-md);\n }\n\n .side {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--space-2);\n text-align: center;\n }\n\n .hex {\n width: 64px;\n height: 74px;\n clip-path: var(--hex-pointy-top);\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .hex.left { background: ${l}; color: ${d}; }\n .hex.right { background: ${c}; color: ${p}; }\n\n ::slotted(svg) {\n width: 30px;\n height: 30px;\n }\n\n .label {\n font-size: 16px;\n font-weight: 600;\n color: var(--c-cobalt-900);\n }\n .caption {\n font-family: var(--conduction-typography-font-family-code, ui-monospace, monospace);\n font-size: 11px;\n color: var(--c-cobalt-400);\n letter-spacing: 0.06em;\n }\n .caption:empty { display: none; }\n\n .bridge {\n font-family: var(--conduction-typography-font-family-code, ui-monospace, monospace);\n font-size: 12px;\n color: var(--c-cobalt-700);\n letter-spacing: 0.05em;\n text-align: center;\n max-width: 160px;\n }\n .bridge .arrow {\n display: block;\n font-size: 28px;\n color: var(--c-orange-knvb);\n line-height: 1;\n margin-bottom: 4px;\n }\n .bridge .arrow[aria-hidden="true"] + .bridge-label:empty { display: none; }\n\n @media (max-width: 700px) {\n .panel {\n grid-template-columns: 1fr;\n gap: var(--space-4);\n }\n .bridge .arrow { transform: rotate(90deg); }\n }\n </style>\n\n <div class="panel" role="figure" aria-label="${this._escape(n)} \u2194 ${this._escape(o)}">\n <div class="side">\n <span class="hex left"><slot name="left-icon"></slot></span>\n <span class="label">${this._escape(n)}</span>\n <span class="caption">${this._escape(t)}</span>\n </div>\n <div class="bridge">\n <span class="arrow" aria-hidden="true">${this._escape(r)}</span>\n <span class="bridge-label">${this._escape(s)}</span>\n </div>\n <div class="side">\n <span class="hex right"><slot name="right-icon"></slot></span>\n <span class="label">${this._escape(o)}</span>\n <span class="caption">${this._escape(a)}</span>\n </div>\n </div>\n `}_escape(n){return String(n).replace(/[<>&"']/g,n=>({"<":"<",">":">","&":"&",'"':""","'":"'"}[n]))}}customElements.get("cn-pair")||customElements.define("cn-pair",b);class m extends HTMLElement{static get observedAttributes(){return["arrow"]}constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){this.render(),this._observer=new MutationObserver(()=>this.render()),this._observer.observe(this,{childList:!0,attributes:!0,subtree:!0})}disconnectedCallback(){this._observer&&this._observer.disconnect()}attributeChangedCallback(){this.shadowRoot&&this.render()}render(){const n=this.getAttribute("arrow")||"right",t=[...this.children];t.forEach((n,t)=>{n.setAttribute("slot",`node-${t}`)});const e="down"===n?"\u2193":"\u2192",o="none"!==n;let a="";for(let i=0;i<t.length;i++)a+=`<slot name="node-${i}"></slot>`,o&&i<t.length-1&&(a+=`<span class="arrow" aria-hidden="true">${e}</span>`);this.shadowRoot.innerHTML=`\n <style>\n :host {\n display: block;\n font-family: var(--conduction-typography-font-family-code, ui-monospace, monospace);\n }\n\n .panel {\n background: var(--c-cobalt-50);\n border: 1px solid var(--c-cobalt-100);\n border-radius: var(--radius-md);\n padding: var(--space-6);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-3);\n flex-wrap: wrap;\n font-size: 11px;\n text-align: center;\n }\n\n .arrow {\n color: var(--c-cobalt-400);\n font-size: 16px;\n flex-shrink: 0;\n }\n\n /* Default node: white rounded box with cobalt-200 border. */\n ::slotted(*) {\n flex: 1 1 0;\n min-width: 80px;\n padding: var(--space-3) var(--space-2);\n background: white;\n border: 1px solid var(--c-cobalt-200);\n border-radius: var(--radius-sm);\n color: var(--c-cobalt-800);\n font-family: var(--conduction-typography-font-family-code, ui-monospace, monospace);\n font-size: 11px;\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n min-height: 38px;\n }\n\n /* accent: the "system" node \u2014 solid cobalt brand fill. */\n ::slotted([accent]) {\n background: var(--c-blue-cobalt);\n color: white;\n border-color: var(--c-blue-cobalt);\n }\n\n /* hex: the orange pointy-top hex. The one-orange-per-scene knob.\n * Replaces the rectangle entirely with a clip-pathed shape so the\n * brand rule (hexes never rotate, always pointy-top) holds. */\n ::slotted([hex]) {\n flex: 0 0 auto;\n width: 64px;\n min-width: 0;\n height: 74px;\n padding: 0;\n background: var(--c-orange-knvb);\n color: white;\n border: 0;\n border-radius: 0;\n clip-path: var(--hex-pointy-top);\n font-weight: 600;\n font-size: 12px;\n }\n\n /* muted: out-of-scope / "and more" placeholder. */\n ::slotted([muted]) {\n opacity: 0.5;\n }\n </style>\n\n <div class="panel">${a}</div>\n `}}customElements.get("cn-arch-flow")||customElements.define("cn-arch-flow",m)}}]); \ No newline at end of file diff --git a/docs/build/assets/js/9299.3bf1c0a1.js b/docs/build/assets/js/9299.3bf1c0a1.js deleted file mode 100644 index 4e10847b2..000000000 --- a/docs/build/assets/js/9299.3bf1c0a1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[9299],{9299(t,e,a){a.d(e,{diagram:()=>$});var r=a(8213),i=a(5871),o=a(8515),n=a(3706),s=a(797),l=a(8731),c=n.UI.packet,d=class{constructor(){this.packet=[],this.setAccTitle=n.SV,this.getAccTitle=n.iN,this.setDiagramTitle=n.ke,this.getDiagramTitle=n.ab,this.getAccDescription=n.m7,this.setAccDescription=n.EI}static{(0,s.K2)(this,"PacketDB")}getConfig(){const t=(0,o.$t)({...c,...(0,n.zj)().packet});return t.showBits&&(t.paddingY+=10),t}getPacket(){return this.packet}pushWord(t){t.length>0&&this.packet.push(t)}clear(){(0,n.IU)(),this.packet=[]}},h=(0,s.K2)((t,e)=>{(0,i.S)(t,e);let a=-1,r=[],o=1;const{bitsPerRow:n}=e.getConfig();for(let{start:i,end:l,bits:c,label:d}of t.blocks){if(void 0!==i&&void 0!==l&&l<i)throw new Error(`Packet block ${i} - ${l} is invalid. End must be greater than start.`);if(i??=a+1,i!==a+1)throw new Error(`Packet block ${i} - ${l??i} is not contiguous. It should start from ${a+1}.`);if(0===c)throw new Error(`Packet block ${i} is invalid. Cannot have a zero bit field.`);for(l??=i+(c??1)-1,c??=l-i+1,a=l,s.Rm.debug(`Packet block ${i} - ${a} with label ${d}`);r.length<=n+1&&e.getPacket().length<1e4;){const[t,a]=b({start:i,end:l,bits:c,label:d},o,n);if(r.push(t),t.end+1===o*n&&(e.pushWord(r),r=[],o++),!a)break;({start:i,end:l,bits:c,label:d}=a)}}e.pushWord(r)},"populate"),b=(0,s.K2)((t,e,a)=>{if(void 0===t.start)throw new Error("start should have been set during first phase");if(void 0===t.end)throw new Error("end should have been set during first phase");if(t.start>t.end)throw new Error(`Block start ${t.start} is greater than block end ${t.end}.`);if(t.end+1<=e*a)return[t,void 0];const r=e*a-1,i=e*a;return[{start:t.start,end:r,label:t.label,bits:r-t.start},{start:i,end:t.end,label:t.label,bits:t.end-i}]},"getNextFittingBlock"),p={parser:{yy:void 0},parse:(0,s.K2)(async t=>{const e=await(0,l.qg)("packet",t),a=p.parser?.yy;if(!(a instanceof d))throw new Error("parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");s.Rm.debug(e),h(e,a)},"parse")},k=(0,s.K2)((t,e,a,i)=>{const o=i.db,s=o.getConfig(),{rowHeight:l,paddingY:c,bitWidth:d,bitsPerRow:h}=s,b=o.getPacket(),p=o.getDiagramTitle(),k=l+c,f=k*(b.length+1)-(p?0:l),u=d*h+2,w=(0,r.D)(e);w.attr("viewBox",`0 0 ${u} ${f}`),(0,n.a$)(w,f,u,s.useMaxWidth);for(const[r,n]of b.entries())g(w,n,r,s);w.append("text").text(p).attr("x",u/2).attr("y",f-k/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),g=(0,s.K2)((t,e,a,{rowHeight:r,paddingX:i,paddingY:o,bitWidth:n,bitsPerRow:s,showBits:l})=>{const c=t.append("g"),d=a*(r+o)+o;for(const h of e){const t=h.start%s*n+1,e=(h.end-h.start+1)*n-i;if(c.append("rect").attr("x",t).attr("y",d).attr("width",e).attr("height",r).attr("class","packetBlock"),c.append("text").attr("x",t+e/2).attr("y",d+r/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(h.label),!l)continue;const a=h.end===h.start,o=d-2;c.append("text").attr("x",t+(a?e/2:0)).attr("y",o).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",a?"middle":"start").text(h.start),a||c.append("text").attr("x",t+e).attr("y",o).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(h.end)}},"drawWord"),f={draw:k},u={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},w=(0,s.K2)(({packet:t}={})=>{const e=(0,o.$t)(u,t);return`\n\t.packetByte {\n\t\tfont-size: ${e.byteFontSize};\n\t}\n\t.packetByte.start {\n\t\tfill: ${e.startByteColor};\n\t}\n\t.packetByte.end {\n\t\tfill: ${e.endByteColor};\n\t}\n\t.packetLabel {\n\t\tfill: ${e.labelColor};\n\t\tfont-size: ${e.labelFontSize};\n\t}\n\t.packetTitle {\n\t\tfill: ${e.titleColor};\n\t\tfont-size: ${e.titleFontSize};\n\t}\n\t.packetBlock {\n\t\tstroke: ${e.blockStrokeColor};\n\t\tstroke-width: ${e.blockStrokeWidth};\n\t\tfill: ${e.blockFillColor};\n\t}\n\t`},"styles"),$={parser:p,get db(){return new d},renderer:f,styles:w}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/9301.212450e5.js b/docs/build/assets/js/9301.212450e5.js deleted file mode 100644 index 1c23b8bed..000000000 --- a/docs/build/assets/js/9301.212450e5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[9301],{9301(e,t,a){a.d(t,{diagram:()=>D});var i=a(8213),l=a(5871),n=a(8515),r=a(3706),s=a(797),o=a(8731),c=a(451),d=r.UI.pie,p={sections:new Map,showData:!1,config:d},h=p.sections,u=p.showData,g=structuredClone(d),m=(0,s.K2)(()=>structuredClone(g),"getConfig"),f=(0,s.K2)(()=>{h=new Map,u=p.showData,(0,r.IU)()},"clear"),w=(0,s.K2)(({label:e,value:t})=>{if(t<0)throw new Error(`"${e}" has invalid value: ${t}. Negative values are not allowed in pie charts. All slice values must be >= 0.`);h.has(e)||(h.set(e,t),s.Rm.debug(`added new section: ${e}, with value: ${t}`))},"addSection"),x=(0,s.K2)(()=>h,"getSections"),S=(0,s.K2)(e=>{u=e},"setShowData"),$=(0,s.K2)(()=>u,"getShowData"),b={getConfig:m,clear:f,setDiagramTitle:r.ke,getDiagramTitle:r.ab,setAccTitle:r.SV,getAccTitle:r.iN,setAccDescription:r.EI,getAccDescription:r.m7,addSection:w,getSections:x,setShowData:S,getShowData:$},y=(0,s.K2)((e,t)=>{(0,l.S)(e,t),t.setShowData(e.showData),e.sections.map(t.addSection)},"populateDb"),T={parse:(0,s.K2)(async e=>{const t=await(0,o.qg)("pie",e);s.Rm.debug(t),y(t,b)},"parse")},v=(0,s.K2)(e=>`\n .pieCircle{\n stroke: ${e.pieStrokeColor};\n stroke-width : ${e.pieStrokeWidth};\n opacity : ${e.pieOpacity};\n }\n .pieOuterCircle{\n stroke: ${e.pieOuterStrokeColor};\n stroke-width: ${e.pieOuterStrokeWidth};\n fill: none;\n }\n .pieTitleText {\n text-anchor: middle;\n font-size: ${e.pieTitleTextSize};\n fill: ${e.pieTitleTextColor};\n font-family: ${e.fontFamily};\n }\n .slice {\n font-family: ${e.fontFamily};\n fill: ${e.pieSectionTextColor};\n font-size:${e.pieSectionTextSize};\n // fill: white;\n }\n .legend text {\n fill: ${e.pieLegendTextColor};\n font-family: ${e.fontFamily};\n font-size: ${e.pieLegendTextSize};\n }\n`,"getStyles"),C=(0,s.K2)(e=>{const t=[...e.values()].reduce((e,t)=>e+t,0),a=[...e.entries()].map(([e,t])=>({label:e,value:t})).filter(e=>e.value/t*100>=1);return(0,c.rLf)().value(e=>e.value).sort(null)(a)},"createPieArcs"),D={parser:T,db:b,renderer:{draw:(0,s.K2)((e,t,a,l)=>{s.Rm.debug("rendering pie chart\n"+e);const o=l.db,d=(0,r.D7)(),p=(0,n.$t)(o.getConfig(),d.pie),h=18,u=450,g=u,m=(0,i.D)(t),f=m.append("g");f.attr("transform","translate(225,225)");const{themeVariables:w}=d;let[x]=(0,n.I5)(w.pieOuterStrokeWidth);x??=2;const S=p.textPosition,$=Math.min(g,u)/2-40,b=(0,c.JLW)().innerRadius(0).outerRadius($),y=(0,c.JLW)().innerRadius($*S).outerRadius($*S);f.append("circle").attr("cx",0).attr("cy",0).attr("r",$+x/2).attr("class","pieOuterCircle");const T=o.getSections(),v=C(T),D=[w.pie1,w.pie2,w.pie3,w.pie4,w.pie5,w.pie6,w.pie7,w.pie8,w.pie9,w.pie10,w.pie11,w.pie12];let k=0;T.forEach(e=>{k+=e});const K=v.filter(e=>"0"!==(e.data.value/k*100).toFixed(0)),A=(0,c.UMr)(D).domain([...T.keys()]);f.selectAll("mySlices").data(K).enter().append("path").attr("d",b).attr("fill",e=>A(e.data.label)).attr("class","pieCircle"),f.selectAll("mySlices").data(K).enter().append("text").text(e=>(e.data.value/k*100).toFixed(0)+"%").attr("transform",e=>"translate("+y.centroid(e)+")").style("text-anchor","middle").attr("class","slice");const R=f.append("text").text(o.getDiagramTitle()).attr("x",0).attr("y",-200).attr("class","pieTitleText"),M=[...T.entries()].map(([e,t])=>({label:e,value:t})),z=f.selectAll(".legend").data(M).enter().append("g").attr("class","legend").attr("transform",(e,t)=>"translate(216,"+(22*t-22*M.length/2)+")");z.append("rect").attr("width",h).attr("height",h).style("fill",e=>A(e.label)).style("stroke",e=>A(e.label)),z.append("text").attr("x",22).attr("y",14).text(e=>o.getShowData()?`${e.label} [${e.value}]`:e.label);const O=512+Math.max(...z.selectAll("text").nodes().map(e=>e?.getBoundingClientRect().width??0)),W=R.node()?.getBoundingClientRect().width??0,F=225-W/2,L=225+W/2,I=Math.min(0,F),B=Math.max(O,L)-I;m.attr("viewBox",`${I} 0 ${B} 450`),(0,r.a$)(m,u,B,p.useMaxWidth)},"draw")},styles:v}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/9557.f19bf2ef.js b/docs/build/assets/js/9557.f19bf2ef.js deleted file mode 100644 index 78dc33afb..000000000 --- a/docs/build/assets/js/9557.f19bf2ef.js +++ /dev/null @@ -1 +0,0 @@ -(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[9557],{6527(t,e,i){var n;n=function(t){return(()=>{"use strict";var e={658:t=>{t.exports=null!=Object.assign?Object.assign.bind(Object):function(t){for(var e=arguments.length,i=Array(e>1?e-1:0),n=1;n<e;n++)i[n-1]=arguments[n];return i.forEach(function(e){Object.keys(e).forEach(function(i){return t[i]=e[i]})}),t}},548:(t,e,i)=>{var n=function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var i=[],n=!0,r=!1,o=void 0;try{for(var s,a=t[Symbol.iterator]();!(n=(s=a.next()).done)&&(i.push(s.value),!e||i.length!==e);n=!0);}catch(h){r=!0,o=h}finally{try{!n&&a.return&&a.return()}finally{if(r)throw o}}return i}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=i(140).layoutBase.LinkedList,o={getTopMostNodes:function(t){for(var e={},i=0;i<t.length;i++)e[t[i].id()]=!0;var n=t.filter(function(t,i){"number"==typeof t&&(t=i);for(var n=t.parent()[0];null!=n;){if(e[n.id()])return!1;n=n.parent()[0]}return!0});return n},connectComponents:function(t,e,i,n){var o=new r,s=new Set,a=[],h=void 0,l=void 0,d=void 0,c=!1,g=1,u=[],f=[],p=function(){var n=t.collection();f.push(n);var r=i[0],p=t.collection();p.merge(r).merge(r.descendants().intersection(e)),a.push(r),p.forEach(function(t){o.push(t),s.add(t),n.merge(t)});for(var y=function(){r=o.shift();var l=t.collection();r.neighborhood().nodes().forEach(function(t){e.intersection(r.edgesWith(t)).length>0&&l.merge(t)});for(var d=0;d<l.length;d++){var c=l[d];null==(h=i.intersection(c.union(c.ancestors())))||s.has(h[0])||h.union(h.descendants()).forEach(function(t){o.push(t),s.add(t),n.merge(t),i.has(t)&&a.push(t)})}};0!=o.length;)y();if(n.forEach(function(t){e.intersection(t.connectedEdges()).forEach(function(t){n.has(t.source())&&n.has(t.target())&&n.merge(t)})}),a.length==i.length&&(c=!0),!c||c&&g>1){l=a[0],d=l.connectedEdges().length,a.forEach(function(t){t.connectedEdges().length<d&&(d=t.connectedEdges().length,l=t)}),u.push(l.id());var m=t.collection();m.merge(a[0]),a.forEach(function(t){m.merge(t)}),a=[],i=i.difference(m),g++}};do{p()}while(!c);return n&&u.length>0&&n.set("dummy"+(n.size+1),u),f},relocateComponent:function(t,e,i){if(!i.fixedNodeConstraint){var r=Number.POSITIVE_INFINITY,o=Number.NEGATIVE_INFINITY,s=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY;if("draft"==i.quality){var h=!0,l=!1,d=void 0;try{for(var c,g=e.nodeIndexes[Symbol.iterator]();!(h=(c=g.next()).done);h=!0){var u=c.value,f=n(u,2),p=f[0],y=f[1],m=i.cy.getElementById(p);if(m){var v=m.boundingBox(),E=e.xCoords[y]-v.w/2,N=e.xCoords[y]+v.w/2,T=e.yCoords[y]-v.h/2,A=e.yCoords[y]+v.h/2;E<r&&(r=E),N>o&&(o=N),T<s&&(s=T),A>a&&(a=A)}}}catch(_){l=!0,d=_}finally{try{!h&&g.return&&g.return()}finally{if(l)throw d}}var w=t.x-(o+r)/2,I=t.y-(a+s)/2;e.xCoords=e.xCoords.map(function(t){return t+w}),e.yCoords=e.yCoords.map(function(t){return t+I})}else{Object.keys(e).forEach(function(t){var i=e[t],n=i.getRect().x,h=i.getRect().x+i.getRect().width,l=i.getRect().y,d=i.getRect().y+i.getRect().height;n<r&&(r=n),h>o&&(o=h),l<s&&(s=l),d>a&&(a=d)});var C=t.x-(o+r)/2,L=t.y-(a+s)/2;Object.keys(e).forEach(function(t){var i=e[t];i.setCenter(i.getCenterX()+C,i.getCenterY()+L)})}}},calcBoundingBox:function(t,e,i,n){for(var r=Number.MAX_SAFE_INTEGER,o=Number.MIN_SAFE_INTEGER,s=Number.MAX_SAFE_INTEGER,a=Number.MIN_SAFE_INTEGER,h=void 0,l=void 0,d=void 0,c=void 0,g=t.descendants().not(":parent"),u=g.length,f=0;f<u;f++){var p=g[f];r>(h=e[n.get(p.id())]-p.width()/2)&&(r=h),o<(l=e[n.get(p.id())]+p.width()/2)&&(o=l),s>(d=i[n.get(p.id())]-p.height()/2)&&(s=d),a<(c=i[n.get(p.id())]+p.height()/2)&&(a=c)}var y={};return y.topLeftX=r,y.topLeftY=s,y.width=o-r,y.height=a-s,y},calcParentsWithoutChildren:function(t,e){var i=t.collection();return e.nodes(":parent").forEach(function(t){var e=!1;t.children().forEach(function(t){"none"!=t.css("display")&&(e=!0)}),e||i.merge(t)}),i}};t.exports=o},816:(t,e,i)=>{var n=i(548),r=i(140).CoSELayout,o=i(140).CoSENode,s=i(140).layoutBase.PointD,a=i(140).layoutBase.DimensionD,h=i(140).layoutBase.LayoutConstants,l=i(140).layoutBase.FDLayoutConstants,d=i(140).CoSEConstants;t.exports={coseLayout:function(t,e){var i=t.cy,c=t.eles,g=c.nodes(),u=c.edges(),f=void 0,p=void 0,y=void 0,m={};t.randomize&&(f=e.nodeIndexes,p=e.xCoords,y=e.yCoords);var v=function(t){return"function"==typeof t},E=function(t,e){return v(t)?t(e):t},N=n.calcParentsWithoutChildren(i,c);null!=t.nestingFactor&&(d.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=l.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=t.nestingFactor),null!=t.gravity&&(d.DEFAULT_GRAVITY_STRENGTH=l.DEFAULT_GRAVITY_STRENGTH=t.gravity),null!=t.numIter&&(d.MAX_ITERATIONS=l.MAX_ITERATIONS=t.numIter),null!=t.gravityRange&&(d.DEFAULT_GRAVITY_RANGE_FACTOR=l.DEFAULT_GRAVITY_RANGE_FACTOR=t.gravityRange),null!=t.gravityCompound&&(d.DEFAULT_COMPOUND_GRAVITY_STRENGTH=l.DEFAULT_COMPOUND_GRAVITY_STRENGTH=t.gravityCompound),null!=t.gravityRangeCompound&&(d.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=l.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=t.gravityRangeCompound),null!=t.initialEnergyOnIncremental&&(d.DEFAULT_COOLING_FACTOR_INCREMENTAL=l.DEFAULT_COOLING_FACTOR_INCREMENTAL=t.initialEnergyOnIncremental),null!=t.tilingCompareBy&&(d.TILING_COMPARE_BY=t.tilingCompareBy),"proof"==t.quality?h.QUALITY=2:h.QUALITY=0,d.NODE_DIMENSIONS_INCLUDE_LABELS=l.NODE_DIMENSIONS_INCLUDE_LABELS=h.NODE_DIMENSIONS_INCLUDE_LABELS=t.nodeDimensionsIncludeLabels,d.DEFAULT_INCREMENTAL=l.DEFAULT_INCREMENTAL=h.DEFAULT_INCREMENTAL=!t.randomize,d.ANIMATE=l.ANIMATE=h.ANIMATE=t.animate,d.TILE=t.tile,d.TILING_PADDING_VERTICAL="function"==typeof t.tilingPaddingVertical?t.tilingPaddingVertical.call():t.tilingPaddingVertical,d.TILING_PADDING_HORIZONTAL="function"==typeof t.tilingPaddingHorizontal?t.tilingPaddingHorizontal.call():t.tilingPaddingHorizontal,d.DEFAULT_INCREMENTAL=l.DEFAULT_INCREMENTAL=h.DEFAULT_INCREMENTAL=!0,d.PURE_INCREMENTAL=!t.randomize,h.DEFAULT_UNIFORM_LEAF_NODE_SIZES=t.uniformNodeDimensions,"transformed"==t.step&&(d.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,d.ENFORCE_CONSTRAINTS=!1,d.APPLY_LAYOUT=!1),"enforced"==t.step&&(d.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,d.ENFORCE_CONSTRAINTS=!0,d.APPLY_LAYOUT=!1),"cose"==t.step&&(d.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,d.ENFORCE_CONSTRAINTS=!1,d.APPLY_LAYOUT=!0),"all"==t.step&&(t.randomize?d.TRANSFORM_ON_CONSTRAINT_HANDLING=!0:d.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,d.ENFORCE_CONSTRAINTS=!0,d.APPLY_LAYOUT=!0),t.fixedNodeConstraint||t.alignmentConstraint||t.relativePlacementConstraint?d.TREE_REDUCTION_ON_INCREMENTAL=!1:d.TREE_REDUCTION_ON_INCREMENTAL=!0;var T=new r,A=T.newGraphManager();return function t(e,i,r,h){for(var l=i.length,d=0;d<l;d++){var c=i[d],g=null;0==c.intersection(N).length&&(g=c.children());var u=void 0,v=c.layoutDimensions({nodeDimensionsIncludeLabels:h.nodeDimensionsIncludeLabels});if(null!=c.outerWidth()&&null!=c.outerHeight())if(h.randomize)if(c.isParent()){var T=n.calcBoundingBox(c,p,y,f);u=0==c.intersection(N).length?e.add(new o(r.graphManager,new s(T.topLeftX,T.topLeftY),new a(T.width,T.height))):e.add(new o(r.graphManager,new s(T.topLeftX,T.topLeftY),new a(parseFloat(v.w),parseFloat(v.h))))}else u=e.add(new o(r.graphManager,new s(p[f.get(c.id())]-v.w/2,y[f.get(c.id())]-v.h/2),new a(parseFloat(v.w),parseFloat(v.h))));else u=e.add(new o(r.graphManager,new s(c.position("x")-v.w/2,c.position("y")-v.h/2),new a(parseFloat(v.w),parseFloat(v.h))));else u=e.add(new o(this.graphManager));u.id=c.data("id"),u.nodeRepulsion=E(h.nodeRepulsion,c),u.paddingLeft=parseInt(c.css("padding")),u.paddingTop=parseInt(c.css("padding")),u.paddingRight=parseInt(c.css("padding")),u.paddingBottom=parseInt(c.css("padding")),h.nodeDimensionsIncludeLabels&&(u.labelWidth=c.boundingBox({includeLabels:!0,includeNodes:!1,includeOverlays:!1}).w,u.labelHeight=c.boundingBox({includeLabels:!0,includeNodes:!1,includeOverlays:!1}).h,u.labelPosVertical=c.css("text-valign"),u.labelPosHorizontal=c.css("text-halign")),m[c.data("id")]=u,isNaN(u.rect.x)&&(u.rect.x=0),isNaN(u.rect.y)&&(u.rect.y=0),null!=g&&g.length>0&&t(r.getGraphManager().add(r.newGraph(),u),g,r,h)}}(A.addRoot(),n.getTopMostNodes(g),T,t),function(e,i,n){for(var r=0,o=0,s=0;s<n.length;s++){var a=n[s],h=m[a.data("source")],c=m[a.data("target")];if(h&&c&&h!==c&&0==h.getEdgesBetween(c).length){var g=i.add(e.newEdge(),h,c);g.id=a.id(),g.idealLength=E(t.idealEdgeLength,a),g.edgeElasticity=E(t.edgeElasticity,a),r+=g.idealLength,o++}}null!=t.idealEdgeLength&&(o>0?d.DEFAULT_EDGE_LENGTH=l.DEFAULT_EDGE_LENGTH=r/o:v(t.idealEdgeLength)?d.DEFAULT_EDGE_LENGTH=l.DEFAULT_EDGE_LENGTH=50:d.DEFAULT_EDGE_LENGTH=l.DEFAULT_EDGE_LENGTH=t.idealEdgeLength,d.MIN_REPULSION_DIST=l.MIN_REPULSION_DIST=l.DEFAULT_EDGE_LENGTH/10,d.DEFAULT_RADIAL_SEPARATION=l.DEFAULT_EDGE_LENGTH)}(T,A,u),function(t,e){e.fixedNodeConstraint&&(t.constraints.fixedNodeConstraint=e.fixedNodeConstraint),e.alignmentConstraint&&(t.constraints.alignmentConstraint=e.alignmentConstraint),e.relativePlacementConstraint&&(t.constraints.relativePlacementConstraint=e.relativePlacementConstraint)}(T,t),T.runLayout(),m}}},212:(t,e,i)=>{var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}(),r=i(658),o=i(548),s=i(657).spectralLayout,a=i(816).coseLayout,h=Object.freeze({quality:"default",randomize:!0,animate:!0,animationDuration:1e3,animationEasing:void 0,fit:!0,padding:30,nodeDimensionsIncludeLabels:!1,uniformNodeDimensions:!1,packComponents:!0,step:"all",samplingType:!0,sampleSize:25,nodeSeparation:75,piTol:1e-7,nodeRepulsion:function(t){return 4500},idealEdgeLength:function(t){return 50},edgeElasticity:function(t){return.45},nestingFactor:.1,gravity:.25,numIter:2500,tile:!0,tilingCompareBy:void 0,tilingPaddingVertical:10,tilingPaddingHorizontal:10,gravityRangeCompound:1.5,gravityCompound:1,gravityRange:3.8,initialEnergyOnIncremental:.3,fixedNodeConstraint:void 0,alignmentConstraint:void 0,relativePlacementConstraint:void 0,ready:function(){},stop:function(){}}),l=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.options=r({},h,e)}return n(t,[{key:"run",value:function(){var t=this.options,e=t.cy,i=t.eles,n=[],r=[],h=void 0,l=[];!t.fixedNodeConstraint||Array.isArray(t.fixedNodeConstraint)&&0!=t.fixedNodeConstraint.length||(t.fixedNodeConstraint=void 0),t.alignmentConstraint&&(!t.alignmentConstraint.vertical||Array.isArray(t.alignmentConstraint.vertical)&&0!=t.alignmentConstraint.vertical.length||(t.alignmentConstraint.vertical=void 0),!t.alignmentConstraint.horizontal||Array.isArray(t.alignmentConstraint.horizontal)&&0!=t.alignmentConstraint.horizontal.length||(t.alignmentConstraint.horizontal=void 0)),!t.relativePlacementConstraint||Array.isArray(t.relativePlacementConstraint)&&0!=t.relativePlacementConstraint.length||(t.relativePlacementConstraint=void 0),(t.fixedNodeConstraint||t.alignmentConstraint||t.relativePlacementConstraint)&&(t.tile=!1,t.packComponents=!1);var d=void 0,c=!1;if(e.layoutUtilities&&t.packComponents&&((d=e.layoutUtilities("get"))||(d=e.layoutUtilities()),c=!0),i.nodes().length>0)if(c){var g=o.getTopMostNodes(t.eles.nodes());if((h=o.connectComponents(e,t.eles,g)).forEach(function(t){var e=t.boundingBox();l.push({x:e.x1+e.w/2,y:e.y1+e.h/2})}),t.randomize&&h.forEach(function(e){t.eles=e,n.push(s(t))}),"default"==t.quality||"proof"==t.quality){var u=e.collection();if(t.tile){var f=new Map,p=0,y={nodeIndexes:f,xCoords:[],yCoords:[]},m=[];if(h.forEach(function(t,e){0==t.edges().length&&(t.nodes().forEach(function(e,i){u.merge(t.nodes()[i]),e.isParent()||(y.nodeIndexes.set(t.nodes()[i].id(),p++),y.xCoords.push(t.nodes()[0].position().x),y.yCoords.push(t.nodes()[0].position().y))}),m.push(e))}),u.length>1){var v=u.boundingBox();l.push({x:v.x1+v.w/2,y:v.y1+v.h/2}),h.push(u),n.push(y);for(var E=m.length-1;E>=0;E--)h.splice(m[E],1),n.splice(m[E],1),l.splice(m[E],1)}}h.forEach(function(e,i){t.eles=e,r.push(a(t,n[i])),o.relocateComponent(l[i],r[i],t)})}else h.forEach(function(e,i){o.relocateComponent(l[i],n[i],t)});var N=new Set;if(h.length>1){var T=[],A=i.filter(function(t){return"none"==t.css("display")});h.forEach(function(e,i){var s=void 0;if("draft"==t.quality&&(s=n[i].nodeIndexes),e.nodes().not(A).length>0){var a={edges:[],nodes:[]},h=void 0;e.nodes().not(A).forEach(function(e){if("draft"==t.quality)if(e.isParent()){var l=o.calcBoundingBox(e,n[i].xCoords,n[i].yCoords,s);a.nodes.push({x:l.topLeftX,y:l.topLeftY,width:l.width,height:l.height})}else h=s.get(e.id()),a.nodes.push({x:n[i].xCoords[h]-e.boundingbox().w/2,y:n[i].yCoords[h]-e.boundingbox().h/2,width:e.boundingbox().w,height:e.boundingbox().h});else r[i][e.id()]&&a.nodes.push({x:r[i][e.id()].getLeft(),y:r[i][e.id()].getTop(),width:r[i][e.id()].getWidth(),height:r[i][e.id()].getHeight()})}),e.edges().forEach(function(e){var h=e.source(),l=e.target();if("none"!=h.css("display")&&"none"!=l.css("display"))if("draft"==t.quality){var d=s.get(h.id()),c=s.get(l.id()),g=[],u=[];if(h.isParent()){var f=o.calcBoundingBox(h,n[i].xCoords,n[i].yCoords,s);g.push(f.topLeftX+f.width/2),g.push(f.topLeftY+f.height/2)}else g.push(n[i].xCoords[d]),g.push(n[i].yCoords[d]);if(l.isParent()){var p=o.calcBoundingBox(l,n[i].xCoords,n[i].yCoords,s);u.push(p.topLeftX+p.width/2),u.push(p.topLeftY+p.height/2)}else u.push(n[i].xCoords[c]),u.push(n[i].yCoords[c]);a.edges.push({startX:g[0],startY:g[1],endX:u[0],endY:u[1]})}else r[i][h.id()]&&r[i][l.id()]&&a.edges.push({startX:r[i][h.id()].getCenterX(),startY:r[i][h.id()].getCenterY(),endX:r[i][l.id()].getCenterX(),endY:r[i][l.id()].getCenterY()})}),a.nodes.length>0&&(T.push(a),N.add(i))}});var w=d.packComponents(T,t.randomize).shifts;if("draft"==t.quality)n.forEach(function(t,e){var i=t.xCoords.map(function(t){return t+w[e].dx}),n=t.yCoords.map(function(t){return t+w[e].dy});t.xCoords=i,t.yCoords=n});else{var I=0;N.forEach(function(t){Object.keys(r[t]).forEach(function(e){var i=r[t][e];i.setCenter(i.getCenterX()+w[I].dx,i.getCenterY()+w[I].dy)}),I++})}}}else{var C=t.eles.boundingBox();if(l.push({x:C.x1+C.w/2,y:C.y1+C.h/2}),t.randomize){var L=s(t);n.push(L)}"default"==t.quality||"proof"==t.quality?(r.push(a(t,n[0])),o.relocateComponent(l[0],r[0],t)):o.relocateComponent(l[0],n[0],t)}var _=function(e,i){if("default"==t.quality||"proof"==t.quality){"number"==typeof e&&(e=i);var o=void 0,s=void 0,a=e.data("id");return r.forEach(function(t){a in t&&(o={x:t[a].getRect().getCenterX(),y:t[a].getRect().getCenterY()},s=t[a])}),t.nodeDimensionsIncludeLabels&&(s.labelWidth&&("left"==s.labelPosHorizontal?o.x+=s.labelWidth/2:"right"==s.labelPosHorizontal&&(o.x-=s.labelWidth/2)),s.labelHeight&&("top"==s.labelPosVertical?o.y+=s.labelHeight/2:"bottom"==s.labelPosVertical&&(o.y-=s.labelHeight/2))),null==o&&(o={x:e.position("x"),y:e.position("y")}),{x:o.x,y:o.y}}var h=void 0;return n.forEach(function(t){var i=t.nodeIndexes.get(e.id());null!=i&&(h={x:t.xCoords[i],y:t.yCoords[i]})}),null==h&&(h={x:e.position("x"),y:e.position("y")}),{x:h.x,y:h.y}};if("default"==t.quality||"proof"==t.quality||t.randomize){var M=o.calcParentsWithoutChildren(e,i),x=i.filter(function(t){return"none"==t.css("display")});t.eles=i.not(x),i.nodes().not(":parent").not(x).layoutPositions(this,t,_),M.length>0&&M.forEach(function(t){t.position(_(t))})}else console.log("If randomize option is set to false, then quality option must be 'default' or 'proof'.")}}]),t}();t.exports=l},657:(t,e,i)=>{var n=i(548),r=i(140).layoutBase.Matrix,o=i(140).layoutBase.SVD;t.exports={spectralLayout:function(t){var e=t.cy,i=t.eles,s=i.nodes(),a=i.nodes(":parent"),h=new Map,l=new Map,d=new Map,c=[],g=[],u=[],f=[],p=[],y=[],m=[],v=[],E=void 0,N=1e8,T=1e-9,A=t.piTol,w=t.samplingType,I=t.nodeSeparation,C=void 0,L=function(t,e,i){for(var n=[],r=0,o=0,s=0,a=void 0,h=[],d=0,g=1,u=0;u<E;u++)h[u]=N;for(n[o]=t,h[t]=0;o>=r;){s=n[r++];for(var f=c[s],m=0;m<f.length;m++)h[a=l.get(f[m])]==N&&(h[a]=h[s]+1,n[++o]=a);y[s][e]=h[s]*I}if(i){for(var v=0;v<E;v++)y[v][e]<p[v]&&(p[v]=y[v][e]);for(var T=0;T<E;T++)p[T]>d&&(d=p[T],g=T)}return g};n.connectComponents(e,i,n.getTopMostNodes(s),h),a.forEach(function(t){n.connectComponents(e,i,n.getTopMostNodes(t.descendants().intersection(i)),h)});for(var _=0,M=0;M<s.length;M++)s[M].isParent()||l.set(s[M].id(),_++);var x=!0,O=!1,D=void 0;try{for(var R,b=h.keys()[Symbol.iterator]();!(x=(R=b.next()).done);x=!0){var F=R.value;l.set(F,_++)}}catch(K){O=!0,D=K}finally{try{!x&&b.return&&b.return()}finally{if(O)throw D}}for(var G=0;G<l.size;G++)c[G]=[];a.forEach(function(t){for(var e=t.children().intersection(i);0==e.nodes(":childless").length;)e=e.nodes()[0].children().intersection(i);var n=0,r=e.nodes(":childless")[0].connectedEdges().length;e.nodes(":childless").forEach(function(t,e){t.connectedEdges().length<r&&(r=t.connectedEdges().length,n=e)}),d.set(t.id(),e.nodes(":childless")[n].id())}),s.forEach(function(t){var e=void 0;e=t.isParent()?l.get(d.get(t.id())):l.get(t.id()),t.neighborhood().nodes().forEach(function(n){i.intersection(t.edgesWith(n)).length>0&&(n.isParent()?c[e].push(d.get(n.id())):c[e].push(n.id()))})});var S=function(t){var i=l.get(t),n=void 0;h.get(t).forEach(function(r){n=e.getElementById(r).isParent()?d.get(r):r,c[i].push(n),c[l.get(n)].push(t)})},P=!0,U=!1,Y=void 0;try{for(var k,H=h.keys()[Symbol.iterator]();!(P=(k=H.next()).done);P=!0)S(k.value)}catch(K){U=!0,Y=K}finally{try{!P&&H.return&&H.return()}finally{if(U)throw Y}}var X=void 0;if((E=l.size)>2){C=E<t.sampleSize?E:t.sampleSize;for(var z=0;z<E;z++)y[z]=[];for(var V=0;V<C;V++)v[V]=[];return"draft"==t.quality||"all"==t.step?(function(t){var e=void 0;if(t){e=Math.floor(Math.random()*E);for(var i=0;i<E;i++)p[i]=N;for(var n=0;n<C;n++)f[n]=e,e=L(e,n,t)}else{!function(){for(var t=0,e=0,i=!1;e<C;){t=Math.floor(Math.random()*E),i=!1;for(var n=0;n<e;n++)if(f[n]==t){i=!0;break}i||(f[e]=t,e++)}}();for(var r=0;r<C;r++)L(f[r],r,t)}for(var o=0;o<E;o++)for(var s=0;s<C;s++)y[o][s]*=y[o][s];for(var a=0;a<C;a++)m[a]=[];for(var h=0;h<C;h++)for(var l=0;l<C;l++)m[h][l]=y[f[l]][h]}(w),function(){for(var t=o.svd(m),e=t.S,i=t.U,n=t.V,s=e[0]*e[0]*e[0],a=[],h=0;h<C;h++){a[h]=[];for(var l=0;l<C;l++)a[h][l]=0,h==l&&(a[h][l]=e[h]/(e[h]*e[h]+s/(e[h]*e[h])))}v=r.multMat(r.multMat(n,a),r.transpose(i))}(),function(){for(var t=void 0,e=void 0,i=[],n=[],o=[],s=[],a=0;a<E;a++)i[a]=Math.random(),n[a]=Math.random();i=r.normalize(i),n=r.normalize(n);for(var h=T,l=T,d=void 0;;){for(var c=0;c<E;c++)o[c]=i[c];if(i=r.multGamma(r.multL(r.multGamma(o),y,v)),t=r.dotProduct(o,i),i=r.normalize(i),h=r.dotProduct(o,i),(d=Math.abs(h/l))<=1+A&&d>=1)break;l=h}for(var f=0;f<E;f++)o[f]=i[f];for(l=T;;){for(var p=0;p<E;p++)s[p]=n[p];if(s=r.minusOp(s,r.multCons(o,r.dotProduct(o,s))),n=r.multGamma(r.multL(r.multGamma(s),y,v)),e=r.dotProduct(s,n),n=r.normalize(n),h=r.dotProduct(s,n),(d=Math.abs(h/l))<=1+A&&d>=1)break;l=h}for(var m=0;m<E;m++)s[m]=n[m];g=r.multCons(o,Math.sqrt(Math.abs(t))),u=r.multCons(s,Math.sqrt(Math.abs(e)))}(),X={nodeIndexes:l,xCoords:g,yCoords:u}):(l.forEach(function(t,i){g.push(e.getElementById(i).position("x")),u.push(e.getElementById(i).position("y"))}),X={nodeIndexes:l,xCoords:g,yCoords:u}),X}var B=l.keys(),W=e.getElementById(B.next().value),j=W.position(),$=W.outerWidth();if(g.push(j.x),u.push(j.y),2==E){var q=e.getElementById(B.next().value).outerWidth();g.push(j.x+$/2+q/2+t.idealEdgeLength),u.push(j.y)}return X={nodeIndexes:l,xCoords:g,yCoords:u}}}},579:(t,e,i)=>{var n=i(212),r=function(t){t&&t("layout","fcose",n)};"undefined"!=typeof cytoscape&&r(cytoscape),t.exports=r},140:e=>{e.exports=t}},i={},n=function t(n){var r=i[n];if(void 0!==r)return r.exports;var o=i[n]={exports:{}};return e[n](o,o.exports,t),o.exports}(579);return n})()},t.exports=n(i(1709))},1709(t,e,i){var n;n=function(t){return(()=>{"use strict";var e={45:(t,e,i)=>{var n={};n.layoutBase=i(551),n.CoSEConstants=i(806),n.CoSEEdge=i(767),n.CoSEGraph=i(880),n.CoSEGraphManager=i(578),n.CoSELayout=i(765),n.CoSENode=i(991),n.ConstraintHandler=i(902),t.exports=n},806:(t,e,i)=>{var n=i(551).FDLayoutConstants;function r(){}for(var o in n)r[o]=n[o];r.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,r.DEFAULT_RADIAL_SEPARATION=n.DEFAULT_EDGE_LENGTH,r.DEFAULT_COMPONENT_SEPERATION=60,r.TILE=!0,r.TILING_PADDING_VERTICAL=10,r.TILING_PADDING_HORIZONTAL=10,r.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,r.ENFORCE_CONSTRAINTS=!0,r.APPLY_LAYOUT=!0,r.RELAX_MOVEMENT_ON_CONSTRAINTS=!0,r.TREE_REDUCTION_ON_INCREMENTAL=!0,r.PURE_INCREMENTAL=r.DEFAULT_INCREMENTAL,t.exports=r},767:(t,e,i)=>{var n=i(551).FDLayoutEdge;function r(t,e,i){n.call(this,t,e,i)}for(var o in r.prototype=Object.create(n.prototype),n)r[o]=n[o];t.exports=r},880:(t,e,i)=>{var n=i(551).LGraph;function r(t,e,i){n.call(this,t,e,i)}for(var o in r.prototype=Object.create(n.prototype),n)r[o]=n[o];t.exports=r},578:(t,e,i)=>{var n=i(551).LGraphManager;function r(t){n.call(this,t)}for(var o in r.prototype=Object.create(n.prototype),n)r[o]=n[o];t.exports=r},765:(t,e,i)=>{var n=i(551).FDLayout,r=i(578),o=i(880),s=i(991),a=i(767),h=i(806),l=i(902),d=i(551).FDLayoutConstants,c=i(551).LayoutConstants,g=i(551).Point,u=i(551).PointD,f=i(551).DimensionD,p=i(551).Layout,y=i(551).Integer,m=i(551).IGeometry,v=i(551).LGraph,E=i(551).Transform,N=i(551).LinkedList;function T(){n.call(this),this.toBeTiled={},this.constraints={}}for(var A in T.prototype=Object.create(n.prototype),n)T[A]=n[A];T.prototype.newGraphManager=function(){var t=new r(this);return this.graphManager=t,t},T.prototype.newGraph=function(t){return new o(null,this.graphManager,t)},T.prototype.newNode=function(t){return new s(this.graphManager,t)},T.prototype.newEdge=function(t){return new a(null,null,t)},T.prototype.initParameters=function(){n.prototype.initParameters.call(this,arguments),this.isSubLayout||(h.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=h.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=h.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=d.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=d.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=d.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=d.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1)},T.prototype.initSpringEmbedder=function(){n.prototype.initSpringEmbedder.call(this),this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/d.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=.04,this.coolingAdjuster=1},T.prototype.layout=function(){return c.DEFAULT_CREATE_BENDS_AS_NEEDED&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},T.prototype.classicLayout=function(){if(this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),this.incremental)h.TREE_REDUCTION_ON_INCREMENTAL&&(this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation(),e=new Set(this.getAllNodes()),i=this.nodesWithGravity.filter(function(t){return e.has(t)}),this.graphManager.setAllNodesToApplyGravitation(i));else{var t=this.getFlatForest();if(t.length>0)this.positionNodesRadially(t);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var e=new Set(this.getAllNodes()),i=this.nodesWithGravity.filter(function(t){return e.has(t)});this.graphManager.setAllNodesToApplyGravitation(i),this.positionNodesRandomly()}}return Object.keys(this.constraints).length>0&&(l.handleConstraints(this),this.initConstraintVariables()),this.initSpringEmbedder(),h.APPLY_LAYOUT&&this.runSpringEmbedder(),!0},T.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished){if(!(this.prunedNodesAll.length>0))return!0;this.isTreeGrowing=!0}if(this.totalIterations%d.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged()){if(!(this.prunedNodesAll.length>0))return!0;this.isTreeGrowing=!0}this.coolingCycle++,0==this.layoutQuality?this.coolingAdjuster=this.coolingCycle:1==this.layoutQuality&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var t=new Set(this.getAllNodes()),e=this.nodesWithGravity.filter(function(e){return t.has(e)});this.graphManager.setAllNodesToApplyGravitation(e),this.graphManager.updateBounds(),this.updateGrid(),h.PURE_INCREMENTAL?this.coolingFactor=d.DEFAULT_COOLING_FACTOR_INCREMENTAL/2:this.coolingFactor=d.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),h.PURE_INCREMENTAL?this.coolingFactor=d.DEFAULT_COOLING_FACTOR_INCREMENTAL/2*((100-this.afterGrowthIterations)/100):this.coolingFactor=d.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var i=!this.isTreeGrowing&&!this.isGrowthFinished,n=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(i,n),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},T.prototype.getPositionsData=function(){for(var t=this.graphManager.getAllNodes(),e={},i=0;i<t.length;i++){var n=t[i].rect,r=t[i].id;e[r]={id:r,x:n.getCenterX(),y:n.getCenterY(),w:n.width,h:n.height}}return e},T.prototype.runSpringEmbedder=function(){this.initialAnimationPeriod=25,this.animationPeriod=this.initialAnimationPeriod;var t=!1;if("during"===d.ANIMATE)this.emit("layoutstarted");else{for(;!t;)t=this.tick();this.graphManager.updateBounds()}},T.prototype.moveNodes=function(){for(var t=this.getAllNodes(),e=0;e<t.length;e++)t[e].calculateDisplacement();for(Object.keys(this.constraints).length>0&&this.updateDisplacements(),e=0;e<t.length;e++)t[e].move()},T.prototype.initConstraintVariables=function(){var t=this;this.idToNodeMap=new Map,this.fixedNodeSet=new Set;for(var e=this.graphManager.getAllNodes(),i=0;i<e.length;i++){var n=e[i];this.idToNodeMap.set(n.id,n)}var r=function e(i){for(var n,r=i.getChild().getNodes(),o=0,s=0;s<r.length;s++)null==(n=r[s]).getChild()?t.fixedNodeSet.has(n.id)&&(o+=100):o+=e(n);return o};if(this.constraints.fixedNodeConstraint)for(this.constraints.fixedNodeConstraint.forEach(function(e){t.fixedNodeSet.add(e.nodeId)}),e=this.graphManager.getAllNodes(),i=0;i<e.length;i++)if(null!=(n=e[i]).getChild()){var o=r(n);o>0&&(n.fixedNodeWeight=o)}if(this.constraints.relativePlacementConstraint){var s=new Map,a=new Map;if(this.dummyToNodeForVerticalAlignment=new Map,this.dummyToNodeForHorizontalAlignment=new Map,this.fixedNodesOnHorizontal=new Set,this.fixedNodesOnVertical=new Set,this.fixedNodeSet.forEach(function(e){t.fixedNodesOnHorizontal.add(e),t.fixedNodesOnVertical.add(e)}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical){var l=this.constraints.alignmentConstraint.vertical;for(i=0;i<l.length;i++)this.dummyToNodeForVerticalAlignment.set("dummy"+i,[]),l[i].forEach(function(e){s.set(e,"dummy"+i),t.dummyToNodeForVerticalAlignment.get("dummy"+i).push(e),t.fixedNodeSet.has(e)&&t.fixedNodesOnHorizontal.add("dummy"+i)})}if(this.constraints.alignmentConstraint.horizontal){var d=this.constraints.alignmentConstraint.horizontal;for(i=0;i<d.length;i++)this.dummyToNodeForHorizontalAlignment.set("dummy"+i,[]),d[i].forEach(function(e){a.set(e,"dummy"+i),t.dummyToNodeForHorizontalAlignment.get("dummy"+i).push(e),t.fixedNodeSet.has(e)&&t.fixedNodesOnVertical.add("dummy"+i)})}}if(h.RELAX_MOVEMENT_ON_CONSTRAINTS)this.shuffle=function(t){var e,i,n;for(n=t.length-1;n>=2*t.length/3;n--)e=Math.floor(Math.random()*(n+1)),i=t[n],t[n]=t[e],t[e]=i;return t},this.nodesInRelativeHorizontal=[],this.nodesInRelativeVertical=[],this.nodeToRelativeConstraintMapHorizontal=new Map,this.nodeToRelativeConstraintMapVertical=new Map,this.nodeToTempPositionMapHorizontal=new Map,this.nodeToTempPositionMapVertical=new Map,this.constraints.relativePlacementConstraint.forEach(function(e){if(e.left){var i=s.has(e.left)?s.get(e.left):e.left,n=s.has(e.right)?s.get(e.right):e.right;t.nodesInRelativeHorizontal.includes(i)||(t.nodesInRelativeHorizontal.push(i),t.nodeToRelativeConstraintMapHorizontal.set(i,[]),t.dummyToNodeForVerticalAlignment.has(i)?t.nodeToTempPositionMapHorizontal.set(i,t.idToNodeMap.get(t.dummyToNodeForVerticalAlignment.get(i)[0]).getCenterX()):t.nodeToTempPositionMapHorizontal.set(i,t.idToNodeMap.get(i).getCenterX())),t.nodesInRelativeHorizontal.includes(n)||(t.nodesInRelativeHorizontal.push(n),t.nodeToRelativeConstraintMapHorizontal.set(n,[]),t.dummyToNodeForVerticalAlignment.has(n)?t.nodeToTempPositionMapHorizontal.set(n,t.idToNodeMap.get(t.dummyToNodeForVerticalAlignment.get(n)[0]).getCenterX()):t.nodeToTempPositionMapHorizontal.set(n,t.idToNodeMap.get(n).getCenterX())),t.nodeToRelativeConstraintMapHorizontal.get(i).push({right:n,gap:e.gap}),t.nodeToRelativeConstraintMapHorizontal.get(n).push({left:i,gap:e.gap})}else{var r=a.has(e.top)?a.get(e.top):e.top,o=a.has(e.bottom)?a.get(e.bottom):e.bottom;t.nodesInRelativeVertical.includes(r)||(t.nodesInRelativeVertical.push(r),t.nodeToRelativeConstraintMapVertical.set(r,[]),t.dummyToNodeForHorizontalAlignment.has(r)?t.nodeToTempPositionMapVertical.set(r,t.idToNodeMap.get(t.dummyToNodeForHorizontalAlignment.get(r)[0]).getCenterY()):t.nodeToTempPositionMapVertical.set(r,t.idToNodeMap.get(r).getCenterY())),t.nodesInRelativeVertical.includes(o)||(t.nodesInRelativeVertical.push(o),t.nodeToRelativeConstraintMapVertical.set(o,[]),t.dummyToNodeForHorizontalAlignment.has(o)?t.nodeToTempPositionMapVertical.set(o,t.idToNodeMap.get(t.dummyToNodeForHorizontalAlignment.get(o)[0]).getCenterY()):t.nodeToTempPositionMapVertical.set(o,t.idToNodeMap.get(o).getCenterY())),t.nodeToRelativeConstraintMapVertical.get(r).push({bottom:o,gap:e.gap}),t.nodeToRelativeConstraintMapVertical.get(o).push({top:r,gap:e.gap})}});else{var c=new Map,g=new Map;this.constraints.relativePlacementConstraint.forEach(function(t){if(t.left){var e=s.has(t.left)?s.get(t.left):t.left,i=s.has(t.right)?s.get(t.right):t.right;c.has(e)?c.get(e).push(i):c.set(e,[i]),c.has(i)?c.get(i).push(e):c.set(i,[e])}else{var n=a.has(t.top)?a.get(t.top):t.top,r=a.has(t.bottom)?a.get(t.bottom):t.bottom;g.has(n)?g.get(n).push(r):g.set(n,[r]),g.has(r)?g.get(r).push(n):g.set(r,[n])}});var u=function(t,e){var i=[],n=[],r=new N,o=new Set,s=0;return t.forEach(function(a,h){if(!o.has(h)){i[s]=[],n[s]=!1;var l=h;for(r.push(l),o.add(l),i[s].push(l);0!=r.length;)l=r.shift(),e.has(l)&&(n[s]=!0),t.get(l).forEach(function(t){o.has(t)||(r.push(t),o.add(t),i[s].push(t))});s++}}),{components:i,isFixed:n}},f=u(c,t.fixedNodesOnHorizontal);this.componentsOnHorizontal=f.components,this.fixedComponentsOnHorizontal=f.isFixed;var p=u(g,t.fixedNodesOnVertical);this.componentsOnVertical=p.components,this.fixedComponentsOnVertical=p.isFixed}}},T.prototype.updateDisplacements=function(){var t=this;if(this.constraints.fixedNodeConstraint&&this.constraints.fixedNodeConstraint.forEach(function(e){var i=t.idToNodeMap.get(e.nodeId);i.displacementX=0,i.displacementY=0}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var e=this.constraints.alignmentConstraint.vertical,i=0;i<e.length;i++){for(var n=0,r=0;r<e[i].length;r++){if(this.fixedNodeSet.has(e[i][r])){n=0;break}n+=this.idToNodeMap.get(e[i][r]).displacementX}var o=n/e[i].length;for(r=0;r<e[i].length;r++)this.idToNodeMap.get(e[i][r]).displacementX=o}if(this.constraints.alignmentConstraint.horizontal){var s=this.constraints.alignmentConstraint.horizontal;for(i=0;i<s.length;i++){var a=0;for(r=0;r<s[i].length;r++){if(this.fixedNodeSet.has(s[i][r])){a=0;break}a+=this.idToNodeMap.get(s[i][r]).displacementY}var l=a/s[i].length;for(r=0;r<s[i].length;r++)this.idToNodeMap.get(s[i][r]).displacementY=l}}}if(this.constraints.relativePlacementConstraint)if(h.RELAX_MOVEMENT_ON_CONSTRAINTS)this.totalIterations%10==0&&(this.shuffle(this.nodesInRelativeHorizontal),this.shuffle(this.nodesInRelativeVertical)),this.nodesInRelativeHorizontal.forEach(function(e){if(!t.fixedNodesOnHorizontal.has(e)){var i=0;i=t.dummyToNodeForVerticalAlignment.has(e)?t.idToNodeMap.get(t.dummyToNodeForVerticalAlignment.get(e)[0]).displacementX:t.idToNodeMap.get(e).displacementX,t.nodeToRelativeConstraintMapHorizontal.get(e).forEach(function(n){var r;n.right?(r=t.nodeToTempPositionMapHorizontal.get(n.right)-t.nodeToTempPositionMapHorizontal.get(e)-i)<n.gap&&(i-=n.gap-r):(r=t.nodeToTempPositionMapHorizontal.get(e)-t.nodeToTempPositionMapHorizontal.get(n.left)+i)<n.gap&&(i+=n.gap-r)}),t.nodeToTempPositionMapHorizontal.set(e,t.nodeToTempPositionMapHorizontal.get(e)+i),t.dummyToNodeForVerticalAlignment.has(e)?t.dummyToNodeForVerticalAlignment.get(e).forEach(function(e){t.idToNodeMap.get(e).displacementX=i}):t.idToNodeMap.get(e).displacementX=i}}),this.nodesInRelativeVertical.forEach(function(e){if(!t.fixedNodesOnHorizontal.has(e)){var i=0;i=t.dummyToNodeForHorizontalAlignment.has(e)?t.idToNodeMap.get(t.dummyToNodeForHorizontalAlignment.get(e)[0]).displacementY:t.idToNodeMap.get(e).displacementY,t.nodeToRelativeConstraintMapVertical.get(e).forEach(function(n){var r;n.bottom?(r=t.nodeToTempPositionMapVertical.get(n.bottom)-t.nodeToTempPositionMapVertical.get(e)-i)<n.gap&&(i-=n.gap-r):(r=t.nodeToTempPositionMapVertical.get(e)-t.nodeToTempPositionMapVertical.get(n.top)+i)<n.gap&&(i+=n.gap-r)}),t.nodeToTempPositionMapVertical.set(e,t.nodeToTempPositionMapVertical.get(e)+i),t.dummyToNodeForHorizontalAlignment.has(e)?t.dummyToNodeForHorizontalAlignment.get(e).forEach(function(e){t.idToNodeMap.get(e).displacementY=i}):t.idToNodeMap.get(e).displacementY=i}});else{for(i=0;i<this.componentsOnHorizontal.length;i++){var d=this.componentsOnHorizontal[i];if(this.fixedComponentsOnHorizontal[i])for(r=0;r<d.length;r++)this.dummyToNodeForVerticalAlignment.has(d[r])?this.dummyToNodeForVerticalAlignment.get(d[r]).forEach(function(e){t.idToNodeMap.get(e).displacementX=0}):this.idToNodeMap.get(d[r]).displacementX=0;else{var c=0,g=0;for(r=0;r<d.length;r++)this.dummyToNodeForVerticalAlignment.has(d[r])?(c+=(f=this.dummyToNodeForVerticalAlignment.get(d[r])).length*this.idToNodeMap.get(f[0]).displacementX,g+=f.length):(c+=this.idToNodeMap.get(d[r]).displacementX,g++);var u=c/g;for(r=0;r<d.length;r++)this.dummyToNodeForVerticalAlignment.has(d[r])?this.dummyToNodeForVerticalAlignment.get(d[r]).forEach(function(e){t.idToNodeMap.get(e).displacementX=u}):this.idToNodeMap.get(d[r]).displacementX=u}}for(i=0;i<this.componentsOnVertical.length;i++)if(d=this.componentsOnVertical[i],this.fixedComponentsOnVertical[i])for(r=0;r<d.length;r++)this.dummyToNodeForHorizontalAlignment.has(d[r])?this.dummyToNodeForHorizontalAlignment.get(d[r]).forEach(function(e){t.idToNodeMap.get(e).displacementY=0}):this.idToNodeMap.get(d[r]).displacementY=0;else{for(c=0,g=0,r=0;r<d.length;r++){var f;this.dummyToNodeForHorizontalAlignment.has(d[r])?(c+=(f=this.dummyToNodeForHorizontalAlignment.get(d[r])).length*this.idToNodeMap.get(f[0]).displacementY,g+=f.length):(c+=this.idToNodeMap.get(d[r]).displacementY,g++)}for(u=c/g,r=0;r<d.length;r++)this.dummyToNodeForHorizontalAlignment.has(d[r])?this.dummyToNodeForHorizontalAlignment.get(d[r]).forEach(function(e){t.idToNodeMap.get(e).displacementY=u}):this.idToNodeMap.get(d[r]).displacementY=u}}},T.prototype.calculateNodesToApplyGravitationTo=function(){var t,e,i=[],n=this.graphManager.getGraphs(),r=n.length;for(e=0;e<r;e++)(t=n[e]).updateConnected(),t.isConnected||(i=i.concat(t.getNodes()));return i},T.prototype.createBendpoints=function(){var t=[];t=t.concat(this.graphManager.getAllEdges());var e,i=new Set;for(e=0;e<t.length;e++){var n=t[e];if(!i.has(n)){var r=n.getSource(),o=n.getTarget();if(r==o)n.getBendpoints().push(new u),n.getBendpoints().push(new u),this.createDummyNodesForBendpoints(n),i.add(n);else{var s=[];if(s=(s=s.concat(r.getEdgeListToNode(o))).concat(o.getEdgeListToNode(r)),!i.has(s[0])){var a;if(s.length>1)for(a=0;a<s.length;a++){var h=s[a];h.getBendpoints().push(new u),this.createDummyNodesForBendpoints(h)}s.forEach(function(t){i.add(t)})}}}if(i.size==t.length)break}},T.prototype.positionNodesRadially=function(t){for(var e=new g(0,0),i=Math.ceil(Math.sqrt(t.length)),n=0,r=0,o=0,s=new u(0,0),a=0;a<t.length;a++){a%i==0&&(o=0,r=n,0!=a&&(r+=h.DEFAULT_COMPONENT_SEPERATION),n=0);var l=t[a],d=p.findCenterOfTree(l);e.x=o,e.y=r,(s=T.radialLayout(l,d,e)).y>n&&(n=Math.floor(s.y)),o=Math.floor(s.x+h.DEFAULT_COMPONENT_SEPERATION)}this.transform(new u(c.WORLD_CENTER_X-s.x/2,c.WORLD_CENTER_Y-s.y/2))},T.radialLayout=function(t,e,i){var n=Math.max(this.maxDiagonalInTree(t),h.DEFAULT_RADIAL_SEPARATION);T.branchRadialLayout(e,null,0,359,0,n);var r=v.calculateBounds(t),o=new E;o.setDeviceOrgX(r.getMinX()),o.setDeviceOrgY(r.getMinY()),o.setWorldOrgX(i.x),o.setWorldOrgY(i.y);for(var s=0;s<t.length;s++)t[s].transform(o);var a=new u(r.getMaxX(),r.getMaxY());return o.inverseTransformPoint(a)},T.branchRadialLayout=function(t,e,i,n,r,o){var s=(n-i+1)/2;s<0&&(s+=180);var a=(s+i)%360*m.TWO_PI/360,h=(Math.cos(a),r*Math.cos(a)),l=r*Math.sin(a);t.setCenter(h,l);var d=[],c=(d=d.concat(t.getEdges())).length;null!=e&&c--;for(var g,u=0,f=d.length,p=t.getEdgesBetween(e);p.length>1;){var y=p[0];p.splice(0,1);var v=d.indexOf(y);v>=0&&d.splice(v,1),f--,c--}g=null!=e?(d.indexOf(p[0])+1)%f:0;for(var E=Math.abs(n-i)/c,N=g;u!=c;N=++N%f){var A=d[N].getOtherEnd(t);if(A!=e){var w=(i+u*E)%360,I=(w+E)%360;T.branchRadialLayout(A,t,w,I,r+o,o),u++}}},T.maxDiagonalInTree=function(t){for(var e=y.MIN_VALUE,i=0;i<t.length;i++){var n=t[i].getDiagonal();n>e&&(e=n)}return e},T.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},T.prototype.groupZeroDegreeMembers=function(){var t=this,e={};this.memberGroups={},this.idToDummyNode={};for(var i=[],n=this.graphManager.getAllNodes(),r=0;r<n.length;r++){var o=(a=n[r]).getParent();0!==this.getNodeDegreeWithChildren(a)||null!=o.id&&this.getToBeTiled(o)||i.push(a)}for(r=0;r<i.length;r++){var a,h=(a=i[r]).getParent().id;void 0===e[h]&&(e[h]=[]),e[h]=e[h].concat(a)}Object.keys(e).forEach(function(i){if(e[i].length>1){var n="DummyCompound_"+i;t.memberGroups[n]=e[i];var r=e[i][0].getParent(),o=new s(t.graphManager);o.id=n,o.paddingLeft=r.paddingLeft||0,o.paddingRight=r.paddingRight||0,o.paddingBottom=r.paddingBottom||0,o.paddingTop=r.paddingTop||0,t.idToDummyNode[n]=o;var a=t.getGraphManager().add(t.newGraph(),o),h=r.getChild();h.add(o);for(var l=0;l<e[i].length;l++){var d=e[i][l];h.remove(d),a.add(d)}}})},T.prototype.clearCompounds=function(){var t={},e={};this.performDFSOnCompounds();for(var i=0;i<this.compoundOrder.length;i++)e[this.compoundOrder[i].id]=this.compoundOrder[i],t[this.compoundOrder[i].id]=[].concat(this.compoundOrder[i].getChild().getNodes()),this.graphManager.remove(this.compoundOrder[i].getChild()),this.compoundOrder[i].child=null;this.graphManager.resetAllNodes(),this.tileCompoundMembers(t,e)},T.prototype.clearZeroDegreeMembers=function(){var t=this,e=this.tiledZeroDegreePack=[];Object.keys(this.memberGroups).forEach(function(i){var n=t.idToDummyNode[i];if(e[i]=t.tileNodes(t.memberGroups[i],n.paddingLeft+n.paddingRight),n.rect.width=e[i].width,n.rect.height=e[i].height,n.setCenter(e[i].centerX,e[i].centerY),n.labelMarginLeft=0,n.labelMarginTop=0,h.NODE_DIMENSIONS_INCLUDE_LABELS){var r=n.rect.width,o=n.rect.height;n.labelWidth&&("left"==n.labelPosHorizontal?(n.rect.x-=n.labelWidth,n.setWidth(r+n.labelWidth),n.labelMarginLeft=n.labelWidth):"center"==n.labelPosHorizontal&&n.labelWidth>r?(n.rect.x-=(n.labelWidth-r)/2,n.setWidth(n.labelWidth),n.labelMarginLeft=(n.labelWidth-r)/2):"right"==n.labelPosHorizontal&&n.setWidth(r+n.labelWidth)),n.labelHeight&&("top"==n.labelPosVertical?(n.rect.y-=n.labelHeight,n.setHeight(o+n.labelHeight),n.labelMarginTop=n.labelHeight):"center"==n.labelPosVertical&&n.labelHeight>o?(n.rect.y-=(n.labelHeight-o)/2,n.setHeight(n.labelHeight),n.labelMarginTop=(n.labelHeight-o)/2):"bottom"==n.labelPosVertical&&n.setHeight(o+n.labelHeight))}})},T.prototype.repopulateCompounds=function(){for(var t=this.compoundOrder.length-1;t>=0;t--){var e=this.compoundOrder[t],i=e.id,n=e.paddingLeft,r=e.paddingTop,o=e.labelMarginLeft,s=e.labelMarginTop;this.adjustLocations(this.tiledMemberPack[i],e.rect.x,e.rect.y,n,r,o,s)}},T.prototype.repopulateZeroDegreeMembers=function(){var t=this,e=this.tiledZeroDegreePack;Object.keys(e).forEach(function(i){var n=t.idToDummyNode[i],r=n.paddingLeft,o=n.paddingTop,s=n.labelMarginLeft,a=n.labelMarginTop;t.adjustLocations(e[i],n.rect.x,n.rect.y,r,o,s,a)})},T.prototype.getToBeTiled=function(t){var e=t.id;if(null!=this.toBeTiled[e])return this.toBeTiled[e];var i=t.getChild();if(null==i)return this.toBeTiled[e]=!1,!1;for(var n=i.getNodes(),r=0;r<n.length;r++){var o=n[r];if(this.getNodeDegree(o)>0)return this.toBeTiled[e]=!1,!1;if(null!=o.getChild()){if(!this.getToBeTiled(o))return this.toBeTiled[e]=!1,!1}else this.toBeTiled[o.id]=!1}return this.toBeTiled[e]=!0,!0},T.prototype.getNodeDegree=function(t){t.id;for(var e=t.getEdges(),i=0,n=0;n<e.length;n++){var r=e[n];r.getSource().id!==r.getTarget().id&&(i+=1)}return i},T.prototype.getNodeDegreeWithChildren=function(t){var e=this.getNodeDegree(t);if(null==t.getChild())return e;for(var i=t.getChild().getNodes(),n=0;n<i.length;n++){var r=i[n];e+=this.getNodeDegreeWithChildren(r)}return e},T.prototype.performDFSOnCompounds=function(){this.compoundOrder=[],this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes())},T.prototype.fillCompexOrderByDFS=function(t){for(var e=0;e<t.length;e++){var i=t[e];null!=i.getChild()&&this.fillCompexOrderByDFS(i.getChild().getNodes()),this.getToBeTiled(i)&&this.compoundOrder.push(i)}},T.prototype.adjustLocations=function(t,e,i,n,r,o,s){i+=r+s;for(var a=e+=n+o,h=0;h<t.rows.length;h++){var l=t.rows[h];e=a;for(var d=0,c=0;c<l.length;c++){var g=l[c];g.rect.x=e,g.rect.y=i,e+=g.rect.width+t.horizontalPadding,g.rect.height>d&&(d=g.rect.height)}i+=d+t.verticalPadding}},T.prototype.tileCompoundMembers=function(t,e){var i=this;this.tiledMemberPack=[],Object.keys(t).forEach(function(n){var r=e[n];if(i.tiledMemberPack[n]=i.tileNodes(t[n],r.paddingLeft+r.paddingRight),r.rect.width=i.tiledMemberPack[n].width,r.rect.height=i.tiledMemberPack[n].height,r.setCenter(i.tiledMemberPack[n].centerX,i.tiledMemberPack[n].centerY),r.labelMarginLeft=0,r.labelMarginTop=0,h.NODE_DIMENSIONS_INCLUDE_LABELS){var o=r.rect.width,s=r.rect.height;r.labelWidth&&("left"==r.labelPosHorizontal?(r.rect.x-=r.labelWidth,r.setWidth(o+r.labelWidth),r.labelMarginLeft=r.labelWidth):"center"==r.labelPosHorizontal&&r.labelWidth>o?(r.rect.x-=(r.labelWidth-o)/2,r.setWidth(r.labelWidth),r.labelMarginLeft=(r.labelWidth-o)/2):"right"==r.labelPosHorizontal&&r.setWidth(o+r.labelWidth)),r.labelHeight&&("top"==r.labelPosVertical?(r.rect.y-=r.labelHeight,r.setHeight(s+r.labelHeight),r.labelMarginTop=r.labelHeight):"center"==r.labelPosVertical&&r.labelHeight>s?(r.rect.y-=(r.labelHeight-s)/2,r.setHeight(r.labelHeight),r.labelMarginTop=(r.labelHeight-s)/2):"bottom"==r.labelPosVertical&&r.setHeight(s+r.labelHeight))}})},T.prototype.tileNodes=function(t,e){var i=this.tileNodesByFavoringDim(t,e,!0),n=this.tileNodesByFavoringDim(t,e,!1),r=this.getOrgRatio(i);return this.getOrgRatio(n)<r?n:i},T.prototype.getOrgRatio=function(t){var e=t.width/t.height;return e<1&&(e=1/e),e},T.prototype.calcIdealRowWidth=function(t,e){var i=h.TILING_PADDING_VERTICAL,n=h.TILING_PADDING_HORIZONTAL,r=t.length,o=0,s=0,a=0;t.forEach(function(t){o+=t.getWidth(),s+=t.getHeight(),t.getWidth()>a&&(a=t.getWidth())});var l,d=o/r,c=s/r,g=Math.pow(i-n,2)+4*(d+n)*(c+i)*r,u=(n-i+Math.sqrt(g))/(2*(d+n));e?(l=Math.ceil(u))==u&&l++:l=Math.floor(u);var f=l*(d+n)-n;return a>f&&(f=a),f+=2*n},T.prototype.tileNodesByFavoringDim=function(t,e,i){var n=h.TILING_PADDING_VERTICAL,r=h.TILING_PADDING_HORIZONTAL,o=h.TILING_COMPARE_BY,s={rows:[],rowWidth:[],rowHeight:[],width:0,height:e,verticalPadding:n,horizontalPadding:r,centerX:0,centerY:0};o&&(s.idealRowWidth=this.calcIdealRowWidth(t,i));var a=function(t){return t.rect.width*t.rect.height},l=function(t,e){return a(e)-a(t)};t.sort(function(t,e){var i=l;return s.idealRowWidth?(i=o)(t.id,e.id):i(t,e)});for(var d=0,c=0,g=0;g<t.length;g++)d+=(u=t[g]).getCenterX(),c+=u.getCenterY();for(s.centerX=d/t.length,s.centerY=c/t.length,g=0;g<t.length;g++){var u=t[g];if(0==s.rows.length)this.insertNodeToRow(s,u,0,e);else if(this.canAddHorizontal(s,u.rect.width,u.rect.height)){var f=s.rows.length-1;s.idealRowWidth||(f=this.getShortestRowIndex(s)),this.insertNodeToRow(s,u,f,e)}else this.insertNodeToRow(s,u,s.rows.length,e);this.shiftToLastRow(s)}return s},T.prototype.insertNodeToRow=function(t,e,i,n){var r=n;i==t.rows.length&&(t.rows.push([]),t.rowWidth.push(r),t.rowHeight.push(0));var o=t.rowWidth[i]+e.rect.width;t.rows[i].length>0&&(o+=t.horizontalPadding),t.rowWidth[i]=o,t.width<o&&(t.width=o);var s=e.rect.height;i>0&&(s+=t.verticalPadding);var a=0;s>t.rowHeight[i]&&(a=t.rowHeight[i],t.rowHeight[i]=s,a=t.rowHeight[i]-a),t.height+=a,t.rows[i].push(e)},T.prototype.getShortestRowIndex=function(t){for(var e=-1,i=Number.MAX_VALUE,n=0;n<t.rows.length;n++)t.rowWidth[n]<i&&(e=n,i=t.rowWidth[n]);return e},T.prototype.getLongestRowIndex=function(t){for(var e=-1,i=Number.MIN_VALUE,n=0;n<t.rows.length;n++)t.rowWidth[n]>i&&(e=n,i=t.rowWidth[n]);return e},T.prototype.canAddHorizontal=function(t,e,i){if(t.idealRowWidth){var n=t.rows.length-1;return t.rowWidth[n]+e+t.horizontalPadding<=t.idealRowWidth}var r=this.getShortestRowIndex(t);if(r<0)return!0;var o=t.rowWidth[r];if(o+t.horizontalPadding+e<=t.width)return!0;var s,a,h=0;return t.rowHeight[r]<i&&r>0&&(h=i+t.verticalPadding-t.rowHeight[r]),s=t.width-o>=e+t.horizontalPadding?(t.height+h)/(o+e+t.horizontalPadding):(t.height+h)/t.width,h=i+t.verticalPadding,(a=t.width<e?(t.height+h)/e:(t.height+h)/t.width)<1&&(a=1/a),s<1&&(s=1/s),s<a},T.prototype.shiftToLastRow=function(t){var e=this.getLongestRowIndex(t),i=t.rowWidth.length-1,n=t.rows[e],r=n[n.length-1],o=r.width+t.horizontalPadding;if(t.width-t.rowWidth[i]>o&&e!=i){n.splice(-1,1),t.rows[i].push(r),t.rowWidth[e]=t.rowWidth[e]-o,t.rowWidth[i]=t.rowWidth[i]+o,t.width=t.rowWidth[instance.getLongestRowIndex(t)];for(var s=Number.MIN_VALUE,a=0;a<n.length;a++)n[a].height>s&&(s=n[a].height);e>0&&(s+=t.verticalPadding);var h=t.rowHeight[e]+t.rowHeight[i];t.rowHeight[e]=s,t.rowHeight[i]<r.height+t.verticalPadding&&(t.rowHeight[i]=r.height+t.verticalPadding);var l=t.rowHeight[e]+t.rowHeight[i];t.height+=l-h,this.shiftToLastRow(t)}},T.prototype.tilingPreLayout=function(){h.TILE&&(this.groupZeroDegreeMembers(),this.clearCompounds(),this.clearZeroDegreeMembers())},T.prototype.tilingPostLayout=function(){h.TILE&&(this.repopulateZeroDegreeMembers(),this.repopulateCompounds())},T.prototype.reduceTrees=function(){for(var t,e=[],i=!0;i;){var n=this.graphManager.getAllNodes(),r=[];i=!1;for(var o=0;o<n.length;o++)if(1==(t=n[o]).getEdges().length&&!t.getEdges()[0].isInterGraph&&null==t.getChild()){if(h.PURE_INCREMENTAL){var s=t.getEdges()[0].getOtherEnd(t),a=new f(t.getCenterX()-s.getCenterX(),t.getCenterY()-s.getCenterY());r.push([t,t.getEdges()[0],t.getOwner(),a])}else r.push([t,t.getEdges()[0],t.getOwner()]);i=!0}if(1==i){for(var l=[],d=0;d<r.length;d++)1==r[d][0].getEdges().length&&(l.push(r[d]),r[d][0].getOwner().remove(r[d][0]));e.push(l),this.graphManager.resetAllNodes(),this.graphManager.resetAllEdges()}}this.prunedNodesAll=e},T.prototype.growTree=function(t){for(var e,i=t[t.length-1],n=0;n<i.length;n++)e=i[n],this.findPlaceforPrunedNode(e),e[2].add(e[0]),e[2].add(e[1],e[1].source,e[1].target);t.splice(t.length-1,1),this.graphManager.resetAllNodes(),this.graphManager.resetAllEdges()},T.prototype.findPlaceforPrunedNode=function(t){var e,i,n=t[0];if(i=n==t[1].source?t[1].target:t[1].source,h.PURE_INCREMENTAL)n.setCenter(i.getCenterX()+t[3].getWidth(),i.getCenterY()+t[3].getHeight());else{var r=i.startX,o=i.finishX,s=i.startY,a=i.finishY,l=[0,0,0,0];if(s>0)for(var c=r;c<=o;c++)l[0]+=this.grid[c][s-1].length+this.grid[c][s].length-1;if(o<this.grid.length-1)for(c=s;c<=a;c++)l[1]+=this.grid[o+1][c].length+this.grid[o][c].length-1;if(a<this.grid[0].length-1)for(c=r;c<=o;c++)l[2]+=this.grid[c][a+1].length+this.grid[c][a].length-1;if(r>0)for(c=s;c<=a;c++)l[3]+=this.grid[r-1][c].length+this.grid[r][c].length-1;for(var g,u,f=y.MAX_VALUE,p=0;p<l.length;p++)l[p]<f?(f=l[p],g=1,u=p):l[p]==f&&g++;if(3==g&&0==f)0==l[0]&&0==l[1]&&0==l[2]?e=1:0==l[0]&&0==l[1]&&0==l[3]?e=0:0==l[0]&&0==l[2]&&0==l[3]?e=3:0==l[1]&&0==l[2]&&0==l[3]&&(e=2);else if(2==g&&0==f){var m=Math.floor(2*Math.random());e=0==l[0]&&0==l[1]?0==m?0:1:0==l[0]&&0==l[2]?0==m?0:2:0==l[0]&&0==l[3]?0==m?0:3:0==l[1]&&0==l[2]?0==m?1:2:0==l[1]&&0==l[3]?0==m?1:3:0==m?2:3}else e=4==g&&0==f?m=Math.floor(4*Math.random()):u;0==e?n.setCenter(i.getCenterX(),i.getCenterY()-i.getHeight()/2-d.DEFAULT_EDGE_LENGTH-n.getHeight()/2):1==e?n.setCenter(i.getCenterX()+i.getWidth()/2+d.DEFAULT_EDGE_LENGTH+n.getWidth()/2,i.getCenterY()):2==e?n.setCenter(i.getCenterX(),i.getCenterY()+i.getHeight()/2+d.DEFAULT_EDGE_LENGTH+n.getHeight()/2):n.setCenter(i.getCenterX()-i.getWidth()/2-d.DEFAULT_EDGE_LENGTH-n.getWidth()/2,i.getCenterY())}},t.exports=T},991:(t,e,i)=>{var n=i(551).FDLayoutNode,r=i(551).IMath;function o(t,e,i,r){n.call(this,t,e,i,r)}for(var s in o.prototype=Object.create(n.prototype),n)o[s]=n[s];o.prototype.calculateDisplacement=function(){var t=this.graphManager.getLayout();null!=this.getChild()&&this.fixedNodeWeight?(this.displacementX+=t.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.fixedNodeWeight,this.displacementY+=t.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.fixedNodeWeight):(this.displacementX+=t.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY+=t.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren),Math.abs(this.displacementX)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementX=t.coolingFactor*t.maxNodeDisplacement*r.sign(this.displacementX)),Math.abs(this.displacementY)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementY=t.coolingFactor*t.maxNodeDisplacement*r.sign(this.displacementY)),this.child&&this.child.getNodes().length>0&&this.propogateDisplacementToChildren(this.displacementX,this.displacementY)},o.prototype.propogateDisplacementToChildren=function(t,e){for(var i,n=this.getChild().getNodes(),r=0;r<n.length;r++)null==(i=n[r]).getChild()?(i.displacementX+=t,i.displacementY+=e):i.propogateDisplacementToChildren(t,e)},o.prototype.move=function(){var t=this.graphManager.getLayout();null!=this.child&&0!=this.child.getNodes().length||(this.moveBy(this.displacementX,this.displacementY),t.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY)),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},o.prototype.setPred1=function(t){this.pred1=t},o.prototype.getPred1=function(){return pred1},o.prototype.getPred2=function(){return pred2},o.prototype.setNext=function(t){this.next=t},o.prototype.getNext=function(){return next},o.prototype.setProcessed=function(t){this.processed=t},o.prototype.isProcessed=function(){return processed},t.exports=o},902:(t,e,i)=>{function n(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);e<t.length;e++)i[e]=t[e];return i}return Array.from(t)}var r=i(806),o=i(551).LinkedList,s=i(551).Matrix,a=i(551).SVD;function h(){}h.handleConstraints=function(t){var e={};e.fixedNodeConstraint=t.constraints.fixedNodeConstraint,e.alignmentConstraint=t.constraints.alignmentConstraint,e.relativePlacementConstraint=t.constraints.relativePlacementConstraint;for(var i=new Map,h=new Map,l=[],d=[],c=t.getAllNodes(),g=0,u=0;u<c.length;u++){var f=c[u];null==f.getChild()&&(h.set(f.id,g++),l.push(f.getCenterX()),d.push(f.getCenterY()),i.set(f.id,f))}e.relativePlacementConstraint&&e.relativePlacementConstraint.forEach(function(t){t.gap||0==t.gap||(t.left?t.gap=r.DEFAULT_EDGE_LENGTH+i.get(t.left).getWidth()/2+i.get(t.right).getWidth()/2:t.gap=r.DEFAULT_EDGE_LENGTH+i.get(t.top).getHeight()/2+i.get(t.bottom).getHeight()/2)});var p=function(t){var e=0,i=0;return t.forEach(function(t){e+=l[h.get(t)],i+=d[h.get(t)]}),{x:e/t.size,y:i/t.size}},y=function(t,e,i,r,s){var a=new Map;t.forEach(function(t,e){a.set(e,0)}),t.forEach(function(t,e){t.forEach(function(t){a.set(t.id,a.get(t.id)+1)})});var c=new Map,g=new Map,u=new o;a.forEach(function(t,n){0==t?(u.push(n),i||("horizontal"==e?c.set(n,h.has(n)?l[h.get(n)]:r.get(n)):c.set(n,h.has(n)?d[h.get(n)]:r.get(n)))):c.set(n,Number.NEGATIVE_INFINITY),i&&g.set(n,new Set([n]))}),i&&s.forEach(function(t){var n=[];if(t.forEach(function(t){i.has(t)&&n.push(t)}),n.length>0){var o=0;n.forEach(function(t){"horizontal"==e?(c.set(t,h.has(t)?l[h.get(t)]:r.get(t)),o+=c.get(t)):(c.set(t,h.has(t)?d[h.get(t)]:r.get(t)),o+=c.get(t))}),o/=n.length,t.forEach(function(t){i.has(t)||c.set(t,o)})}else{var s=0;t.forEach(function(t){s+="horizontal"==e?h.has(t)?l[h.get(t)]:r.get(t):h.has(t)?d[h.get(t)]:r.get(t)}),s/=t.length,t.forEach(function(t){c.set(t,s)})}});for(var f=function(){var n=u.shift();t.get(n).forEach(function(t){if(c.get(t.id)<c.get(n)+t.gap)if(i&&i.has(t.id)){var o=void 0;if(o="horizontal"==e?h.has(t.id)?l[h.get(t.id)]:r.get(t.id):h.has(t.id)?d[h.get(t.id)]:r.get(t.id),c.set(t.id,o),o<c.get(n)+t.gap){var s=c.get(n)+t.gap-o;g.get(n).forEach(function(t){c.set(t,c.get(t)-s)})}}else c.set(t.id,c.get(n)+t.gap);a.set(t.id,a.get(t.id)-1),0==a.get(t.id)&&u.push(t.id),i&&g.set(t.id,function(t,e){var i=new Set(t),n=!0,r=!1,o=void 0;try{for(var s,a=e[Symbol.iterator]();!(n=(s=a.next()).done);n=!0){var h=s.value;i.add(h)}}catch(l){r=!0,o=l}finally{try{!n&&a.return&&a.return()}finally{if(r)throw o}}return i}(g.get(n),g.get(t.id)))})};0!=u.length;)f();if(i){var p=new Set;t.forEach(function(t,e){0==t.length&&p.add(e)});var y=[];g.forEach(function(t,e){if(p.has(e)){var r=!1,o=!0,s=!1,a=void 0;try{for(var h,l=t[Symbol.iterator]();!(o=(h=l.next()).done);o=!0){var d=h.value;i.has(d)&&(r=!0)}}catch(u){s=!0,a=u}finally{try{!o&&l.return&&l.return()}finally{if(s)throw a}}if(!r){var c=!1,g=void 0;y.forEach(function(e,i){e.has([].concat(n(t))[0])&&(c=!0,g=i)}),c?t.forEach(function(t){y[g].add(t)}):y.push(new Set(t))}}}),y.forEach(function(t,i){var n=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY,s=Number.NEGATIVE_INFINITY,a=Number.NEGATIVE_INFINITY,g=!0,u=!1,f=void 0;try{for(var p,y=t[Symbol.iterator]();!(g=(p=y.next()).done);g=!0){var m=p.value,v=void 0;v="horizontal"==e?h.has(m)?l[h.get(m)]:r.get(m):h.has(m)?d[h.get(m)]:r.get(m);var E=c.get(m);v<n&&(n=v),v>s&&(s=v),E<o&&(o=E),E>a&&(a=E)}}catch(_){u=!0,f=_}finally{try{!g&&y.return&&y.return()}finally{if(u)throw f}}var N=(n+s)/2-(o+a)/2,T=!0,A=!1,w=void 0;try{for(var I,C=t[Symbol.iterator]();!(T=(I=C.next()).done);T=!0){var L=I.value;c.set(L,c.get(L)+N)}}catch(_){A=!0,w=_}finally{try{!T&&C.return&&C.return()}finally{if(A)throw w}}})}return c},m=function(t){var e=0,i=0,n=0,r=0;if(t.forEach(function(t){t.left?l[h.get(t.left)]-l[h.get(t.right)]>=0?e++:i++:d[h.get(t.top)]-d[h.get(t.bottom)]>=0?n++:r++}),e>i&&n>r)for(var o=0;o<h.size;o++)l[o]=-1*l[o],d[o]=-1*d[o];else if(e>i)for(var s=0;s<h.size;s++)l[s]=-1*l[s];else if(n>r)for(var a=0;a<h.size;a++)d[a]=-1*d[a]},v=function(t){var e=[],i=new o,n=new Set,r=0;return t.forEach(function(o,s){if(!n.has(s)){e[r]=[];var a=s;for(i.push(a),n.add(a),e[r].push(a);0!=i.length;)a=i.shift(),t.get(a).forEach(function(t){n.has(t.id)||(i.push(t.id),n.add(t.id),e[r].push(t.id))});r++}}),e},E=function(t){var e=new Map;return t.forEach(function(t,i){e.set(i,[])}),t.forEach(function(t,i){t.forEach(function(t){e.get(i).push(t),e.get(t.id).push({id:i,gap:t.gap,direction:t.direction})})}),e},N=function(t){var e=new Map;return t.forEach(function(t,i){e.set(i,[])}),t.forEach(function(t,i){t.forEach(function(t){e.get(t.id).push({id:i,gap:t.gap,direction:t.direction})})}),e},T=[],A=[],w=!1,I=!1,C=new Set,L=new Map,_=new Map,M=[];if(e.fixedNodeConstraint&&e.fixedNodeConstraint.forEach(function(t){C.add(t.nodeId)}),e.relativePlacementConstraint&&(e.relativePlacementConstraint.forEach(function(t){t.left?(L.has(t.left)?L.get(t.left).push({id:t.right,gap:t.gap,direction:"horizontal"}):L.set(t.left,[{id:t.right,gap:t.gap,direction:"horizontal"}]),L.has(t.right)||L.set(t.right,[])):(L.has(t.top)?L.get(t.top).push({id:t.bottom,gap:t.gap,direction:"vertical"}):L.set(t.top,[{id:t.bottom,gap:t.gap,direction:"vertical"}]),L.has(t.bottom)||L.set(t.bottom,[]))}),_=E(L),M=v(_)),r.TRANSFORM_ON_CONSTRAINT_HANDLING){if(e.fixedNodeConstraint&&e.fixedNodeConstraint.length>1)e.fixedNodeConstraint.forEach(function(t,e){T[e]=[t.position.x,t.position.y],A[e]=[l[h.get(t.nodeId)],d[h.get(t.nodeId)]]}),w=!0;else if(e.alignmentConstraint)!function(){var t=0;if(e.alignmentConstraint.vertical){for(var i=e.alignmentConstraint.vertical,r=function(e){var r=new Set;i[e].forEach(function(t){r.add(t)});var o=new Set([].concat(n(r)).filter(function(t){return C.has(t)})),s=void 0;s=o.size>0?l[h.get(o.values().next().value)]:p(r).x,i[e].forEach(function(e){T[t]=[s,d[h.get(e)]],A[t]=[l[h.get(e)],d[h.get(e)]],t++})},o=0;o<i.length;o++)r(o);w=!0}if(e.alignmentConstraint.horizontal){for(var s=e.alignmentConstraint.horizontal,a=function(e){var i=new Set;s[e].forEach(function(t){i.add(t)});var r=new Set([].concat(n(i)).filter(function(t){return C.has(t)})),o=void 0;o=r.size>0?l[h.get(r.values().next().value)]:p(i).y,s[e].forEach(function(e){T[t]=[l[h.get(e)],o],A[t]=[l[h.get(e)],d[h.get(e)]],t++})},c=0;c<s.length;c++)a(c);w=!0}e.relativePlacementConstraint&&(I=!0)}();else if(e.relativePlacementConstraint){for(var x=0,O=0,D=0;D<M.length;D++)M[D].length>x&&(x=M[D].length,O=D);if(x<_.size/2)m(e.relativePlacementConstraint),w=!1,I=!1;else{var R=new Map,b=new Map,F=[];M[O].forEach(function(t){L.get(t).forEach(function(e){"horizontal"==e.direction?(R.has(t)?R.get(t).push(e):R.set(t,[e]),R.has(e.id)||R.set(e.id,[]),F.push({left:t,right:e.id})):(b.has(t)?b.get(t).push(e):b.set(t,[e]),b.has(e.id)||b.set(e.id,[]),F.push({top:t,bottom:e.id}))})}),m(F),I=!1;var G=y(R,"horizontal"),S=y(b,"vertical");M[O].forEach(function(t,e){A[e]=[l[h.get(t)],d[h.get(t)]],T[e]=[],G.has(t)?T[e][0]=G.get(t):T[e][0]=l[h.get(t)],S.has(t)?T[e][1]=S.get(t):T[e][1]=d[h.get(t)]}),w=!0}}if(w){for(var P,U=s.transpose(T),Y=s.transpose(A),k=0;k<U.length;k++)U[k]=s.multGamma(U[k]),Y[k]=s.multGamma(Y[k]);var H=s.multMat(U,s.transpose(Y)),X=a.svd(H);P=s.multMat(X.V,s.transpose(X.U));for(var z=0;z<h.size;z++){var V=[l[z],d[z]],B=[P[0][0],P[1][0]],W=[P[0][1],P[1][1]];l[z]=s.dotProduct(V,B),d[z]=s.dotProduct(V,W)}I&&m(e.relativePlacementConstraint)}}if(r.ENFORCE_CONSTRAINTS){if(e.fixedNodeConstraint&&e.fixedNodeConstraint.length>0){var j={x:0,y:0};e.fixedNodeConstraint.forEach(function(t,e){var i,n,r={x:l[h.get(t.nodeId)],y:d[h.get(t.nodeId)]},o=t.position,s=(n=r,{x:(i=o).x-n.x,y:i.y-n.y});j.x+=s.x,j.y+=s.y}),j.x/=e.fixedNodeConstraint.length,j.y/=e.fixedNodeConstraint.length,l.forEach(function(t,e){l[e]+=j.x}),d.forEach(function(t,e){d[e]+=j.y}),e.fixedNodeConstraint.forEach(function(t){l[h.get(t.nodeId)]=t.position.x,d[h.get(t.nodeId)]=t.position.y})}if(e.alignmentConstraint){if(e.alignmentConstraint.vertical)for(var $=e.alignmentConstraint.vertical,q=function(t){var e=new Set;$[t].forEach(function(t){e.add(t)});var i=new Set([].concat(n(e)).filter(function(t){return C.has(t)})),r=void 0;r=i.size>0?l[h.get(i.values().next().value)]:p(e).x,e.forEach(function(t){C.has(t)||(l[h.get(t)]=r)})},K=0;K<$.length;K++)q(K);if(e.alignmentConstraint.horizontal)for(var Z=e.alignmentConstraint.horizontal,Q=function(t){var e=new Set;Z[t].forEach(function(t){e.add(t)});var i=new Set([].concat(n(e)).filter(function(t){return C.has(t)})),r=void 0;r=i.size>0?d[h.get(i.values().next().value)]:p(e).y,e.forEach(function(t){C.has(t)||(d[h.get(t)]=r)})},J=0;J<Z.length;J++)Q(J)}e.relativePlacementConstraint&&function(){var t=new Map,i=new Map,n=new Map,r=new Map,o=new Map,s=new Map,a=new Set,c=new Set;if(C.forEach(function(t){a.add(t),c.add(t)}),e.alignmentConstraint){if(e.alignmentConstraint.vertical)for(var g=e.alignmentConstraint.vertical,u=function(e){n.set("dummy"+e,[]),g[e].forEach(function(i){t.set(i,"dummy"+e),n.get("dummy"+e).push(i),C.has(i)&&a.add("dummy"+e)}),o.set("dummy"+e,l[h.get(g[e][0])])},f=0;f<g.length;f++)u(f);if(e.alignmentConstraint.horizontal)for(var p=e.alignmentConstraint.horizontal,m=function(t){r.set("dummy"+t,[]),p[t].forEach(function(e){i.set(e,"dummy"+t),r.get("dummy"+t).push(e),C.has(e)&&c.add("dummy"+t)}),s.set("dummy"+t,d[h.get(p[t][0])])},T=0;T<p.length;T++)m(T)}var A=new Map,w=new Map,I=function(e){L.get(e).forEach(function(n){var r=void 0,o=void 0;"horizontal"==n.direction?(r=t.get(e)?t.get(e):e,o=t.get(n.id)?{id:t.get(n.id),gap:n.gap,direction:n.direction}:n,A.has(r)?A.get(r).push(o):A.set(r,[o]),A.has(o.id)||A.set(o.id,[])):(r=i.get(e)?i.get(e):e,o=i.get(n.id)?{id:i.get(n.id),gap:n.gap,direction:n.direction}:n,w.has(r)?w.get(r).push(o):w.set(r,[o]),w.has(o.id)||w.set(o.id,[]))})},_=!0,M=!1,x=void 0;try{for(var O,D=L.keys()[Symbol.iterator]();!(_=(O=D.next()).done);_=!0)I(O.value)}catch(tt){M=!0,x=tt}finally{try{!_&&D.return&&D.return()}finally{if(M)throw x}}var R=E(A),b=E(w),F=v(R),G=v(b),S=N(A),P=N(w),U=[],Y=[];F.forEach(function(t,e){U[e]=[],t.forEach(function(t){0==S.get(t).length&&U[e].push(t)})}),G.forEach(function(t,e){Y[e]=[],t.forEach(function(t){0==P.get(t).length&&Y[e].push(t)})});var k=y(A,"horizontal",a,o,U),H=y(w,"vertical",c,s,Y),X=function(t){n.get(t)?n.get(t).forEach(function(e){l[h.get(e)]=k.get(t)}):l[h.get(t)]=k.get(t)},z=!0,V=!1,B=void 0;try{for(var W,j=k.keys()[Symbol.iterator]();!(z=(W=j.next()).done);z=!0)X(W.value)}catch(tt){V=!0,B=tt}finally{try{!z&&j.return&&j.return()}finally{if(V)throw B}}var $=function(t){r.get(t)?r.get(t).forEach(function(e){d[h.get(e)]=H.get(t)}):d[h.get(t)]=H.get(t)},q=!0,K=!1,Z=void 0;try{for(var Q,J=H.keys()[Symbol.iterator]();!(q=(Q=J.next()).done);q=!0)$(Q.value)}catch(tt){K=!0,Z=tt}finally{try{!q&&J.return&&J.return()}finally{if(K)throw Z}}}()}for(var tt=0;tt<c.length;tt++){var et=c[tt];null==et.getChild()&&et.setCenter(l[h.get(et.id)],d[h.get(et.id)])}},t.exports=h},551:e=>{e.exports=t}},i={},n=function t(n){var r=i[n];if(void 0!==r)return r.exports;var o=i[n]={exports:{}};return e[n](o,o.exports,t),o.exports}(45);return n})()},t.exports=n(i(4298))},4298(t){var e;e=function(){return function(t){var e={};function i(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=t,i.c=e,i.i=function(t){return t},i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=28)}([function(t,e,i){"use strict";function n(){}n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,t.exports=n},function(t,e,i){"use strict";var n=i(2),r=i(8),o=i(9);function s(t,e,i){n.call(this,i),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=i,this.bendpoints=[],this.source=t,this.target=e}for(var a in s.prototype=Object.create(n.prototype),n)s[a]=n[a];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(t){if(this.source===t)return this.target;if(this.target===t)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(t,e){for(var i=this.getOtherEnd(t),n=e.getGraphManager().getRoot();;){if(i.getOwner()==e)return i;if(i.getOwner()==n)break;i=i.getOwner().getParent()}return null},s.prototype.updateLength=function(){var t=new Array(4);this.isOverlapingSourceAndTarget=r.getIntersection(this.target.getRect(),this.source.getRect(),t),this.isOverlapingSourceAndTarget||(this.lengthX=t[0]-t[2],this.lengthY=t[1]-t[3],Math.abs(this.lengthX)<1&&(this.lengthX=o.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=o.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=o.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=o.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},t.exports=s},function(t,e,i){"use strict";t.exports=function(t){this.vGraphObject=t}},function(t,e,i){"use strict";var n=i(2),r=i(10),o=i(13),s=i(0),a=i(16),h=i(5);function l(t,e,i,s){null==i&&null==s&&(s=e),n.call(this,s),null!=t.graphManager&&(t=t.graphManager),this.estimatedSize=r.MIN_VALUE,this.inclusionTreeDepth=r.MAX_VALUE,this.vGraphObject=s,this.edges=[],this.graphManager=t,this.rect=null!=i&&null!=e?new o(e.x,e.y,i.width,i.height):new o}for(var d in l.prototype=Object.create(n.prototype),n)l[d]=n[d];l.prototype.getEdges=function(){return this.edges},l.prototype.getChild=function(){return this.child},l.prototype.getOwner=function(){return this.owner},l.prototype.getWidth=function(){return this.rect.width},l.prototype.setWidth=function(t){this.rect.width=t},l.prototype.getHeight=function(){return this.rect.height},l.prototype.setHeight=function(t){this.rect.height=t},l.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},l.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},l.prototype.getCenter=function(){return new h(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},l.prototype.getLocation=function(){return new h(this.rect.x,this.rect.y)},l.prototype.getRect=function(){return this.rect},l.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},l.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},l.prototype.setRect=function(t,e){this.rect.x=t.x,this.rect.y=t.y,this.rect.width=e.width,this.rect.height=e.height},l.prototype.setCenter=function(t,e){this.rect.x=t-this.rect.width/2,this.rect.y=e-this.rect.height/2},l.prototype.setLocation=function(t,e){this.rect.x=t,this.rect.y=e},l.prototype.moveBy=function(t,e){this.rect.x+=t,this.rect.y+=e},l.prototype.getEdgeListToNode=function(t){var e=[],i=this;return i.edges.forEach(function(n){if(n.target==t){if(n.source!=i)throw"Incorrect edge source!";e.push(n)}}),e},l.prototype.getEdgesBetween=function(t){var e=[],i=this;return i.edges.forEach(function(n){if(n.source!=i&&n.target!=i)throw"Incorrect edge source and/or target";n.target!=t&&n.source!=t||e.push(n)}),e},l.prototype.getNeighborsList=function(){var t=new Set,e=this;return e.edges.forEach(function(i){if(i.source==e)t.add(i.target);else{if(i.target!=e)throw"Incorrect incidency!";t.add(i.source)}}),t},l.prototype.withChildren=function(){var t=new Set;if(t.add(this),null!=this.child)for(var e=this.child.getNodes(),i=0;i<e.length;i++)e[i].withChildren().forEach(function(e){t.add(e)});return t},l.prototype.getNoOfChildren=function(){var t=0;if(null==this.child)t=1;else for(var e=this.child.getNodes(),i=0;i<e.length;i++)t+=e[i].getNoOfChildren();return 0==t&&(t=1),t},l.prototype.getEstimatedSize=function(){if(this.estimatedSize==r.MIN_VALUE)throw"assert failed";return this.estimatedSize},l.prototype.calcEstimatedSize=function(){return null==this.child?this.estimatedSize=(this.rect.width+this.rect.height)/2:(this.estimatedSize=this.child.calcEstimatedSize(),this.rect.width=this.estimatedSize,this.rect.height=this.estimatedSize,this.estimatedSize)},l.prototype.scatter=function(){var t,e,i=-s.INITIAL_WORLD_BOUNDARY,n=s.INITIAL_WORLD_BOUNDARY;t=s.WORLD_CENTER_X+a.nextDouble()*(n-i)+i;var r=-s.INITIAL_WORLD_BOUNDARY,o=s.INITIAL_WORLD_BOUNDARY;e=s.WORLD_CENTER_Y+a.nextDouble()*(o-r)+r,this.rect.x=t,this.rect.y=e},l.prototype.updateBounds=function(){if(null==this.getChild())throw"assert failed";if(0!=this.getChild().getNodes().length){var t=this.getChild();if(t.updateBounds(!0),this.rect.x=t.getLeft(),this.rect.y=t.getTop(),this.setWidth(t.getRight()-t.getLeft()),this.setHeight(t.getBottom()-t.getTop()),s.NODE_DIMENSIONS_INCLUDE_LABELS){var e=t.getRight()-t.getLeft(),i=t.getBottom()-t.getTop();this.labelWidth&&("left"==this.labelPosHorizontal?(this.rect.x-=this.labelWidth,this.setWidth(e+this.labelWidth)):"center"==this.labelPosHorizontal&&this.labelWidth>e?(this.rect.x-=(this.labelWidth-e)/2,this.setWidth(this.labelWidth)):"right"==this.labelPosHorizontal&&this.setWidth(e+this.labelWidth)),this.labelHeight&&("top"==this.labelPosVertical?(this.rect.y-=this.labelHeight,this.setHeight(i+this.labelHeight)):"center"==this.labelPosVertical&&this.labelHeight>i?(this.rect.y-=(this.labelHeight-i)/2,this.setHeight(this.labelHeight)):"bottom"==this.labelPosVertical&&this.setHeight(i+this.labelHeight))}}},l.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==r.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},l.prototype.transform=function(t){var e=this.rect.x;e>s.WORLD_BOUNDARY?e=s.WORLD_BOUNDARY:e<-s.WORLD_BOUNDARY&&(e=-s.WORLD_BOUNDARY);var i=this.rect.y;i>s.WORLD_BOUNDARY?i=s.WORLD_BOUNDARY:i<-s.WORLD_BOUNDARY&&(i=-s.WORLD_BOUNDARY);var n=new h(e,i),r=t.inverseTransformPoint(n);this.setLocation(r.x,r.y)},l.prototype.getLeft=function(){return this.rect.x},l.prototype.getRight=function(){return this.rect.x+this.rect.width},l.prototype.getTop=function(){return this.rect.y},l.prototype.getBottom=function(){return this.rect.y+this.rect.height},l.prototype.getParent=function(){return null==this.owner?null:this.owner.getParent()},t.exports=l},function(t,e,i){"use strict";var n=i(0);function r(){}for(var o in n)r[o]=n[o];r.MAX_ITERATIONS=2500,r.DEFAULT_EDGE_LENGTH=50,r.DEFAULT_SPRING_STRENGTH=.45,r.DEFAULT_REPULSION_STRENGTH=4500,r.DEFAULT_GRAVITY_STRENGTH=.4,r.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,r.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,r.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,r.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,r.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,r.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,r.COOLING_ADAPTATION_FACTOR=.33,r.ADAPTATION_LOWER_NODE_LIMIT=1e3,r.ADAPTATION_UPPER_NODE_LIMIT=5e3,r.MAX_NODE_DISPLACEMENT_INCREMENTAL=100,r.MAX_NODE_DISPLACEMENT=3*r.MAX_NODE_DISPLACEMENT_INCREMENTAL,r.MIN_REPULSION_DIST=r.DEFAULT_EDGE_LENGTH/10,r.CONVERGENCE_CHECK_PERIOD=100,r.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,r.MIN_EDGE_LENGTH=1,r.GRID_CALCULATION_CHECK_PERIOD=10,t.exports=r},function(t,e,i){"use strict";function n(t,e){null==t&&null==e?(this.x=0,this.y=0):(this.x=t,this.y=e)}n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(t){this.x=t},n.prototype.setY=function(t){this.y=t},n.prototype.getDifference=function(t){return new DimensionD(this.x-t.x,this.y-t.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(t){return this.x+=t.width,this.y+=t.height,this},t.exports=n},function(t,e,i){"use strict";var n=i(2),r=i(10),o=i(0),s=i(7),a=i(3),h=i(1),l=i(13),d=i(12),c=i(11);function g(t,e,i){n.call(this,i),this.estimatedSize=r.MIN_VALUE,this.margin=o.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=t,null!=e&&e instanceof s?this.graphManager=e:null!=e&&e instanceof Layout&&(this.graphManager=e.graphManager)}for(var u in g.prototype=Object.create(n.prototype),n)g[u]=n[u];g.prototype.getNodes=function(){return this.nodes},g.prototype.getEdges=function(){return this.edges},g.prototype.getGraphManager=function(){return this.graphManager},g.prototype.getParent=function(){return this.parent},g.prototype.getLeft=function(){return this.left},g.prototype.getRight=function(){return this.right},g.prototype.getTop=function(){return this.top},g.prototype.getBottom=function(){return this.bottom},g.prototype.isConnected=function(){return this.isConnected},g.prototype.add=function(t,e,i){if(null==e&&null==i){var n=t;if(null==this.graphManager)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(n)>-1)throw"Node already in graph!";return n.owner=this,this.getNodes().push(n),n}var r=t;if(!(this.getNodes().indexOf(e)>-1&&this.getNodes().indexOf(i)>-1))throw"Source or target not in graph!";if(e.owner!=i.owner||e.owner!=this)throw"Both owners must be this graph!";return e.owner!=i.owner?null:(r.source=e,r.target=i,r.isInterGraph=!1,this.getEdges().push(r),e.edges.push(r),i!=e&&i.edges.push(r),r)},g.prototype.remove=function(t){var e=t;if(t instanceof a){if(null==e)throw"Node is null!";if(null==e.owner||e.owner!=this)throw"Owner graph is invalid!";if(null==this.graphManager)throw"Owner graph manager is invalid!";for(var i=e.edges.slice(),n=i.length,r=0;r<n;r++)(o=i[r]).isInterGraph?this.graphManager.remove(o):o.source.owner.remove(o);if(-1==(s=this.nodes.indexOf(e)))throw"Node not in owner node list!";this.nodes.splice(s,1)}else if(t instanceof h){var o;if(null==(o=t))throw"Edge is null!";if(null==o.source||null==o.target)throw"Source and/or target is null!";if(null==o.source.owner||null==o.target.owner||o.source.owner!=this||o.target.owner!=this)throw"Source and/or target owner is invalid!";var s,l=o.source.edges.indexOf(o),d=o.target.edges.indexOf(o);if(!(l>-1&&d>-1))throw"Source and/or target doesn't know this edge!";if(o.source.edges.splice(l,1),o.target!=o.source&&o.target.edges.splice(d,1),-1==(s=o.source.owner.getEdges().indexOf(o)))throw"Not in owner's edge list!";o.source.owner.getEdges().splice(s,1)}},g.prototype.updateLeftTop=function(){for(var t,e,i,n=r.MAX_VALUE,o=r.MAX_VALUE,s=this.getNodes(),a=s.length,h=0;h<a;h++){var l=s[h];n>(t=l.getTop())&&(n=t),o>(e=l.getLeft())&&(o=e)}return n==r.MAX_VALUE?null:(i=null!=s[0].getParent().paddingLeft?s[0].getParent().paddingLeft:this.margin,this.left=o-i,this.top=n-i,new d(this.left,this.top))},g.prototype.updateBounds=function(t){for(var e,i,n,o,s,a=r.MAX_VALUE,h=-r.MAX_VALUE,d=r.MAX_VALUE,c=-r.MAX_VALUE,g=this.nodes,u=g.length,f=0;f<u;f++){var p=g[f];t&&null!=p.child&&p.updateBounds(),a>(e=p.getLeft())&&(a=e),h<(i=p.getRight())&&(h=i),d>(n=p.getTop())&&(d=n),c<(o=p.getBottom())&&(c=o)}var y=new l(a,d,h-a,c-d);a==r.MAX_VALUE&&(this.left=this.parent.getLeft(),this.right=this.parent.getRight(),this.top=this.parent.getTop(),this.bottom=this.parent.getBottom()),s=null!=g[0].getParent().paddingLeft?g[0].getParent().paddingLeft:this.margin,this.left=y.x-s,this.right=y.x+y.width+s,this.top=y.y-s,this.bottom=y.y+y.height+s},g.calculateBounds=function(t){for(var e,i,n,o,s=r.MAX_VALUE,a=-r.MAX_VALUE,h=r.MAX_VALUE,d=-r.MAX_VALUE,c=t.length,g=0;g<c;g++){var u=t[g];s>(e=u.getLeft())&&(s=e),a<(i=u.getRight())&&(a=i),h>(n=u.getTop())&&(h=n),d<(o=u.getBottom())&&(d=o)}return new l(s,h,a-s,d-h)},g.prototype.getInclusionTreeDepth=function(){return this==this.graphManager.getRoot()?1:this.parent.getInclusionTreeDepth()},g.prototype.getEstimatedSize=function(){if(this.estimatedSize==r.MIN_VALUE)throw"assert failed";return this.estimatedSize},g.prototype.calcEstimatedSize=function(){for(var t=0,e=this.nodes,i=e.length,n=0;n<i;n++)t+=e[n].calcEstimatedSize();return this.estimatedSize=0==t?o.EMPTY_COMPOUND_NODE_SIZE:t/Math.sqrt(this.nodes.length),this.estimatedSize},g.prototype.updateConnected=function(){var t=this;if(0!=this.nodes.length){var e,i,n=new c,r=new Set,o=this.nodes[0];for(o.withChildren().forEach(function(t){n.push(t),r.add(t)});0!==n.length;)for(var s=(e=(o=n.shift()).getEdges()).length,a=0;a<s;a++)null==(i=e[a].getOtherEndInGraph(o,this))||r.has(i)||i.withChildren().forEach(function(t){n.push(t),r.add(t)});if(this.isConnected=!1,r.size>=this.nodes.length){var h=0;r.forEach(function(e){e.owner==t&&h++}),h==this.nodes.length&&(this.isConnected=!0)}}else this.isConnected=!0},t.exports=g},function(t,e,i){"use strict";var n,r=i(1);function o(t){n=i(6),this.layout=t,this.graphs=[],this.edges=[]}o.prototype.addRoot=function(){var t=this.layout.newGraph(),e=this.layout.newNode(null),i=this.add(t,e);return this.setRootGraph(i),this.rootGraph},o.prototype.add=function(t,e,i,n,r){if(null==i&&null==n&&null==r){if(null==t)throw"Graph is null!";if(null==e)throw"Parent node is null!";if(this.graphs.indexOf(t)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(t),null!=t.parent)throw"Already has a parent!";if(null!=e.child)throw"Already has a child!";return t.parent=e,e.child=t,t}r=i,i=t;var o=(n=e).getOwner(),s=r.getOwner();if(null==o||o.getGraphManager()!=this)throw"Source not in this graph mgr!";if(null==s||s.getGraphManager()!=this)throw"Target not in this graph mgr!";if(o==s)return i.isInterGraph=!1,o.add(i,n,r);if(i.isInterGraph=!0,i.source=n,i.target=r,this.edges.indexOf(i)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(i),null==i.source||null==i.target)throw"Edge source and/or target is null!";if(-1!=i.source.edges.indexOf(i)||-1!=i.target.edges.indexOf(i))throw"Edge already in source and/or target incidency list!";return i.source.edges.push(i),i.target.edges.push(i),i},o.prototype.remove=function(t){if(t instanceof n){var e=t;if(e.getGraphManager()!=this)throw"Graph not in this graph mgr";if(e!=this.rootGraph&&(null==e.parent||e.parent.graphManager!=this))throw"Invalid parent node!";for(var i,o=[],s=(o=o.concat(e.getEdges())).length,a=0;a<s;a++)i=o[a],e.remove(i);var h,l=[];for(s=(l=l.concat(e.getNodes())).length,a=0;a<s;a++)h=l[a],e.remove(h);e==this.rootGraph&&this.setRootGraph(null);var d=this.graphs.indexOf(e);this.graphs.splice(d,1),e.parent=null}else if(t instanceof r){if(null==(i=t))throw"Edge is null!";if(!i.isInterGraph)throw"Not an inter-graph edge!";if(null==i.source||null==i.target)throw"Source and/or target is null!";if(-1==i.source.edges.indexOf(i)||-1==i.target.edges.indexOf(i))throw"Source and/or target doesn't know this edge!";if(d=i.source.edges.indexOf(i),i.source.edges.splice(d,1),d=i.target.edges.indexOf(i),i.target.edges.splice(d,1),null==i.source.owner||null==i.source.owner.getGraphManager())throw"Edge owner graph or owner graph manager is null!";if(-1==i.source.owner.getGraphManager().edges.indexOf(i))throw"Not in owner graph manager's edge list!";d=i.source.owner.getGraphManager().edges.indexOf(i),i.source.owner.getGraphManager().edges.splice(d,1)}},o.prototype.updateBounds=function(){this.rootGraph.updateBounds(!0)},o.prototype.getGraphs=function(){return this.graphs},o.prototype.getAllNodes=function(){if(null==this.allNodes){for(var t=[],e=this.getGraphs(),i=e.length,n=0;n<i;n++)t=t.concat(e[n].getNodes());this.allNodes=t}return this.allNodes},o.prototype.resetAllNodes=function(){this.allNodes=null},o.prototype.resetAllEdges=function(){this.allEdges=null},o.prototype.resetAllNodesToApplyGravitation=function(){this.allNodesToApplyGravitation=null},o.prototype.getAllEdges=function(){if(null==this.allEdges){for(var t=[],e=this.getGraphs(),i=(e.length,0);i<e.length;i++)t=t.concat(e[i].getEdges());t=t.concat(this.edges),this.allEdges=t}return this.allEdges},o.prototype.getAllNodesToApplyGravitation=function(){return this.allNodesToApplyGravitation},o.prototype.setAllNodesToApplyGravitation=function(t){if(null!=this.allNodesToApplyGravitation)throw"assert failed";this.allNodesToApplyGravitation=t},o.prototype.getRoot=function(){return this.rootGraph},o.prototype.setRootGraph=function(t){if(t.getGraphManager()!=this)throw"Root not in this graph mgr!";this.rootGraph=t,null==t.parent&&(t.parent=this.layout.newNode("Root node"))},o.prototype.getLayout=function(){return this.layout},o.prototype.isOneAncestorOfOther=function(t,e){if(null==t||null==e)throw"assert failed";if(t==e)return!0;for(var i,n=t.getOwner();null!=(i=n.getParent());){if(i==e)return!0;if(null==(n=i.getOwner()))break}for(n=e.getOwner();null!=(i=n.getParent());){if(i==t)return!0;if(null==(n=i.getOwner()))break}return!1},o.prototype.calcLowestCommonAncestors=function(){for(var t,e,i,n,r,o=this.getAllEdges(),s=o.length,a=0;a<s;a++)if(e=(t=o[a]).source,i=t.target,t.lca=null,t.sourceInLca=e,t.targetInLca=i,e!=i){for(n=e.getOwner();null==t.lca;){for(t.targetInLca=i,r=i.getOwner();null==t.lca;){if(r==n){t.lca=r;break}if(r==this.rootGraph)break;if(null!=t.lca)throw"assert failed";t.targetInLca=r.getParent(),r=t.targetInLca.getOwner()}if(n==this.rootGraph)break;null==t.lca&&(t.sourceInLca=n.getParent(),n=t.sourceInLca.getOwner())}if(null==t.lca)throw"assert failed"}else t.lca=e.getOwner()},o.prototype.calcLowestCommonAncestor=function(t,e){if(t==e)return t.getOwner();for(var i=t.getOwner();null!=i;){for(var n=e.getOwner();null!=n;){if(n==i)return n;n=n.getParent().getOwner()}i=i.getParent().getOwner()}return i},o.prototype.calcInclusionTreeDepths=function(t,e){var i;null==t&&null==e&&(t=this.rootGraph,e=1);for(var n=t.getNodes(),r=n.length,o=0;o<r;o++)(i=n[o]).inclusionTreeDepth=e,null!=i.child&&this.calcInclusionTreeDepths(i.child,e+1)},o.prototype.includesInvalidEdge=function(){for(var t,e=[],i=this.edges.length,n=0;n<i;n++)t=this.edges[n],this.isOneAncestorOfOther(t.source,t.target)&&e.push(t);for(n=0;n<e.length;n++)this.remove(e[n]);return!1},t.exports=o},function(t,e,i){"use strict";var n=i(12);function r(){}r.calcSeparationAmount=function(t,e,i,n){if(!t.intersects(e))throw"assert failed";var r=new Array(2);this.decideDirectionsForOverlappingNodes(t,e,r),i[0]=Math.min(t.getRight(),e.getRight())-Math.max(t.x,e.x),i[1]=Math.min(t.getBottom(),e.getBottom())-Math.max(t.y,e.y),t.getX()<=e.getX()&&t.getRight()>=e.getRight()?i[0]+=Math.min(e.getX()-t.getX(),t.getRight()-e.getRight()):e.getX()<=t.getX()&&e.getRight()>=t.getRight()&&(i[0]+=Math.min(t.getX()-e.getX(),e.getRight()-t.getRight())),t.getY()<=e.getY()&&t.getBottom()>=e.getBottom()?i[1]+=Math.min(e.getY()-t.getY(),t.getBottom()-e.getBottom()):e.getY()<=t.getY()&&e.getBottom()>=t.getBottom()&&(i[1]+=Math.min(t.getY()-e.getY(),e.getBottom()-t.getBottom()));var o=Math.abs((e.getCenterY()-t.getCenterY())/(e.getCenterX()-t.getCenterX()));e.getCenterY()===t.getCenterY()&&e.getCenterX()===t.getCenterX()&&(o=1);var s=o*i[0],a=i[1]/o;i[0]<a?a=i[0]:s=i[1],i[0]=-1*r[0]*(a/2+n),i[1]=-1*r[1]*(s/2+n)},r.decideDirectionsForOverlappingNodes=function(t,e,i){t.getCenterX()<e.getCenterX()?i[0]=-1:i[0]=1,t.getCenterY()<e.getCenterY()?i[1]=-1:i[1]=1},r.getIntersection2=function(t,e,i){var n=t.getCenterX(),r=t.getCenterY(),o=e.getCenterX(),s=e.getCenterY();if(t.intersects(e))return i[0]=n,i[1]=r,i[2]=o,i[3]=s,!0;var a=t.getX(),h=t.getY(),l=t.getRight(),d=t.getX(),c=t.getBottom(),g=t.getRight(),u=t.getWidthHalf(),f=t.getHeightHalf(),p=e.getX(),y=e.getY(),m=e.getRight(),v=e.getX(),E=e.getBottom(),N=e.getRight(),T=e.getWidthHalf(),A=e.getHeightHalf(),w=!1,I=!1;if(n===o){if(r>s)return i[0]=n,i[1]=h,i[2]=o,i[3]=E,!1;if(r<s)return i[0]=n,i[1]=c,i[2]=o,i[3]=y,!1}else if(r===s){if(n>o)return i[0]=a,i[1]=r,i[2]=m,i[3]=s,!1;if(n<o)return i[0]=l,i[1]=r,i[2]=p,i[3]=s,!1}else{var C=t.height/t.width,L=e.height/e.width,_=(s-r)/(o-n),M=void 0,x=void 0,O=void 0,D=void 0,R=void 0,b=void 0;if(-C===_?n>o?(i[0]=d,i[1]=c,w=!0):(i[0]=l,i[1]=h,w=!0):C===_&&(n>o?(i[0]=a,i[1]=h,w=!0):(i[0]=g,i[1]=c,w=!0)),-L===_?o>n?(i[2]=v,i[3]=E,I=!0):(i[2]=m,i[3]=y,I=!0):L===_&&(o>n?(i[2]=p,i[3]=y,I=!0):(i[2]=N,i[3]=E,I=!0)),w&&I)return!1;if(n>o?r>s?(M=this.getCardinalDirection(C,_,4),x=this.getCardinalDirection(L,_,2)):(M=this.getCardinalDirection(-C,_,3),x=this.getCardinalDirection(-L,_,1)):r>s?(M=this.getCardinalDirection(-C,_,1),x=this.getCardinalDirection(-L,_,3)):(M=this.getCardinalDirection(C,_,2),x=this.getCardinalDirection(L,_,4)),!w)switch(M){case 1:D=h,O=n+-f/_,i[0]=O,i[1]=D;break;case 2:O=g,D=r+u*_,i[0]=O,i[1]=D;break;case 3:D=c,O=n+f/_,i[0]=O,i[1]=D;break;case 4:O=d,D=r+-u*_,i[0]=O,i[1]=D}if(!I)switch(x){case 1:b=y,R=o+-A/_,i[2]=R,i[3]=b;break;case 2:R=N,b=s+T*_,i[2]=R,i[3]=b;break;case 3:b=E,R=o+A/_,i[2]=R,i[3]=b;break;case 4:R=v,b=s+-T*_,i[2]=R,i[3]=b}}return!1},r.getCardinalDirection=function(t,e,i){return t>e?i:1+i%4},r.getIntersection=function(t,e,i,r){if(null==r)return this.getIntersection2(t,e,i);var o,s,a,h,l,d,c,g=t.x,u=t.y,f=e.x,p=e.y,y=i.x,m=i.y,v=r.x,E=r.y;return 0===(c=(o=p-u)*(h=y-v)-(s=E-m)*(a=g-f))?null:new n((a*(d=v*m-y*E)-h*(l=f*u-g*p))/c,(s*l-o*d)/c)},r.angleOfVector=function(t,e,i,n){var r=void 0;return t!==i?(r=Math.atan((n-e)/(i-t)),i<t?r+=Math.PI:n<e&&(r+=this.TWO_PI)):r=n<e?this.ONE_AND_HALF_PI:this.HALF_PI,r},r.doIntersect=function(t,e,i,n){var r=t.x,o=t.y,s=e.x,a=e.y,h=i.x,l=i.y,d=n.x,c=n.y,g=(s-r)*(c-l)-(d-h)*(a-o);if(0===g)return!1;var u=((c-l)*(d-r)+(h-d)*(c-o))/g,f=((o-a)*(d-r)+(s-r)*(c-o))/g;return 0<u&&u<1&&0<f&&f<1},r.findCircleLineIntersections=function(t,e,i,n,r,o,s){var a=(i-t)*(i-t)+(n-e)*(n-e),h=2*((t-r)*(i-t)+(e-o)*(n-e)),l=(t-r)*(t-r)+(e-o)*(e-o)-s*s;if(h*h-4*a*l>=0){var d=(-h+Math.sqrt(h*h-4*a*l))/(2*a),c=(-h-Math.sqrt(h*h-4*a*l))/(2*a);return d>=0&&d<=1?[d]:c>=0&&c<=1?[c]:null}return null},r.HALF_PI=.5*Math.PI,r.ONE_AND_HALF_PI=1.5*Math.PI,r.TWO_PI=2*Math.PI,r.THREE_PI=3*Math.PI,t.exports=r},function(t,e,i){"use strict";function n(){}n.sign=function(t){return t>0?1:t<0?-1:0},n.floor=function(t){return t<0?Math.ceil(t):Math.floor(t)},n.ceil=function(t){return t<0?Math.floor(t):Math.ceil(t)},t.exports=n},function(t,e,i){"use strict";function n(){}n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,t.exports=n},function(t,e,i){"use strict";var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}(),r=function(t){return{value:t,next:null,prev:null}},o=function(t,e,i,n){return null!==t?t.next=e:n.head=e,null!==i?i.prev=e:n.tail=e,e.prev=t,e.next=i,n.length++,e},s=function(t,e){var i=t.prev,n=t.next;return null!==i?i.next=n:e.head=n,null!==n?n.prev=i:e.tail=i,t.prev=t.next=null,e.length--,t},a=function(){function t(e){var i=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.length=0,this.head=null,this.tail=null,null!=e&&e.forEach(function(t){return i.push(t)})}return n(t,[{key:"size",value:function(){return this.length}},{key:"insertBefore",value:function(t,e){return o(e.prev,r(t),e,this)}},{key:"insertAfter",value:function(t,e){return o(e,r(t),e.next,this)}},{key:"insertNodeBefore",value:function(t,e){return o(e.prev,t,e,this)}},{key:"insertNodeAfter",value:function(t,e){return o(e,t,e.next,this)}},{key:"push",value:function(t){return o(this.tail,r(t),null,this)}},{key:"unshift",value:function(t){return o(null,r(t),this.head,this)}},{key:"remove",value:function(t){return s(t,this)}},{key:"pop",value:function(){return s(this.tail,this).value}},{key:"popNode",value:function(){return s(this.tail,this)}},{key:"shift",value:function(){return s(this.head,this).value}},{key:"shiftNode",value:function(){return s(this.head,this)}},{key:"get_object_at",value:function(t){if(t<=this.length()){for(var e=1,i=this.head;e<t;)i=i.next,e++;return i.value}}},{key:"set_object_at",value:function(t,e){if(t<=this.length()){for(var i=1,n=this.head;i<t;)n=n.next,i++;n.value=e}}}]),t}();t.exports=a},function(t,e,i){"use strict";function n(t,e,i){this.x=null,this.y=null,null==t&&null==e&&null==i?(this.x=0,this.y=0):"number"==typeof t&&"number"==typeof e&&null==i?(this.x=t,this.y=e):"Point"==t.constructor.name&&null==e&&null==i&&(i=t,this.x=i.x,this.y=i.y)}n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.getLocation=function(){return new n(this.x,this.y)},n.prototype.setLocation=function(t,e,i){"Point"==t.constructor.name&&null==e&&null==i?(i=t,this.setLocation(i.x,i.y)):"number"==typeof t&&"number"==typeof e&&null==i&&(parseInt(t)==t&&parseInt(e)==e?this.move(t,e):(this.x=Math.floor(t+.5),this.y=Math.floor(e+.5)))},n.prototype.move=function(t,e){this.x=t,this.y=e},n.prototype.translate=function(t,e){this.x+=t,this.y+=e},n.prototype.equals=function(t){if("Point"==t.constructor.name){var e=t;return this.x==e.x&&this.y==e.y}return this==t},n.prototype.toString=function(){return(new n).constructor.name+"[x="+this.x+",y="+this.y+"]"},t.exports=n},function(t,e,i){"use strict";function n(t,e,i,n){this.x=0,this.y=0,this.width=0,this.height=0,null!=t&&null!=e&&null!=i&&null!=n&&(this.x=t,this.y=e,this.width=i,this.height=n)}n.prototype.getX=function(){return this.x},n.prototype.setX=function(t){this.x=t},n.prototype.getY=function(){return this.y},n.prototype.setY=function(t){this.y=t},n.prototype.getWidth=function(){return this.width},n.prototype.setWidth=function(t){this.width=t},n.prototype.getHeight=function(){return this.height},n.prototype.setHeight=function(t){this.height=t},n.prototype.getRight=function(){return this.x+this.width},n.prototype.getBottom=function(){return this.y+this.height},n.prototype.intersects=function(t){return!(this.getRight()<t.x||this.getBottom()<t.y||t.getRight()<this.x||t.getBottom()<this.y)},n.prototype.getCenterX=function(){return this.x+this.width/2},n.prototype.getMinX=function(){return this.getX()},n.prototype.getMaxX=function(){return this.getX()+this.width},n.prototype.getCenterY=function(){return this.y+this.height/2},n.prototype.getMinY=function(){return this.getY()},n.prototype.getMaxY=function(){return this.getY()+this.height},n.prototype.getWidthHalf=function(){return this.width/2},n.prototype.getHeightHalf=function(){return this.height/2},t.exports=n},function(t,e,i){"use strict";var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function r(){}r.lastID=0,r.createID=function(t){return r.isPrimitive(t)?t:(null!=t.uniqueID||(t.uniqueID=r.getString(),r.lastID++),t.uniqueID)},r.getString=function(t){return null==t&&(t=r.lastID),"Object#"+t},r.isPrimitive=function(t){var e=void 0===t?"undefined":n(t);return null==t||"object"!=e&&"function"!=e},t.exports=r},function(t,e,i){"use strict";function n(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);e<t.length;e++)i[e]=t[e];return i}return Array.from(t)}var r=i(0),o=i(7),s=i(3),a=i(1),h=i(6),l=i(5),d=i(17),c=i(29);function g(t){c.call(this),this.layoutQuality=r.QUALITY,this.createBendsAsNeeded=r.DEFAULT_CREATE_BENDS_AS_NEEDED,this.incremental=r.DEFAULT_INCREMENTAL,this.animationOnLayout=r.DEFAULT_ANIMATION_ON_LAYOUT,this.animationDuringLayout=r.DEFAULT_ANIMATION_DURING_LAYOUT,this.animationPeriod=r.DEFAULT_ANIMATION_PERIOD,this.uniformLeafNodeSizes=r.DEFAULT_UNIFORM_LEAF_NODE_SIZES,this.edgeToDummyNodes=new Map,this.graphManager=new o(this),this.isLayoutFinished=!1,this.isSubLayout=!1,this.isRemoteUse=!1,null!=t&&(this.isRemoteUse=t)}g.RANDOM_SEED=1,g.prototype=Object.create(c.prototype),g.prototype.getGraphManager=function(){return this.graphManager},g.prototype.getAllNodes=function(){return this.graphManager.getAllNodes()},g.prototype.getAllEdges=function(){return this.graphManager.getAllEdges()},g.prototype.getAllNodesToApplyGravitation=function(){return this.graphManager.getAllNodesToApplyGravitation()},g.prototype.newGraphManager=function(){var t=new o(this);return this.graphManager=t,t},g.prototype.newGraph=function(t){return new h(null,this.graphManager,t)},g.prototype.newNode=function(t){return new s(this.graphManager,t)},g.prototype.newEdge=function(t){return new a(null,null,t)},g.prototype.checkLayoutSuccess=function(){return null==this.graphManager.getRoot()||0==this.graphManager.getRoot().getNodes().length||this.graphManager.includesInvalidEdge()},g.prototype.runLayout=function(){var t;return this.isLayoutFinished=!1,this.tilingPreLayout&&this.tilingPreLayout(),this.initParameters(),t=!this.checkLayoutSuccess()&&this.layout(),"during"!==r.ANIMATE&&(t&&(this.isSubLayout||this.doPostLayout()),this.tilingPostLayout&&this.tilingPostLayout(),this.isLayoutFinished=!0,t)},g.prototype.doPostLayout=function(){this.incremental||this.transform(),this.update()},g.prototype.update2=function(){if(this.createBendsAsNeeded&&(this.createBendpointsFromDummyNodes(),this.graphManager.resetAllEdges()),!this.isRemoteUse){for(var t=this.graphManager.getAllEdges(),e=0;e<t.length;e++)t[e];var i=this.graphManager.getRoot().getNodes();for(e=0;e<i.length;e++)i[e];this.update(this.graphManager.getRoot())}},g.prototype.update=function(t){if(null==t)this.update2();else if(t instanceof s){var e=t;if(null!=e.getChild())for(var i=e.getChild().getNodes(),n=0;n<i.length;n++)update(i[n]);null!=e.vGraphObject&&e.vGraphObject.update(e)}else if(t instanceof a){var r=t;null!=r.vGraphObject&&r.vGraphObject.update(r)}else if(t instanceof h){var o=t;null!=o.vGraphObject&&o.vGraphObject.update(o)}},g.prototype.initParameters=function(){this.isSubLayout||(this.layoutQuality=r.QUALITY,this.animationDuringLayout=r.DEFAULT_ANIMATION_DURING_LAYOUT,this.animationPeriod=r.DEFAULT_ANIMATION_PERIOD,this.animationOnLayout=r.DEFAULT_ANIMATION_ON_LAYOUT,this.incremental=r.DEFAULT_INCREMENTAL,this.createBendsAsNeeded=r.DEFAULT_CREATE_BENDS_AS_NEEDED,this.uniformLeafNodeSizes=r.DEFAULT_UNIFORM_LEAF_NODE_SIZES),this.animationDuringLayout&&(this.animationOnLayout=!1)},g.prototype.transform=function(t){if(null==t)this.transform(new l(0,0));else{var e=new d,i=this.graphManager.getRoot().updateLeftTop();if(null!=i){e.setWorldOrgX(t.x),e.setWorldOrgY(t.y),e.setDeviceOrgX(i.x),e.setDeviceOrgY(i.y);for(var n=this.getAllNodes(),r=0;r<n.length;r++)n[r].transform(e)}}},g.prototype.positionNodesRandomly=function(t){if(null==t)this.positionNodesRandomly(this.getGraphManager().getRoot()),this.getGraphManager().getRoot().updateBounds(!0);else for(var e,i,n=t.getNodes(),r=0;r<n.length;r++)null==(i=(e=n[r]).getChild())||0==i.getNodes().length?e.scatter():(this.positionNodesRandomly(i),e.updateBounds())},g.prototype.getFlatForest=function(){for(var t=[],e=!0,i=this.graphManager.getRoot().getNodes(),r=!0,o=0;o<i.length;o++)null!=i[o].getChild()&&(r=!1);if(!r)return t;var s=new Set,a=[],h=new Map,l=[];for(l=l.concat(i);l.length>0&&e;){for(a.push(l[0]);a.length>0&&e;){var d=a[0];a.splice(0,1),s.add(d);var c=d.getEdges();for(o=0;o<c.length;o++){var g=c[o].getOtherEnd(d);if(h.get(d)!=g){if(s.has(g)){e=!1;break}a.push(g),h.set(g,d)}}}if(e){var u=[].concat(n(s));for(t.push(u),o=0;o<u.length;o++){var f=u[o],p=l.indexOf(f);p>-1&&l.splice(p,1)}s=new Set,h=new Map}else t=[]}return t},g.prototype.createDummyNodesForBendpoints=function(t){for(var e=[],i=t.source,n=this.graphManager.calcLowestCommonAncestor(t.source,t.target),r=0;r<t.bendpoints.length;r++){var o=this.newNode(null);o.setRect(new Point(0,0),new Dimension(1,1)),n.add(o);var s=this.newEdge(null);this.graphManager.add(s,i,o),e.add(o),i=o}return s=this.newEdge(null),this.graphManager.add(s,i,t.target),this.edgeToDummyNodes.set(t,e),t.isInterGraph()?this.graphManager.remove(t):n.remove(t),e},g.prototype.createBendpointsFromDummyNodes=function(){var t=[];t=t.concat(this.graphManager.getAllEdges()),t=[].concat(n(this.edgeToDummyNodes.keys())).concat(t);for(var e=0;e<t.length;e++){var i=t[e];if(i.bendpoints.length>0){for(var r=this.edgeToDummyNodes.get(i),o=0;o<r.length;o++){var s=r[o],a=new l(s.getCenterX(),s.getCenterY()),h=i.bendpoints.get(o);h.x=a.x,h.y=a.y,s.getOwner().remove(s)}this.graphManager.add(i,i.source,i.target)}}},g.transform=function(t,e,i,n){if(null!=i&&null!=n){var r=e;return t<=50?r-=(e-e/i)/50*(50-t):r+=(e*n-e)/50*(t-50),r}var o,s;return t<=50?(o=9*e/500,s=e/10):(o=9*e/50,s=-8*e),o*t+s},g.findCenterOfTree=function(t){var e=[];e=e.concat(t);var i=[],n=new Map,r=!1,o=null;1!=e.length&&2!=e.length||(r=!0,o=e[0]);for(var s=0;s<e.length;s++){var a=(d=e[s]).getNeighborsList().size;n.set(d,d.getNeighborsList().size),1==a&&i.push(d)}var h=[];for(h=h.concat(i);!r;){var l=[];for(l=l.concat(h),h=[],s=0;s<e.length;s++){var d=e[s],c=e.indexOf(d);c>=0&&e.splice(c,1),d.getNeighborsList().forEach(function(t){if(i.indexOf(t)<0){var e=n.get(t)-1;1==e&&h.push(t),n.set(t,e)}})}i=i.concat(h),1!=e.length&&2!=e.length||(r=!0,o=e[0])}return o},g.prototype.setGraphManager=function(t){this.graphManager=t},t.exports=g},function(t,e,i){"use strict";function n(){}n.seed=1,n.x=0,n.nextDouble=function(){return n.x=1e4*Math.sin(n.seed++),n.x-Math.floor(n.x)},t.exports=n},function(t,e,i){"use strict";var n=i(5);function r(t,e){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}r.prototype.getWorldOrgX=function(){return this.lworldOrgX},r.prototype.setWorldOrgX=function(t){this.lworldOrgX=t},r.prototype.getWorldOrgY=function(){return this.lworldOrgY},r.prototype.setWorldOrgY=function(t){this.lworldOrgY=t},r.prototype.getWorldExtX=function(){return this.lworldExtX},r.prototype.setWorldExtX=function(t){this.lworldExtX=t},r.prototype.getWorldExtY=function(){return this.lworldExtY},r.prototype.setWorldExtY=function(t){this.lworldExtY=t},r.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},r.prototype.setDeviceOrgX=function(t){this.ldeviceOrgX=t},r.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},r.prototype.setDeviceOrgY=function(t){this.ldeviceOrgY=t},r.prototype.getDeviceExtX=function(){return this.ldeviceExtX},r.prototype.setDeviceExtX=function(t){this.ldeviceExtX=t},r.prototype.getDeviceExtY=function(){return this.ldeviceExtY},r.prototype.setDeviceExtY=function(t){this.ldeviceExtY=t},r.prototype.transformX=function(t){var e=0,i=this.lworldExtX;return 0!=i&&(e=this.ldeviceOrgX+(t-this.lworldOrgX)*this.ldeviceExtX/i),e},r.prototype.transformY=function(t){var e=0,i=this.lworldExtY;return 0!=i&&(e=this.ldeviceOrgY+(t-this.lworldOrgY)*this.ldeviceExtY/i),e},r.prototype.inverseTransformX=function(t){var e=0,i=this.ldeviceExtX;return 0!=i&&(e=this.lworldOrgX+(t-this.ldeviceOrgX)*this.lworldExtX/i),e},r.prototype.inverseTransformY=function(t){var e=0,i=this.ldeviceExtY;return 0!=i&&(e=this.lworldOrgY+(t-this.ldeviceOrgY)*this.lworldExtY/i),e},r.prototype.inverseTransformPoint=function(t){return new n(this.inverseTransformX(t.x),this.inverseTransformY(t.y))},t.exports=r},function(t,e,i){"use strict";var n=i(15),r=i(4),o=i(0),s=i(8),a=i(9);function h(){n.call(this),this.useSmartIdealEdgeLengthCalculation=r.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=r.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=r.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=r.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=r.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.displacementThresholdPerNode=3*r.DEFAULT_EDGE_LENGTH/100,this.coolingFactor=r.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.initialCoolingFactor=r.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.totalDisplacement=0,this.oldTotalDisplacement=0,this.maxIterations=r.MAX_ITERATIONS}for(var l in h.prototype=Object.create(n.prototype),n)h[l]=n[l];h.prototype.initParameters=function(){n.prototype.initParameters.call(this,arguments),this.totalIterations=0,this.notAnimatedIterations=0,this.useFRGridVariant=r.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION,this.grid=[]},h.prototype.calcIdealEdgeLengths=function(){for(var t,e,i,n,s,a,h,l=this.getGraphManager().getAllEdges(),d=0;d<l.length;d++)e=(t=l[d]).idealLength,t.isInterGraph&&(n=t.getSource(),s=t.getTarget(),a=t.getSourceInLca().getEstimatedSize(),h=t.getTargetInLca().getEstimatedSize(),this.useSmartIdealEdgeLengthCalculation&&(t.idealLength+=a+h-2*o.SIMPLE_NODE_SIZE),i=t.getLca().getInclusionTreeDepth(),t.idealLength+=e*r.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR*(n.getInclusionTreeDepth()+s.getInclusionTreeDepth()-2*i))},h.prototype.initSpringEmbedder=function(){var t=this.getAllNodes().length;this.incremental?(t>r.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*r.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(t-r.ADAPTATION_LOWER_NODE_LIMIT)/(r.ADAPTATION_UPPER_NODE_LIMIT-r.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-r.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=r.MAX_NODE_DISPLACEMENT_INCREMENTAL):(t>r.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(r.COOLING_ADAPTATION_FACTOR,1-(t-r.ADAPTATION_LOWER_NODE_LIMIT)/(r.ADAPTATION_UPPER_NODE_LIMIT-r.ADAPTATION_LOWER_NODE_LIMIT)*(1-r.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=r.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(5*this.getAllNodes().length,this.maxIterations),this.displacementThresholdPerNode=3*r.DEFAULT_EDGE_LENGTH/100,this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var t,e=this.getAllEdges(),i=0;i<e.length;i++)t=e[i],this.calcSpringForce(t,t.idealLength)},h.prototype.calcRepulsionForces=function(){var t,e,i,n,o,s=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],a=arguments.length>1&&void 0!==arguments[1]&&arguments[1],h=this.getAllNodes();if(this.useFRGridVariant)for(this.totalIterations%r.GRID_CALCULATION_CHECK_PERIOD==1&&s&&this.updateGrid(),o=new Set,t=0;t<h.length;t++)i=h[t],this.calculateRepulsionForceOfANode(i,o,s,a),o.add(i);else for(t=0;t<h.length;t++)for(i=h[t],e=t+1;e<h.length;e++)n=h[e],i.getOwner()==n.getOwner()&&this.calcRepulsionForce(i,n)},h.prototype.calcGravitationalForces=function(){for(var t,e=this.getAllNodesToApplyGravitation(),i=0;i<e.length;i++)t=e[i],this.calcGravitationalForce(t)},h.prototype.moveNodes=function(){for(var t=this.getAllNodes(),e=0;e<t.length;e++)t[e].move()},h.prototype.calcSpringForce=function(t,e){var i,n,r,o,s=t.getSource(),a=t.getTarget();if(this.uniformLeafNodeSizes&&null==s.getChild()&&null==a.getChild())t.updateLengthSimple();else if(t.updateLength(),t.isOverlapingSourceAndTarget)return;0!=(i=t.getLength())&&(r=(n=t.edgeElasticity*(i-e))*(t.lengthX/i),o=n*(t.lengthY/i),s.springForceX+=r,s.springForceY+=o,a.springForceX-=r,a.springForceY-=o)},h.prototype.calcRepulsionForce=function(t,e){var i,n,o,h,l,d,c,g=t.getRect(),u=e.getRect(),f=new Array(2),p=new Array(4);if(g.intersects(u)){s.calcSeparationAmount(g,u,f,r.DEFAULT_EDGE_LENGTH/2),d=2*f[0],c=2*f[1];var y=t.noOfChildren*e.noOfChildren/(t.noOfChildren+e.noOfChildren);t.repulsionForceX-=y*d,t.repulsionForceY-=y*c,e.repulsionForceX+=y*d,e.repulsionForceY+=y*c}else this.uniformLeafNodeSizes&&null==t.getChild()&&null==e.getChild()?(i=u.getCenterX()-g.getCenterX(),n=u.getCenterY()-g.getCenterY()):(s.getIntersection(g,u,p),i=p[2]-p[0],n=p[3]-p[1]),Math.abs(i)<r.MIN_REPULSION_DIST&&(i=a.sign(i)*r.MIN_REPULSION_DIST),Math.abs(n)<r.MIN_REPULSION_DIST&&(n=a.sign(n)*r.MIN_REPULSION_DIST),o=i*i+n*n,h=Math.sqrt(o),d=(l=(t.nodeRepulsion/2+e.nodeRepulsion/2)*t.noOfChildren*e.noOfChildren/o)*i/h,c=l*n/h,t.repulsionForceX-=d,t.repulsionForceY-=c,e.repulsionForceX+=d,e.repulsionForceY+=c},h.prototype.calcGravitationalForce=function(t){var e,i,n,r,o,s,a,h;i=((e=t.getOwner()).getRight()+e.getLeft())/2,n=(e.getTop()+e.getBottom())/2,r=t.getCenterX()-i,o=t.getCenterY()-n,s=Math.abs(r)+t.getWidth()/2,a=Math.abs(o)+t.getHeight()/2,t.getOwner()==this.graphManager.getRoot()?(s>(h=e.getEstimatedSize()*this.gravityRangeFactor)||a>h)&&(t.gravitationForceX=-this.gravityConstant*r,t.gravitationForceY=-this.gravityConstant*o):(s>(h=e.getEstimatedSize()*this.compoundGravityRangeFactor)||a>h)&&(t.gravitationForceX=-this.gravityConstant*r*this.compoundGravityConstant,t.gravitationForceY=-this.gravityConstant*o*this.compoundGravityConstant)},h.prototype.isConverged=function(){var t,e=!1;return this.totalIterations>this.maxIterations/3&&(e=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),t=this.totalDisplacement<this.totalDisplacementThreshold,this.oldTotalDisplacement=this.totalDisplacement,t||e},h.prototype.animate=function(){this.animationDuringLayout&&!this.isSubLayout&&(this.notAnimatedIterations==this.animationPeriod?(this.update(),this.notAnimatedIterations=0):this.notAnimatedIterations++)},h.prototype.calcNoOfChildrenForAllNodes=function(){for(var t,e=this.graphManager.getAllNodes(),i=0;i<e.length;i++)(t=e[i]).noOfChildren=t.getNoOfChildren()},h.prototype.calcGrid=function(t){var e,i;e=parseInt(Math.ceil((t.getRight()-t.getLeft())/this.repulsionRange)),i=parseInt(Math.ceil((t.getBottom()-t.getTop())/this.repulsionRange));for(var n=new Array(e),r=0;r<e;r++)n[r]=new Array(i);for(r=0;r<e;r++)for(var o=0;o<i;o++)n[r][o]=new Array;return n},h.prototype.addNodeToGrid=function(t,e,i){var n,r,o,s;n=parseInt(Math.floor((t.getRect().x-e)/this.repulsionRange)),r=parseInt(Math.floor((t.getRect().width+t.getRect().x-e)/this.repulsionRange)),o=parseInt(Math.floor((t.getRect().y-i)/this.repulsionRange)),s=parseInt(Math.floor((t.getRect().height+t.getRect().y-i)/this.repulsionRange));for(var a=n;a<=r;a++)for(var h=o;h<=s;h++)this.grid[a][h].push(t),t.setGridCoordinates(n,r,o,s)},h.prototype.updateGrid=function(){var t,e,i=this.getAllNodes();for(this.grid=this.calcGrid(this.graphManager.getRoot()),t=0;t<i.length;t++)e=i[t],this.addNodeToGrid(e,this.graphManager.getRoot().getLeft(),this.graphManager.getRoot().getTop())},h.prototype.calculateRepulsionForceOfANode=function(t,e,i,n){if(this.totalIterations%r.GRID_CALCULATION_CHECK_PERIOD==1&&i||n){var o,s=new Set;t.surrounding=new Array;for(var a=this.grid,h=t.startX-1;h<t.finishX+2;h++)for(var l=t.startY-1;l<t.finishY+2;l++)if(!(h<0||l<0||h>=a.length||l>=a[0].length))for(var d=0;d<a[h][l].length;d++)if(o=a[h][l][d],t.getOwner()==o.getOwner()&&t!=o&&!e.has(o)&&!s.has(o)){var c=Math.abs(t.getCenterX()-o.getCenterX())-(t.getWidth()/2+o.getWidth()/2),g=Math.abs(t.getCenterY()-o.getCenterY())-(t.getHeight()/2+o.getHeight()/2);c<=this.repulsionRange&&g<=this.repulsionRange&&s.add(o)}t.surrounding=[].concat(function(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);e<t.length;e++)i[e]=t[e];return i}return Array.from(t)}(s))}for(h=0;h<t.surrounding.length;h++)this.calcRepulsionForce(t,t.surrounding[h])},h.prototype.calcRepulsionRange=function(){return 0},t.exports=h},function(t,e,i){"use strict";var n=i(1),r=i(4);function o(t,e,i){n.call(this,t,e,i),this.idealLength=r.DEFAULT_EDGE_LENGTH,this.edgeElasticity=r.DEFAULT_SPRING_STRENGTH}for(var s in o.prototype=Object.create(n.prototype),n)o[s]=n[s];t.exports=o},function(t,e,i){"use strict";var n=i(3),r=i(4);function o(t,e,i,o){n.call(this,t,e,i,o),this.nodeRepulsion=r.DEFAULT_REPULSION_STRENGTH,this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0,this.startX=0,this.finishX=0,this.startY=0,this.finishY=0,this.surrounding=[]}for(var s in o.prototype=Object.create(n.prototype),n)o[s]=n[s];o.prototype.setGridCoordinates=function(t,e,i,n){this.startX=t,this.finishX=e,this.startY=i,this.finishY=n},t.exports=o},function(t,e,i){"use strict";function n(t,e){this.width=0,this.height=0,null!==t&&null!==e&&(this.height=e,this.width=t)}n.prototype.getWidth=function(){return this.width},n.prototype.setWidth=function(t){this.width=t},n.prototype.getHeight=function(){return this.height},n.prototype.setHeight=function(t){this.height=t},t.exports=n},function(t,e,i){"use strict";var n=i(14);function r(){this.map={},this.keys=[]}r.prototype.put=function(t,e){var i=n.createID(t);this.contains(i)||(this.map[i]=e,this.keys.push(t))},r.prototype.contains=function(t){return n.createID(t),null!=this.map[t]},r.prototype.get=function(t){var e=n.createID(t);return this.map[e]},r.prototype.keySet=function(){return this.keys},t.exports=r},function(t,e,i){"use strict";var n=i(14);function r(){this.set={}}r.prototype.add=function(t){var e=n.createID(t);this.contains(e)||(this.set[e]=t)},r.prototype.remove=function(t){delete this.set[n.createID(t)]},r.prototype.clear=function(){this.set={}},r.prototype.contains=function(t){return this.set[n.createID(t)]==t},r.prototype.isEmpty=function(){return 0===this.size()},r.prototype.size=function(){return Object.keys(this.set).length},r.prototype.addAllTo=function(t){for(var e=Object.keys(this.set),i=e.length,n=0;n<i;n++)t.push(this.set[e[n]])},r.prototype.size=function(){return Object.keys(this.set).length},r.prototype.addAll=function(t){for(var e=t.length,i=0;i<e;i++){var n=t[i];this.add(n)}},t.exports=r},function(t,e,i){"use strict";function n(){}n.multMat=function(t,e){for(var i=[],n=0;n<t.length;n++){i[n]=[];for(var r=0;r<e[0].length;r++){i[n][r]=0;for(var o=0;o<t[0].length;o++)i[n][r]+=t[n][o]*e[o][r]}}return i},n.transpose=function(t){for(var e=[],i=0;i<t[0].length;i++){e[i]=[];for(var n=0;n<t.length;n++)e[i][n]=t[n][i]}return e},n.multCons=function(t,e){for(var i=[],n=0;n<t.length;n++)i[n]=t[n]*e;return i},n.minusOp=function(t,e){for(var i=[],n=0;n<t.length;n++)i[n]=t[n]-e[n];return i},n.dotProduct=function(t,e){for(var i=0,n=0;n<t.length;n++)i+=t[n]*e[n];return i},n.mag=function(t){return Math.sqrt(this.dotProduct(t,t))},n.normalize=function(t){for(var e=[],i=this.mag(t),n=0;n<t.length;n++)e[n]=t[n]/i;return e},n.multGamma=function(t){for(var e=[],i=0,n=0;n<t.length;n++)i+=t[n];i*=-1/t.length;for(var r=0;r<t.length;r++)e[r]=i+t[r];return e},n.multL=function(t,e,i){for(var n=[],r=[],o=[],s=0;s<e[0].length;s++){for(var a=0,h=0;h<e.length;h++)a+=-.5*e[h][s]*t[h];r[s]=a}for(var l=0;l<i.length;l++){for(var d=0,c=0;c<i.length;c++)d+=i[l][c]*r[c];o[l]=d}for(var g=0;g<e.length;g++){for(var u=0,f=0;f<e[0].length;f++)u+=e[g][f]*o[f];n[g]=u}return n},t.exports=n},function(t,e,i){"use strict";var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}(),r=i(11),o=function(){function t(e,i){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),null===i&&void 0===i||(this.compareFunction=this._defaultCompareFunction);var n=void 0;n=e instanceof r?e.size():e.length,this._quicksort(e,0,n-1)}return n(t,[{key:"_quicksort",value:function(t,e,i){if(e<i){var n=this._partition(t,e,i);this._quicksort(t,e,n),this._quicksort(t,n+1,i)}}},{key:"_partition",value:function(t,e,i){for(var n=this._get(t,e),r=e,o=i;;){for(;this.compareFunction(n,this._get(t,o));)o--;for(;this.compareFunction(this._get(t,r),n);)r++;if(!(r<o))return o;this._swap(t,r,o),r++,o--}}},{key:"_get",value:function(t,e){return t instanceof r?t.get_object_at(e):t[e]}},{key:"_set",value:function(t,e,i){t instanceof r?t.set_object_at(e,i):t[e]=i}},{key:"_swap",value:function(t,e,i){var n=this._get(t,e);this._set(t,e,this._get(t,i)),this._set(t,i,n)}},{key:"_defaultCompareFunction",value:function(t,e){return e>t}}]),t}();t.exports=o},function(t,e,i){"use strict";function n(){}n.svd=function(t){this.U=null,this.V=null,this.s=null,this.m=0,this.n=0,this.m=t.length,this.n=t[0].length;var e=Math.min(this.m,this.n);this.s=function(t){for(var e=[];t-- >0;)e.push(0);return e}(Math.min(this.m+1,this.n)),this.U=function t(e){if(0==e.length)return 0;for(var i=[],n=0;n<e[0];n++)i.push(t(e.slice(1)));return i}([this.m,e]),this.V=function(t){return function t(e){if(0==e.length)return 0;for(var i=[],n=0;n<e[0];n++)i.push(t(e.slice(1)));return i}(t)}([this.n,this.n]);for(var i=function(t){for(var e=[];t-- >0;)e.push(0);return e}(this.n),r=function(t){for(var e=[];t-- >0;)e.push(0);return e}(this.m),o=Math.min(this.m-1,this.n),s=Math.max(0,Math.min(this.n-2,this.m)),a=0;a<Math.max(o,s);a++){if(a<o){this.s[a]=0;for(var h=a;h<this.m;h++)this.s[a]=n.hypot(this.s[a],t[h][a]);if(0!==this.s[a]){t[a][a]<0&&(this.s[a]=-this.s[a]);for(var l=a;l<this.m;l++)t[l][a]/=this.s[a];t[a][a]+=1}this.s[a]=-this.s[a]}for(var d=a+1;d<this.n;d++){if(function(t,e){return t&&e}(a<o,0!==this.s[a])){for(var c=0,g=a;g<this.m;g++)c+=t[g][a]*t[g][d];c=-c/t[a][a];for(var u=a;u<this.m;u++)t[u][d]+=c*t[u][a]}i[d]=t[a][d]}if(function(t,e){return e}(0,a<o))for(var f=a;f<this.m;f++)this.U[f][a]=t[f][a];if(a<s){i[a]=0;for(var p=a+1;p<this.n;p++)i[a]=n.hypot(i[a],i[p]);if(0!==i[a]){i[a+1]<0&&(i[a]=-i[a]);for(var y=a+1;y<this.n;y++)i[y]/=i[a];i[a+1]+=1}if(i[a]=-i[a],function(t,e){return t&&e}(a+1<this.m,0!==i[a])){for(var m=a+1;m<this.m;m++)r[m]=0;for(var v=a+1;v<this.n;v++)for(var E=a+1;E<this.m;E++)r[E]+=i[v]*t[E][v];for(var N=a+1;N<this.n;N++)for(var T=-i[N]/i[a+1],A=a+1;A<this.m;A++)t[A][N]+=T*r[A]}for(var w=a+1;w<this.n;w++)this.V[w][a]=i[w]}}var I=Math.min(this.n,this.m+1);o<this.n&&(this.s[o]=t[o][o]),this.m<I&&(this.s[I-1]=0),s+1<I&&(i[s]=t[s][I-1]),i[I-1]=0;for(var C=o;C<e;C++){for(var L=0;L<this.m;L++)this.U[L][C]=0;this.U[C][C]=1}for(var _=o-1;_>=0;_--)if(0!==this.s[_]){for(var M=_+1;M<e;M++){for(var x=0,O=_;O<this.m;O++)x+=this.U[O][_]*this.U[O][M];x=-x/this.U[_][_];for(var D=_;D<this.m;D++)this.U[D][M]+=x*this.U[D][_]}for(var R=_;R<this.m;R++)this.U[R][_]=-this.U[R][_];this.U[_][_]=1+this.U[_][_];for(var b=0;b<_-1;b++)this.U[b][_]=0}else{for(var F=0;F<this.m;F++)this.U[F][_]=0;this.U[_][_]=1}for(var G=this.n-1;G>=0;G--){if(function(t,e){return t&&e}(G<s,0!==i[G]))for(var S=G+1;S<e;S++){for(var P=0,U=G+1;U<this.n;U++)P+=this.V[U][G]*this.V[U][S];P=-P/this.V[G+1][G];for(var Y=G+1;Y<this.n;Y++)this.V[Y][S]+=P*this.V[Y][G]}for(var k=0;k<this.n;k++)this.V[k][G]=0;this.V[G][G]=1}for(var H=I-1,X=Math.pow(2,-52),z=Math.pow(2,-966);I>0;){var V=void 0,B=void 0;for(V=I-2;V>=-1&&-1!==V;V--)if(Math.abs(i[V])<=z+X*(Math.abs(this.s[V])+Math.abs(this.s[V+1]))){i[V]=0;break}if(V===I-2)B=4;else{var W=void 0;for(W=I-1;W>=V&&W!==V;W--){var j=(W!==I?Math.abs(i[W]):0)+(W!==V+1?Math.abs(i[W-1]):0);if(Math.abs(this.s[W])<=z+X*j){this.s[W]=0;break}}W===V?B=3:W===I-1?B=1:(B=2,V=W)}switch(V++,B){case 1:var $=i[I-2];i[I-2]=0;for(var q=I-2;q>=V;q--){var K=n.hypot(this.s[q],$),Z=this.s[q]/K,Q=$/K;this.s[q]=K,q!==V&&($=-Q*i[q-1],i[q-1]=Z*i[q-1]);for(var J=0;J<this.n;J++)K=Z*this.V[J][q]+Q*this.V[J][I-1],this.V[J][I-1]=-Q*this.V[J][q]+Z*this.V[J][I-1],this.V[J][q]=K}break;case 2:var tt=i[V-1];i[V-1]=0;for(var et=V;et<I;et++){var it=n.hypot(this.s[et],tt),nt=this.s[et]/it,rt=tt/it;this.s[et]=it,tt=-rt*i[et],i[et]=nt*i[et];for(var ot=0;ot<this.m;ot++)it=nt*this.U[ot][et]+rt*this.U[ot][V-1],this.U[ot][V-1]=-rt*this.U[ot][et]+nt*this.U[ot][V-1],this.U[ot][et]=it}break;case 3:var st=Math.max(Math.max(Math.max(Math.max(Math.abs(this.s[I-1]),Math.abs(this.s[I-2])),Math.abs(i[I-2])),Math.abs(this.s[V])),Math.abs(i[V])),at=this.s[I-1]/st,ht=this.s[I-2]/st,lt=i[I-2]/st,dt=this.s[V]/st,ct=i[V]/st,gt=((ht+at)*(ht-at)+lt*lt)/2,ut=at*lt*(at*lt),ft=0;(function(t,e){return t||e})(0!==gt,0!==ut)&&(ft=Math.sqrt(gt*gt+ut),gt<0&&(ft=-ft),ft=ut/(gt+ft));for(var pt=(dt+at)*(dt-at)+ft,yt=dt*ct,mt=V;mt<I-1;mt++){var vt=n.hypot(pt,yt),Et=pt/vt,Nt=yt/vt;mt!==V&&(i[mt-1]=vt),pt=Et*this.s[mt]+Nt*i[mt],i[mt]=Et*i[mt]-Nt*this.s[mt],yt=Nt*this.s[mt+1],this.s[mt+1]=Et*this.s[mt+1];for(var Tt=0;Tt<this.n;Tt++)vt=Et*this.V[Tt][mt]+Nt*this.V[Tt][mt+1],this.V[Tt][mt+1]=-Nt*this.V[Tt][mt]+Et*this.V[Tt][mt+1],this.V[Tt][mt]=vt;if(Et=pt/(vt=n.hypot(pt,yt)),Nt=yt/vt,this.s[mt]=vt,pt=Et*i[mt]+Nt*this.s[mt+1],this.s[mt+1]=-Nt*i[mt]+Et*this.s[mt+1],yt=Nt*i[mt+1],i[mt+1]=Et*i[mt+1],mt<this.m-1)for(var At=0;At<this.m;At++)vt=Et*this.U[At][mt]+Nt*this.U[At][mt+1],this.U[At][mt+1]=-Nt*this.U[At][mt]+Et*this.U[At][mt+1],this.U[At][mt]=vt}i[I-2]=pt;break;case 4:if(this.s[V]<=0){this.s[V]=this.s[V]<0?-this.s[V]:0;for(var wt=0;wt<=H;wt++)this.V[wt][V]=-this.V[wt][V]}for(;V<H&&!(this.s[V]>=this.s[V+1]);){var It=this.s[V];if(this.s[V]=this.s[V+1],this.s[V+1]=It,V<this.n-1)for(var Ct=0;Ct<this.n;Ct++)It=this.V[Ct][V+1],this.V[Ct][V+1]=this.V[Ct][V],this.V[Ct][V]=It;if(V<this.m-1)for(var Lt=0;Lt<this.m;Lt++)It=this.U[Lt][V+1],this.U[Lt][V+1]=this.U[Lt][V],this.U[Lt][V]=It;V++}I--}}return{U:this.U,V:this.V,S:this.s}},n.hypot=function(t,e){var i=void 0;return Math.abs(t)>Math.abs(e)?(i=e/t,i=Math.abs(t)*Math.sqrt(1+i*i)):0!=e?(i=t/e,i=Math.abs(e)*Math.sqrt(1+i*i)):i=0,i},t.exports=n},function(t,e,i){"use strict";var n=function(){function t(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),e}}(),r=function(){function t(e,i){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:-1,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:-1;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.sequence1=e,this.sequence2=i,this.match_score=n,this.mismatch_penalty=r,this.gap_penalty=o,this.iMax=e.length+1,this.jMax=i.length+1,this.grid=new Array(this.iMax);for(var s=0;s<this.iMax;s++){this.grid[s]=new Array(this.jMax);for(var a=0;a<this.jMax;a++)this.grid[s][a]=0}this.tracebackGrid=new Array(this.iMax);for(var h=0;h<this.iMax;h++){this.tracebackGrid[h]=new Array(this.jMax);for(var l=0;l<this.jMax;l++)this.tracebackGrid[h][l]=[null,null,null]}this.alignments=[],this.score=-1,this.computeGrids()}return n(t,[{key:"getScore",value:function(){return this.score}},{key:"getAlignments",value:function(){return this.alignments}},{key:"computeGrids",value:function(){for(var t=1;t<this.jMax;t++)this.grid[0][t]=this.grid[0][t-1]+this.gap_penalty,this.tracebackGrid[0][t]=[!1,!1,!0];for(var e=1;e<this.iMax;e++)this.grid[e][0]=this.grid[e-1][0]+this.gap_penalty,this.tracebackGrid[e][0]=[!1,!0,!1];for(var i=1;i<this.iMax;i++)for(var n=1;n<this.jMax;n++){var r=[this.sequence1[i-1]===this.sequence2[n-1]?this.grid[i-1][n-1]+this.match_score:this.grid[i-1][n-1]+this.mismatch_penalty,this.grid[i-1][n]+this.gap_penalty,this.grid[i][n-1]+this.gap_penalty],o=this.arrayAllMaxIndexes(r);this.grid[i][n]=r[o[0]],this.tracebackGrid[i][n]=[o.includes(0),o.includes(1),o.includes(2)]}this.score=this.grid[this.iMax-1][this.jMax-1]}},{key:"alignmentTraceback",value:function(){var t=[];for(t.push({pos:[this.sequence1.length,this.sequence2.length],seq1:"",seq2:""});t[0];){var e=t[0],i=this.tracebackGrid[e.pos[0]][e.pos[1]];i[0]&&t.push({pos:[e.pos[0]-1,e.pos[1]-1],seq1:this.sequence1[e.pos[0]-1]+e.seq1,seq2:this.sequence2[e.pos[1]-1]+e.seq2}),i[1]&&t.push({pos:[e.pos[0]-1,e.pos[1]],seq1:this.sequence1[e.pos[0]-1]+e.seq1,seq2:"-"+e.seq2}),i[2]&&t.push({pos:[e.pos[0],e.pos[1]-1],seq1:"-"+e.seq1,seq2:this.sequence2[e.pos[1]-1]+e.seq2}),0===e.pos[0]&&0===e.pos[1]&&this.alignments.push({sequence1:e.seq1,sequence2:e.seq2}),t.shift()}return this.alignments}},{key:"getAllIndexes",value:function(t,e){for(var i=[],n=-1;-1!==(n=t.indexOf(e,n+1));)i.push(n);return i}},{key:"arrayAllMaxIndexes",value:function(t){return this.getAllIndexes(t,Math.max.apply(null,t))}}]),t}();t.exports=r},function(t,e,i){"use strict";var n=function(){};n.FDLayout=i(18),n.FDLayoutConstants=i(4),n.FDLayoutEdge=i(19),n.FDLayoutNode=i(20),n.DimensionD=i(21),n.HashMap=i(22),n.HashSet=i(23),n.IGeometry=i(8),n.IMath=i(9),n.Integer=i(10),n.Point=i(12),n.PointD=i(5),n.RandomSeed=i(16),n.RectangleD=i(13),n.Transform=i(17),n.UniqueIDGeneretor=i(14),n.Quicksort=i(25),n.LinkedList=i(11),n.LGraphObject=i(2),n.LGraph=i(6),n.LEdge=i(1),n.LGraphManager=i(7),n.LNode=i(3),n.Layout=i(15),n.LayoutConstants=i(0),n.NeedlemanWunsch=i(27),n.Matrix=i(24),n.SVD=i(26),t.exports=n},function(t,e,i){"use strict";function n(){this.listeners=[]}var r=n.prototype;r.addListener=function(t,e){this.listeners.push({event:t,callback:e})},r.removeListener=function(t,e){for(var i=this.listeners.length;i>=0;i--){var n=this.listeners[i];n.event===t&&n.callback===e&&this.listeners.splice(i,1)}},r.emit=function(t,e){for(var i=0;i<this.listeners.length;i++){var n=this.listeners[i];t===n.event&&n.callback(e)}},t.exports=n}])},t.exports=e()},9557(t,e,i){"use strict";i.d(e,{diagram:()=>Z});var n=i(8213),r=i(5739),o=i(5871),s=i(8515),a=i(3706),h=i(797),l=i(8731),d=i(165),c=i(6527),g=i(451),u={L:"left",R:"right",T:"top",B:"bottom"},f={L:(0,h.K2)(t=>`${t},${t/2} 0,${t} 0,0`,"L"),R:(0,h.K2)(t=>`0,${t/2} ${t},0 ${t},${t}`,"R"),T:(0,h.K2)(t=>`0,0 ${t},0 ${t/2},${t}`,"T"),B:(0,h.K2)(t=>`${t/2},0 ${t},${t} 0,${t}`,"B")},p={L:(0,h.K2)((t,e)=>t-e+2,"L"),R:(0,h.K2)((t,e)=>t-2,"R"),T:(0,h.K2)((t,e)=>t-e+2,"T"),B:(0,h.K2)((t,e)=>t-2,"B")},y=(0,h.K2)(function(t){return v(t)?"L"===t?"R":"L":"T"===t?"B":"T"},"getOppositeArchitectureDirection"),m=(0,h.K2)(function(t){return"L"===t||"R"===t||"T"===t||"B"===t},"isArchitectureDirection"),v=(0,h.K2)(function(t){return"L"===t||"R"===t},"isArchitectureDirectionX"),E=(0,h.K2)(function(t){return"T"===t||"B"===t},"isArchitectureDirectionY"),N=(0,h.K2)(function(t,e){const i=v(t)&&E(e),n=E(t)&&v(e);return i||n},"isArchitectureDirectionXY"),T=(0,h.K2)(function(t){const e=t[0],i=t[1],n=v(e)&&E(i),r=E(e)&&v(i);return n||r},"isArchitecturePairXY"),A=(0,h.K2)(function(t){return"LL"!==t&&"RR"!==t&&"TT"!==t&&"BB"!==t},"isValidArchitectureDirectionPair"),w=(0,h.K2)(function(t,e){const i=`${t}${e}`;return A(i)?i:void 0},"getArchitectureDirectionPair"),I=(0,h.K2)(function([t,e],i){const n=i[0],r=i[1];return v(n)?E(r)?[t+("L"===n?-1:1),e+("T"===r?1:-1)]:[t+("L"===n?-1:1),e]:v(r)?[t+("L"===r?1:-1),e+("T"===n?1:-1)]:[t,e+("T"===n?1:-1)]},"shiftPositionByArchitectureDirectionPair"),C=(0,h.K2)(function(t){return"LT"===t||"TL"===t?[1,1]:"BL"===t||"LB"===t?[1,-1]:"BR"===t||"RB"===t?[-1,-1]:[-1,1]},"getArchitectureDirectionXYFactors"),L=(0,h.K2)(function(t,e){return N(t,e)?"bend":v(t)?"horizontal":"vertical"},"getArchitectureDirectionAlignment"),_=(0,h.K2)(function(t){return"service"===t.type},"isArchitectureService"),M=(0,h.K2)(function(t){return"junction"===t.type},"isArchitectureJunction"),x=(0,h.K2)(t=>t.data(),"edgeData"),O=(0,h.K2)(t=>t.data(),"nodeData"),D=a.UI.architecture,R=class{constructor(){this.nodes={},this.groups={},this.edges=[],this.registeredIds={},this.elements={},this.diagramId="",this.setAccTitle=a.SV,this.getAccTitle=a.iN,this.setDiagramTitle=a.ke,this.getDiagramTitle=a.ab,this.getAccDescription=a.m7,this.setAccDescription=a.EI,this.clear()}static{(0,h.K2)(this,"ArchitectureDB")}setDiagramId(t){this.diagramId=t}getDiagramId(){return this.diagramId}clear(){this.nodes={},this.groups={},this.edges=[],this.registeredIds={},this.dataStructures=void 0,this.elements={},this.diagramId="",(0,a.IU)()}addService({id:t,icon:e,in:i,title:n,iconText:r}){if(void 0!==this.registeredIds[t])throw new Error(`The service id [${t}] is already in use by another ${this.registeredIds[t]}`);if(void 0!==i){if(t===i)throw new Error(`The service [${t}] cannot be placed within itself`);if(void 0===this.registeredIds[i])throw new Error(`The service [${t}]'s parent does not exist. Please make sure the parent is created before this service`);if("node"===this.registeredIds[i])throw new Error(`The service [${t}]'s parent is not a group`)}this.registeredIds[t]="node",this.nodes[t]={id:t,type:"service",icon:e,iconText:r,title:n,edges:[],in:i}}getServices(){return Object.values(this.nodes).filter(_)}addJunction({id:t,in:e}){if(void 0!==this.registeredIds[t])throw new Error(`The junction id [${t}] is already in use by another ${this.registeredIds[t]}`);if(void 0!==e){if(t===e)throw new Error(`The junction [${t}] cannot be placed within itself`);if(void 0===this.registeredIds[e])throw new Error(`The junction [${t}]'s parent does not exist. Please make sure the parent is created before this junction`);if("node"===this.registeredIds[e])throw new Error(`The junction [${t}]'s parent is not a group`)}this.registeredIds[t]="node",this.nodes[t]={id:t,type:"junction",edges:[],in:e}}getJunctions(){return Object.values(this.nodes).filter(M)}getNodes(){return Object.values(this.nodes)}getNode(t){return this.nodes[t]??null}addGroup({id:t,icon:e,in:i,title:n}){if(void 0!==this.registeredIds?.[t])throw new Error(`The group id [${t}] is already in use by another ${this.registeredIds[t]}`);if(void 0!==i){if(t===i)throw new Error(`The group [${t}] cannot be placed within itself`);if(void 0===this.registeredIds?.[i])throw new Error(`The group [${t}]'s parent does not exist. Please make sure the parent is created before this group`);if("node"===this.registeredIds?.[i])throw new Error(`The group [${t}]'s parent is not a group`)}this.registeredIds[t]="group",this.groups[t]={id:t,icon:e,title:n,in:i}}getGroups(){return Object.values(this.groups)}addEdge({lhsId:t,rhsId:e,lhsDir:i,rhsDir:n,lhsInto:r,rhsInto:o,lhsGroup:s,rhsGroup:a,title:h}){if(!m(i))throw new Error(`Invalid direction given for left hand side of edge ${t}--${e}. Expected (L,R,T,B) got ${String(i)}`);if(!m(n))throw new Error(`Invalid direction given for right hand side of edge ${t}--${e}. Expected (L,R,T,B) got ${String(n)}`);if(void 0===this.nodes[t]&&void 0===this.groups[t])throw new Error(`The left-hand id [${t}] does not yet exist. Please create the service/group before declaring an edge to it.`);if(void 0===this.nodes[e]&&void 0===this.groups[e])throw new Error(`The right-hand id [${e}] does not yet exist. Please create the service/group before declaring an edge to it.`);const l=this.nodes[t].in,d=this.nodes[e].in;if(s&&l&&d&&l==d)throw new Error(`The left-hand id [${t}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);if(a&&l&&d&&l==d)throw new Error(`The right-hand id [${e}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);const c={lhsId:t,lhsDir:i,lhsInto:r,lhsGroup:s,rhsId:e,rhsDir:n,rhsInto:o,rhsGroup:a,title:h};this.edges.push(c),this.nodes[t]&&this.nodes[e]&&(this.nodes[t].edges.push(this.edges[this.edges.length-1]),this.nodes[e].edges.push(this.edges[this.edges.length-1]))}getEdges(){return this.edges}getDataStructures(){if(void 0===this.dataStructures){const t={},e=Object.entries(this.nodes).reduce((e,[i,n])=>(e[i]=n.edges.reduce((e,n)=>{const r=this.getNode(n.lhsId)?.in,o=this.getNode(n.rhsId)?.in;if(r&&o&&r!==o){const e=L(n.lhsDir,n.rhsDir);"bend"!==e&&(t[r]??={},t[r][o]=e,t[o]??={},t[o][r]=e)}if(n.lhsId===i){const t=w(n.lhsDir,n.rhsDir);t&&(e[t]=n.rhsId)}else{const t=w(n.rhsDir,n.lhsDir);t&&(e[t]=n.lhsId)}return e},{}),e),{}),i=Object.keys(e)[0],n={[i]:1},r=Object.keys(e).reduce((t,e)=>e===i?t:{...t,[e]:1},{}),o=(0,h.K2)(t=>{const i={[t]:[0,0]},o=[t];for(;o.length>0;){const t=o.shift();if(t){n[t]=1,delete r[t];const s=e[t],[a,h]=i[t];Object.entries(s).forEach(([t,e])=>{n[e]||(i[e]=I([a,h],t),o.push(e))})}}return i},"BFS"),s=[o(i)];for(;Object.keys(r).length>0;)s.push(o(Object.keys(r)[0]));this.dataStructures={adjList:e,spatialMaps:s,groupAlignments:t}}return this.dataStructures}setElementForId(t,e){this.elements[t]=e}getElementById(t){return this.elements[t]}getConfig(){return(0,s.$t)({...D,...(0,a.zj)().architecture})}getConfigField(t){return this.getConfig()[t]}},b=(0,h.K2)((t,e)=>{(0,o.S)(t,e),t.groups.map(t=>e.addGroup(t)),t.services.map(t=>e.addService({...t,type:"service"})),t.junctions.map(t=>e.addJunction({...t,type:"junction"})),t.edges.map(t=>e.addEdge(t))},"populateDb"),F={parser:{yy:void 0},parse:(0,h.K2)(async t=>{const e=await(0,l.qg)("architecture",t);h.Rm.debug(e);const i=F.parser?.yy;if(!(i instanceof R))throw new Error("parser.parser?.yy was not a ArchitectureDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");b(e,i)},"parse")},G=(0,h.K2)(t=>`\n .edge {\n stroke-width: ${t.archEdgeWidth};\n stroke: ${t.archEdgeColor};\n fill: none;\n }\n\n .arrow {\n fill: ${t.archEdgeArrowColor};\n }\n\n .node-bkg {\n fill: none;\n stroke: ${t.archGroupBorderColor};\n stroke-width: ${t.archGroupBorderWidth};\n stroke-dasharray: 8;\n }\n .node-icon-text {\n display: flex; \n align-items: center;\n }\n \n .node-icon-text > div {\n color: #fff;\n margin: 1px;\n height: fit-content;\n text-align: center;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n }\n`,"getStyles"),S=(0,h.K2)(t=>`<g><rect width="80" height="80" style="fill: #087ebf; stroke-width: 0px;"/>${t}</g>`,"wrapIcon"),P={prefix:"mermaid-architecture",height:80,width:80,icons:{database:{body:S('<path id="b" data-name="4" d="m20,57.86c0,3.94,8.95,7.14,20,7.14s20-3.2,20-7.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><path id="c" data-name="3" d="m20,45.95c0,3.94,8.95,7.14,20,7.14s20-3.2,20-7.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><path id="d" data-name="2" d="m20,34.05c0,3.94,8.95,7.14,20,7.14s20-3.2,20-7.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse id="e" data-name="1" cx="40" cy="22.14" rx="20" ry="7.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="20" y1="57.86" x2="20" y2="22.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="60" y1="57.86" x2="60" y2="22.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/>')},server:{body:S('<rect x="17.5" y="17.5" width="45" height="45" rx="2" ry="2" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="17.5" y1="32.5" x2="62.5" y2="32.5" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="17.5" y1="47.5" x2="62.5" y2="47.5" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><g><path d="m56.25,25c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: #fff; stroke-width: 0px;"/><path d="m56.25,25c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: none; stroke: #fff; stroke-miterlimit: 10;"/></g><g><path d="m56.25,40c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: #fff; stroke-width: 0px;"/><path d="m56.25,40c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: none; stroke: #fff; stroke-miterlimit: 10;"/></g><g><path d="m56.25,55c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: #fff; stroke-width: 0px;"/><path d="m56.25,55c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: none; stroke: #fff; stroke-miterlimit: 10;"/></g><g><circle cx="32.5" cy="25" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="27.5" cy="25" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="22.5" cy="25" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/></g><g><circle cx="32.5" cy="40" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="27.5" cy="40" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="22.5" cy="40" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/></g><g><circle cx="32.5" cy="55" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="27.5" cy="55" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="22.5" cy="55" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/></g>')},disk:{body:S('<rect x="20" y="15" width="40" height="50" rx="1" ry="1" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="24" cy="19.17" rx=".8" ry=".83" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="56" cy="19.17" rx=".8" ry=".83" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="24" cy="60.83" rx=".8" ry=".83" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="56" cy="60.83" rx=".8" ry=".83" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="40" cy="33.75" rx="14" ry="14.58" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="40" cy="33.75" rx="4" ry="4.17" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><path d="m37.51,42.52l-4.83,13.22c-.26.71-1.1,1.02-1.76.64l-4.18-2.42c-.66-.38-.81-1.26-.33-1.84l9.01-10.8c.88-1.05,2.56-.08,2.09,1.2Z" style="fill: #fff; stroke-width: 0px;"/>')},internet:{body:S('<circle cx="40" cy="40" r="22.5" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="40" y1="17.5" x2="40" y2="62.5" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="17.5" y1="40" x2="62.5" y2="40" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><path d="m39.99,17.51c-15.28,11.1-15.28,33.88,0,44.98" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><path d="m40.01,17.51c15.28,11.1,15.28,33.88,0,44.98" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="19.75" y1="30.1" x2="60.25" y2="30.1" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="19.75" y1="49.9" x2="60.25" y2="49.9" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/>')},cloud:{body:S('<path d="m65,47.5c0,2.76-2.24,5-5,5H20c-2.76,0-5-2.24-5-5,0-1.87,1.03-3.51,2.56-4.36-.04-.21-.06-.42-.06-.64,0-2.6,2.48-4.74,5.65-4.97,1.65-4.51,6.34-7.76,11.85-7.76.86,0,1.69.08,2.5.23,2.09-1.57,4.69-2.5,7.5-2.5,6.1,0,11.19,4.38,12.28,10.17,2.14.56,3.72,2.51,3.72,4.83,0,.03,0,.07-.01.1,2.29.46,4.01,2.48,4.01,4.9Z" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/>')},unknown:r.Gc,blank:{body:S("")}}},U=(0,h.K2)(async function(t,e,i,n){const o=i.getConfigField("padding"),h=i.getConfigField("iconSize"),l=h/2,d=h/6,c=d/2;await Promise.all(e.edges().map(async e=>{const{source:h,sourceDir:g,sourceArrow:u,sourceGroup:y,target:m,targetDir:A,targetArrow:I,targetGroup:L,label:_}=x(e);let{x:M,y:O}=e[0].sourceEndpoint();const{x:D,y:R}=e[0].midpoint();let{x:b,y:F}=e[0].targetEndpoint();const G=o+4;if(y&&(v(g)?M+="L"===g?-G:G:O+="T"===g?-G:G+18),L&&(v(A)?b+="L"===A?-G:G:F+="T"===A?-G:G+18),y||"junction"!==i.getNode(h)?.type||(v(g)?M+="L"===g?l:-l:O+="T"===g?l:-l),L||"junction"!==i.getNode(m)?.type||(v(A)?b+="L"===A?l:-l:F+="T"===A?l:-l),e[0]._private.rscratch){const e=t.insert("g");if(e.insert("path").attr("d",`M ${M},${O} L ${D},${R} L${b},${F} `).attr("class","edge").attr("id",`${n}-${(0,s.rY)(h,m,{prefix:"L"})}`),u){const t=v(g)?p[g](M,d):M-c,i=E(g)?p[g](O,d):O-c;e.insert("polygon").attr("points",f[g](d)).attr("transform",`translate(${t},${i})`).attr("class","arrow")}if(I){const t=v(A)?p[A](b,d):b-c,i=E(A)?p[A](F,d):F-c;e.insert("polygon").attr("points",f[A](d)).attr("transform",`translate(${t},${i})`).attr("class","arrow")}if(_){const t=N(g,A)?"XY":v(g)?"X":"Y";let i=0;i="X"===t?Math.abs(M-b):"Y"===t?Math.abs(O-F)/1.5:Math.abs(M-b)/2;const n=e.append("g");if(await(0,r.GZ)(n,_,{useHtmlLabels:!1,width:i,classes:"architecture-service-label"},(0,a.D7)()),n.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),"X"===t)n.attr("transform","translate("+D+", "+R+")");else if("Y"===t)n.attr("transform","translate("+D+", "+R+") rotate(-90)");else if("XY"===t){const t=w(g,A);if(t&&T(t)){const e=n.node().getBoundingClientRect(),[i,r]=C(t);n.attr("dominant-baseline","auto").attr("transform",`rotate(${-1*i*r*45})`);const o=n.node().getBoundingClientRect();n.attr("transform",`\n translate(${D}, ${R-e.height/2})\n translate(${i*o.width/2}, ${r*o.height/2})\n rotate(${-1*i*r*45}, 0, ${e.height/2})\n `)}}}}}))},"drawEdges"),Y=(0,h.K2)(async function(t,e,i,n){const o=.75*i.getConfigField("padding"),s=i.getConfigField("fontSize"),h=i.getConfigField("iconSize")/2;await Promise.all(e.nodes().map(async e=>{const l=O(e);if("group"===l.type){const{h:d,w:c,x1:g,y1:u}=e.boundingBox(),f=t.append("rect");f.attr("id",`${n}-group-${l.id}`).attr("x",g+h).attr("y",u+h).attr("width",c).attr("height",d).attr("class","node-bkg");const p=t.append("g");let y=g,m=u;if(l.icon){const t=p.append("g");t.html(`<g>${await(0,r.WY)(l.icon,{height:o,width:o,fallbackPrefix:P.prefix})}</g>`),t.attr("transform","translate("+(y+h+1)+", "+(m+h+1)+")"),y+=o,m+=s/2-1-2}if(l.label){const t=p.append("g");await(0,r.GZ)(t,l.label,{useHtmlLabels:!1,width:c,classes:"architecture-service-label"},(0,a.D7)()),t.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","start").attr("text-anchor","start"),t.attr("transform","translate("+(y+h+4)+", "+(m+h+2)+")")}i.setElementForId(l.id,f)}}))},"drawGroups"),k=(0,h.K2)(async function(t,e,i,n){const o=(0,a.D7)();for(const s of i){const i=e.append("g"),h=t.getConfigField("iconSize");if(s.title){const t=i.append("g");await(0,r.GZ)(t,s.title,{useHtmlLabels:!1,width:1.5*h,classes:"architecture-service-label"},o),t.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),t.attr("transform","translate("+h/2+", "+h+")")}const l=i.append("g");if(s.icon)l.html(`<g>${await(0,r.WY)(s.icon,{height:h,width:h,fallbackPrefix:P.prefix})}</g>`);else if(s.iconText){l.html(`<g>${await(0,r.WY)("blank",{height:h,width:h,fallbackPrefix:P.prefix})}</g>`);const t=l.append("g").append("foreignObject").attr("width",h).attr("height",h).append("div").attr("class","node-icon-text").attr("style",`height: ${h}px;`).append("div").html((0,a.jZ)(s.iconText,o)),e=parseInt(window.getComputedStyle(t.node(),null).getPropertyValue("font-size").replace(/\D/g,""))??16;t.attr("style",`-webkit-line-clamp: ${Math.floor((h-2)/e)};`)}else l.append("path").attr("class","node-bkg").attr("id",`${n}-node-${s.id}`).attr("d",`M0,${h} V5 Q0,0 5,0 H${h-5} Q${h},0 ${h},5 V${h} Z`);i.attr("id",`${n}-service-${s.id}`).attr("class","architecture-service");const{width:d,height:c}=i.node().getBBox();s.width=d,s.height=c,t.setElementForId(s.id,i)}return 0},"drawServices"),H=(0,h.K2)(function(t,e,i,n){i.forEach(i=>{const r=e.append("g"),o=t.getConfigField("iconSize");r.append("g").append("rect").attr("id",`${n}-node-${i.id}`).attr("fill-opacity","0").attr("width",o).attr("height",o),r.attr("class","architecture-junction");const{width:s,height:a}=r._groups[0][0].getBBox();r.width=s,r.height=a,t.setElementForId(i.id,r)})},"drawJunctions");function X(t,e,i){t.forEach(t=>{e.add({group:"nodes",data:{type:"service",id:t.id,icon:t.icon,label:t.title,parent:t.in,width:i.getConfigField("iconSize"),height:i.getConfigField("iconSize")},classes:"node-service"})})}function z(t,e,i){t.forEach(t=>{e.add({group:"nodes",data:{type:"junction",id:t.id,parent:t.in,width:i.getConfigField("iconSize"),height:i.getConfigField("iconSize")},classes:"node-junction"})})}function V(t,e){e.nodes().map(e=>{const i=O(e);if("group"===i.type)return;i.x=e.position().x,i.y=e.position().y;t.getElementById(i.id).attr("transform","translate("+(i.x||0)+","+(i.y||0)+")")})}function B(t,e){t.forEach(t=>{e.add({group:"nodes",data:{type:"group",id:t.id,icon:t.icon,label:t.title,parent:t.in},classes:"node-group"})})}function W(t,e){t.forEach(t=>{const{lhsId:i,rhsId:n,lhsInto:r,lhsGroup:o,rhsInto:s,lhsDir:a,rhsDir:h,rhsGroup:l,title:d}=t,c=N(t.lhsDir,t.rhsDir)?"segments":"straight",g={id:`${i}-${n}`,label:d,source:i,sourceDir:a,sourceArrow:r,sourceGroup:o,sourceEndpoint:"L"===a?"0 50%":"R"===a?"100% 50%":"T"===a?"50% 0":"50% 100%",target:n,targetDir:h,targetArrow:s,targetGroup:l,targetEndpoint:"L"===h?"0 50%":"R"===h?"100% 50%":"T"===h?"50% 0":"50% 100%"};e.add({group:"edges",data:g,classes:c})})}function j(t,e,i){const n=(0,h.K2)((t,e)=>Object.entries(t).reduce((t,[n,r])=>{let o=0;const s=Object.entries(r);if(1===s.length)return t[n]=s[0][1],t;for(let a=0;a<s.length-1;a++)for(let r=a+1;r<s.length;r++){const[h,l]=s[a],[d,c]=s[r],g=i[h]?.[d];if(g===e)t[n]??=[],t[n]=[...t[n],...l,...c];else if("default"===h||"default"===d)t[n]??=[],t[n]=[...t[n],...l,...c];else{t[`${n}-${o++}`]=l;t[`${n}-${o++}`]=c}}return t},{}),"flattenAlignments"),r=e.map(e=>{const i={},r={};return Object.entries(e).forEach(([e,[n,o]])=>{const s=t.getNode(e)?.in??"default";i[o]??={},i[o][s]??=[],i[o][s].push(e),r[n]??={},r[n][s]??=[],r[n][s].push(e)}),{horiz:Object.values(n(i,"horizontal")).filter(t=>t.length>1),vert:Object.values(n(r,"vertical")).filter(t=>t.length>1)}}),[o,s]=r.reduce(([t,e],{horiz:i,vert:n})=>[[...t,...i],[...e,...n]],[[],[]]);return{horizontal:o,vertical:s}}function $(t,e){const i=[],n=(0,h.K2)(t=>`${t[0]},${t[1]}`,"posToStr"),r=(0,h.K2)(t=>t.split(",").map(t=>parseInt(t)),"strToPos");return t.forEach(t=>{const o=Object.fromEntries(Object.entries(t).map(([t,e])=>[n(e),t])),s=[n([0,0])],a={},h={L:[-1,0],R:[1,0],T:[0,1],B:[0,-1]};for(;s.length>0;){const t=s.shift();if(t){a[t]=1;const l=o[t];if(l){const d=r(t);Object.entries(h).forEach(([t,r])=>{const h=n([d[0]+r[0],d[1]+r[1]]),c=o[h];c&&!a[h]&&(s.push(h),i.push({[u[t]]:c,[u[y(t)]]:l,gap:1.5*e.getConfigField("iconSize")}))})}}}}),i}function q(t,e,i,n,r,{spatialMaps:o,groupAlignments:s}){return new Promise(a=>{const l=(0,g.Ltv)("body").append("div").attr("id","cy").attr("style","display:none"),c=(0,d.A)({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"straight","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"edge[label]",style:{label:"data(label)"}},{selector:"edge.segments",style:{"curve-style":"segments","segment-weights":"0","segment-distances":[.5],"edge-distances":"endpoints","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"node",style:{"compound-sizing-wrt-labels":"include"}},{selector:"node[label]",style:{"text-valign":"bottom","text-halign":"center","font-size":`${r.getConfigField("fontSize")}px`}},{selector:".node-service",style:{label:"data(label)",width:"data(width)",height:"data(height)"}},{selector:".node-junction",style:{width:"data(width)",height:"data(height)"}},{selector:".node-group",style:{padding:`${r.getConfigField("padding")}px`}}],layout:{name:"grid",boundingBox:{x1:0,x2:100,y1:0,y2:100}}});l.remove(),B(i,c),X(t,c,r),z(e,c,r),W(n,c);const u=j(r,o,s),f=$(o,r),p=r.getConfigField("iconSize"),y=r.getConfigField("idealEdgeLengthMultiplier")*p,m=.5*p,v=r.getConfigField("edgeElasticity"),N=c.layout({name:"fcose",quality:"proof",randomize:r.getConfigField("randomize"),nodeSeparation:r.getConfigField("nodeSeparation"),numIter:r.getConfigField("numIter"),styleEnabled:!1,animate:!1,nodeDimensionsIncludeLabels:!1,idealEdgeLength(t){const[e,i]=t.connectedNodes(),{parent:n}=O(e),{parent:r}=O(i);return n===r?y:m},edgeElasticity(t){const[e,i]=t.connectedNodes(),{parent:n}=O(e),{parent:r}=O(i);return n===r?v:.001},alignmentConstraint:u,relativePlacementConstraint:f});N.one("layoutstop",()=>{function t(t,e,i,n){let r,o;const{x:s,y:a}=t,{x:h,y:l}=e;o=(n-a+(s-i)*(a-l)/(s-h))/Math.sqrt(1+Math.pow((a-l)/(s-h),2)),r=Math.sqrt(Math.pow(n-a,2)+Math.pow(i-s,2)-Math.pow(o,2));r/=Math.sqrt(Math.pow(h-s,2)+Math.pow(l-a,2));let d=(h-s)*(n-a)-(l-a)*(i-s);switch(!0){case d>=0:d=1;break;case d<0:d=-1}let c=(h-s)*(i-s)+(l-a)*(n-a);switch(!0){case c>=0:c=1;break;case c<0:c=-1}return o=Math.abs(o)*d,r*=c,{distances:o,weights:r}}(0,h.K2)(t,"getSegmentWeights"),c.startBatch();for(const e of Object.values(c.edges()))if(e.data?.()){const{x:i,y:n}=e.source().position(),{x:r,y:o}=e.target().position();if(i!==r&&n!==o){const i=e.sourceEndpoint(),n=e.targetEndpoint(),{sourceDir:r}=x(e),[o,s]=E(r)?[i.x,n.y]:[n.x,i.y],{weights:a,distances:h}=t(i,n,o,s);e.style("segment-distances",h),e.style("segment-weights",a)}}c.endBatch(),N.run()}),N.run(),c.ready(t=>{h.Rm.info("Ready",t),a(c)})})}(0,r.pC)([{name:P.prefix,icons:P}]),d.A.use(c),(0,h.K2)(X,"addServices"),(0,h.K2)(z,"addJunctions"),(0,h.K2)(V,"positionNodes"),(0,h.K2)(B,"addGroups"),(0,h.K2)(W,"addEdges"),(0,h.K2)(j,"getAlignments"),(0,h.K2)($,"getRelativeConstraints"),(0,h.K2)(q,"layoutArchitecture");var K={draw:(0,h.K2)(async(t,e,i,r)=>{const o=r.db;o.setDiagramId(e);const s=o.getServices(),h=o.getJunctions(),l=o.getGroups(),d=o.getEdges(),c=o.getDataStructures(),g=(0,n.D)(e),u=g.append("g");u.attr("class","architecture-edges");const f=g.append("g");f.attr("class","architecture-services");const p=g.append("g");p.attr("class","architecture-groups"),await k(o,f,s,e),H(o,f,h,e);const y=await q(s,h,l,d,o,c);await U(u,y,o,e),await Y(p,y,o,e),V(o,y),(0,a.ot)(void 0,g,o.getConfigField("padding"),o.getConfigField("useMaxWidth"))},"draw")},Z={parser:F,get db(){return new R},renderer:K,styles:G}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/a7456010.be9c64ae.js b/docs/build/assets/js/a7456010.be9c64ae.js deleted file mode 100644 index d27af0823..000000000 --- a/docs/build/assets/js/a7456010.be9c64ae.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[1235],{8552(s){s.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]); \ No newline at end of file diff --git a/docs/build/assets/js/a7bd4aaa.581d97bf.js b/docs/build/assets/js/a7bd4aaa.581d97bf.js deleted file mode 100644 index f5903838d..000000000 --- a/docs/build/assets/js/a7bd4aaa.581d97bf.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[7098],{1723(n,s,e){e.r(s),e.d(s,{default:()=>l});e(6540);var r=e(5500);function o(n,s){return`docs-${n}-${s}`}var t=e(3025),i=e(2831),c=e(1463),a=e(4848);function u(n){const{version:s}=n;return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(c.A,{version:s.version,tag:o(s.pluginId,s.version)}),(0,a.jsx)(r.be,{children:s.noIndex&&(0,a.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})]})}function d(n){const{version:s,route:e}=n;return(0,a.jsx)(r.e3,{className:s.className,children:(0,a.jsx)(t.n,{version:s,children:(0,i.v)(e.routes)})})}function l(n){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(u,{...n}),(0,a.jsx)(d,{...n})]})}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/a94703ab.0bd9f570.js b/docs/build/assets/js/a94703ab.0bd9f570.js deleted file mode 100644 index 690b61383..000000000 --- a/docs/build/assets/js/a94703ab.0bd9f570.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[9048],{461(e,t,n){n.r(t),n.d(t,{default:()=>Ee});var a=n(6540),i=n(8215),s=n(5500),o=n(7559),l=n(4718),r=n(609),c=n(1312),d=n(3104),m=n(5062);const h="backToTopButton_sjWU",u="backToTopButtonShow_xfvO";var b=n(4848);function p(){const{shown:e,scrollToTop:t}=function({threshold:e}){const[t,n]=(0,a.useState)(!1),i=(0,a.useRef)(!1),{startScroll:s,cancelScroll:o}=(0,d.gk)();return(0,d.Mq)(({scrollY:t},a)=>{const s=a?.scrollY;s&&(i.current?i.current=!1:t>=s?(o(),n(!1)):t<e?n(!1):t+window.innerHeight<document.documentElement.scrollHeight&&n(!0))}),(0,m.$)(e=>{e.location.hash&&(i.current=!0,n(!1))}),{shown:t,scrollToTop:()=>s(0)}}({threshold:300});return(0,b.jsx)("button",{"aria-label":(0,c.T)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,i.A)("clean-btn",o.G.common.backToTopButton,h,e&&u),type:"button",onClick:t})}var x=n(3109),g=n(6347),j=n(4581),f=n(6342),v=n(8774),C=n(6025),_=n(4586),k=n(5066),A=n(2303),N=n(5293);const S={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};function T({className:e,children:t}){const n=(0,A.A)(),{colorMode:i}=(0,N.G)();return(0,b.jsx)(b.Fragment,{children:(n?"dark"===i?["dark"]:["light"]:["light","dark"]).map(n=>{const i=t({theme:n,className:(0,k.A)(e,S.themedComponent,S[`themedComponent--${n}`])});return(0,b.jsx)(a.Fragment,{children:i},n)})})}function y(e){const{sources:t,className:n,alt:a,...i}=e;return(0,b.jsx)(T,{className:n,children:({theme:e,className:n})=>(0,b.jsx)("img",{src:t[e],alt:a,className:n,...i})})}function I({logo:e,alt:t,imageClassName:n}){const a={light:(0,C.Ay)(e.src),dark:(0,C.Ay)(e.srcDark||e.src)},i=(0,b.jsx)(y,{className:e.className,sources:a,height:e.height,width:e.width,alt:t,style:e.style});return n?(0,b.jsx)("div",{className:n,children:i}):i}function L(e){const{siteConfig:{title:t}}=(0,_.A)(),{navbar:{title:n,logo:a}}=(0,f.p)(),{imageClassName:i,titleClassName:s,...o}=e,l=(0,C.Ay)(a?.href||"/"),r=n?"":t,c=a?.alt??r;return(0,b.jsxs)(v.A,{to:l,...o,...a?.target&&{target:a.target},children:[a&&(0,b.jsx)(I,{logo:a,alt:c,imageClassName:i}),null!=n&&(0,b.jsx)("b",{className:s,children:n})]})}function w(e){return(0,b.jsx)("svg",{width:"20",height:"20","aria-hidden":"true",...e,children:(0,b.jsxs)("g",{fill:"#7a7a7a",children:[(0,b.jsx)("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),(0,b.jsx)("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})]})})}const B="collapseSidebarButton_PEFL",E="collapseSidebarButtonIcon_kv0_";function M({onClick:e}){return(0,b.jsx)("button",{type:"button",title:(0,c.T)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,c.T)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,i.A)("button button--secondary button--outline",B),onClick:e,children:(0,b.jsx)(w,{className:E})})}var H=n(5041),P=n(9532);const G=Symbol("EmptyContext"),D=a.createContext(G);function W({children:e}){const[t,n]=(0,a.useState)(null),i=(0,a.useMemo)(()=>({expandedItem:t,setExpandedItem:n}),[t]);return(0,b.jsx)(D.Provider,{value:i,children:e})}var R=n(1422),F=n(9169),U=n(6654),V=n(3186);const Y="menuExternalLink_NmtK",z="linkLabel_WmDU";function K({label:e}){return(0,b.jsx)("span",{title:e,className:z,children:e})}function O({item:e,onItemClick:t,activePath:n,level:a,index:s,...r}){const{href:c,label:d,className:m,autoAddBaseUrl:h}=e,u=(0,l.w8)(e,n),p=(0,U.A)(c);return(0,b.jsx)("li",{className:(0,i.A)(o.G.docs.docSidebarItemLink,o.G.docs.docSidebarItemLinkLevel(a),"menu__list-item",m),children:(0,b.jsxs)(v.A,{className:(0,i.A)("menu__link",!p&&Y,{"menu__link--active":u}),autoAddBaseUrl:h,"aria-current":u?"page":void 0,to:c,...p&&{onClick:t?()=>t(e):void 0},...r,children:[(0,b.jsx)(K,{label:d}),!p&&(0,b.jsx)(V.A,{})]})},d)}const q="categoryLink_byQd",Z="categoryLinkLabel_W154";function $({collapsed:e,categoryLabel:t,onClick:n}){return(0,b.jsx)("button",{"aria-label":e?(0,c.T)({id:"theme.DocSidebarItem.expandCategoryAriaLabel",message:"Expand sidebar category '{label}'",description:"The ARIA label to expand the sidebar category"},{label:t}):(0,c.T)({id:"theme.DocSidebarItem.collapseCategoryAriaLabel",message:"Collapse sidebar category '{label}'",description:"The ARIA label to collapse the sidebar category"},{label:t}),"aria-expanded":!e,type:"button",className:"clean-btn menu__caret",onClick:n})}function Q({label:e}){return(0,b.jsx)("span",{title:e,className:Z,children:e})}function J(e){return 0===(0,l.Y)(e.item.items,e.activePath).length?(0,b.jsx)(X,{...e}):(0,b.jsx)(ee,{...e})}function X({item:e,...t}){if("string"!=typeof e.href)return null;const{type:n,collapsed:a,collapsible:i,items:s,linkUnlisted:o,...l}=e,r={type:"link",...l};return(0,b.jsx)(O,{item:r,...t})}function ee({item:e,onItemClick:t,activePath:n,level:s,index:r,...c}){const{items:d,label:m,collapsible:h,className:u,href:p}=e,{docs:{sidebar:{autoCollapseCategories:x}}}=(0,f.p)(),g=function(e){const t=(0,A.A)();return(0,a.useMemo)(()=>e.href&&!e.linkUnlisted?e.href:!t&&e.collapsible?(0,l.Nr)(e):void 0,[e,t])}(e),j=(0,l.w8)(e,n),C=(0,F.ys)(p,n),{collapsed:_,setCollapsed:k}=(0,R.u)({initialState:()=>!!h&&(!j&&e.collapsed)}),{expandedItem:N,setExpandedItem:S}=function(){const e=(0,a.useContext)(D);if(e===G)throw new P.dV("DocSidebarItemsExpandedStateProvider");return e}(),T=(e=!_)=>{S(e?null:r),k(e)};!function({isActive:e,collapsed:t,updateCollapsed:n,activePath:i}){const s=(0,P.ZC)(e),o=(0,P.ZC)(i);(0,a.useEffect)(()=>{(e&&!s||e&&s&&i!==o)&&t&&n(!1)},[e,s,t,n,i,o])}({isActive:j,collapsed:_,updateCollapsed:T,activePath:n}),(0,a.useEffect)(()=>{h&&null!=N&&N!==r&&x&&k(!0)},[h,N,r,k,x]);return(0,b.jsxs)("li",{className:(0,i.A)(o.G.docs.docSidebarItemCategory,o.G.docs.docSidebarItemCategoryLevel(s),"menu__list-item",{"menu__list-item--collapsed":_},u),children:[(0,b.jsxs)("div",{className:(0,i.A)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":C}),children:[(0,b.jsx)(v.A,{className:(0,i.A)(q,"menu__link",{"menu__link--sublist":h,"menu__link--sublist-caret":!p&&h,"menu__link--active":j}),onClick:n=>{t?.(e),h&&(p?C?(n.preventDefault(),T()):T(!1):(n.preventDefault(),T()))},"aria-current":C?"page":void 0,role:h&&!p?"button":void 0,"aria-expanded":h&&!p?!_:void 0,href:h?g??"#":g,...c,children:(0,b.jsx)(Q,{label:m})}),p&&h&&(0,b.jsx)($,{collapsed:_,categoryLabel:m,onClick:e=>{e.preventDefault(),T()}})]}),(0,b.jsx)(R.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:_,children:(0,b.jsx)(se,{items:d,tabIndex:_?-1:0,onItemClick:t,activePath:n,level:s+1})})]})}const te="menuHtmlItem_M9Kj";function ne({item:e,level:t,index:n}){const{value:a,defaultStyle:s,className:l}=e;return(0,b.jsx)("li",{className:(0,i.A)(o.G.docs.docSidebarItemLink,o.G.docs.docSidebarItemLinkLevel(t),s&&[te,"menu__list-item"],l),dangerouslySetInnerHTML:{__html:a}},n)}function ae({item:e,...t}){switch(e.type){case"category":return(0,b.jsx)(J,{item:e,...t});case"html":return(0,b.jsx)(ne,{item:e,...t});default:return(0,b.jsx)(O,{item:e,...t})}}function ie({items:e,...t}){const n=(0,l.Y)(e,t.activePath);return(0,b.jsx)(W,{children:n.map((e,n)=>(0,b.jsx)(ae,{item:e,index:n,...t},n))})}const se=(0,a.memo)(ie),oe="menu_SIkG",le="menuWithAnnouncementBar_GW3s";function re({path:e,sidebar:t,className:n}){const s=function(){const{isActive:e}=(0,H.M)(),[t,n]=(0,a.useState)(e);return(0,d.Mq)(({scrollY:t})=>{e&&n(0===t)},[e]),e&&t}();return(0,b.jsx)("nav",{"aria-label":(0,c.T)({id:"theme.docs.sidebar.navAriaLabel",message:"Docs sidebar",description:"The ARIA label for the sidebar navigation"}),className:(0,i.A)("menu thin-scrollbar",oe,s&&le,n),children:(0,b.jsx)("ul",{className:(0,i.A)(o.G.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(se,{items:t,activePath:e,level:1})})})}const ce="sidebar_njMd",de="sidebarWithHideableNavbar_wUlq",me="sidebarHidden_VK0M",he="sidebarLogo_isFc";function ue({path:e,sidebar:t,onCollapse:n,isHidden:a}){const{navbar:{hideOnScroll:s},docs:{sidebar:{hideable:o}}}=(0,f.p)();return(0,b.jsxs)("div",{className:(0,i.A)(ce,s&&de,a&&me),children:[s&&(0,b.jsx)(L,{tabIndex:-1,className:he}),(0,b.jsx)(re,{path:e,sidebar:t}),o&&(0,b.jsx)(M,{onClick:n})]})}const be=a.memo(ue);var pe=n(5600),xe=n(2069);const ge=({sidebar:e,path:t})=>{const n=(0,xe.M)();return(0,b.jsx)("ul",{className:(0,i.A)(o.G.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(se,{items:e,activePath:t,onItemClick:e=>{"category"===e.type&&e.href&&n.toggle(),"link"===e.type&&n.toggle()},level:1})})};function je(e){return(0,b.jsx)(pe.GX,{component:ge,props:e})}const fe=a.memo(je);function ve(e){const t=(0,j.l)(),n="desktop"===t||"ssr"===t,a="mobile"===t;return(0,b.jsxs)(b.Fragment,{children:[n&&(0,b.jsx)(be,{...e}),a&&(0,b.jsx)(fe,{...e})]})}const Ce="expandButton_TmdG",_e="expandButtonIcon_i1dp";function ke({toggleSidebar:e}){return(0,b.jsx)("div",{className:Ce,title:(0,c.T)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,c.T)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:e,onClick:e,children:(0,b.jsx)(w,{className:_e})})}const Ae={docSidebarContainer:"docSidebarContainer_YfHR",docSidebarContainerHidden:"docSidebarContainerHidden_DPk8",sidebarViewport:"sidebarViewport_aRkj"};function Ne({children:e}){const t=(0,r.t)();return(0,b.jsx)(a.Fragment,{children:e},t?.name??"noSidebar")}function Se({sidebar:e,hiddenSidebarContainer:t,setHiddenSidebarContainer:n}){const{pathname:s}=(0,g.zy)(),[l,r]=(0,a.useState)(!1),c=(0,a.useCallback)(()=>{l&&r(!1),!l&&(0,x.O)()&&r(!0),n(e=>!e)},[n,l]);return(0,b.jsx)("aside",{className:(0,i.A)(o.G.docs.docSidebarContainer,Ae.docSidebarContainer,t&&Ae.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(Ae.docSidebarContainer)&&t&&r(!0)},children:(0,b.jsx)(Ne,{children:(0,b.jsxs)("div",{className:(0,i.A)(Ae.sidebarViewport,l&&Ae.sidebarViewportHidden),children:[(0,b.jsx)(ve,{sidebar:e,path:s,onCollapse:c,isHidden:l}),l&&(0,b.jsx)(ke,{toggleSidebar:c})]})})})}const Te={docMainContainer:"docMainContainer_TBSr",docMainContainerEnhanced:"docMainContainerEnhanced_lQrH",docItemWrapperEnhanced:"docItemWrapperEnhanced_JWYK"};function ye({hiddenSidebarContainer:e,children:t}){const n=(0,r.t)();return(0,b.jsx)("main",{className:(0,i.A)(Te.docMainContainer,(e||!n)&&Te.docMainContainerEnhanced),children:(0,b.jsx)("div",{className:(0,i.A)("container padding-top--md padding-bottom--lg",Te.docItemWrapper,e&&Te.docItemWrapperEnhanced),children:t})})}const Ie="docRoot_UBD9",Le="docsWrapper_hBAB";function we({children:e}){const t=(0,r.t)(),[n,i]=(0,a.useState)(!1);return(0,b.jsxs)("div",{className:Le,children:[(0,b.jsx)(p,{}),(0,b.jsxs)("div",{className:Ie,children:[t&&(0,b.jsx)(Se,{sidebar:t.items,hiddenSidebarContainer:n,setHiddenSidebarContainer:i}),(0,b.jsx)(ye,{hiddenSidebarContainer:n,children:e})]})]})}var Be=n(3363);function Ee(e){const t=(0,l.B5)(e);if(!t)return(0,b.jsx)(Be.A,{});const{docElement:n,sidebarName:a,sidebarItems:c}=t;return(0,b.jsx)(s.e3,{className:(0,i.A)(o.G.page.docsDocPage),children:(0,b.jsx)(r.V,{name:a,items:c,children:(0,b.jsx)(we,{children:n})})})}},1107(e,t,n){n.d(t,{A:()=>c});n(6540);var a=n(8215),i=n(1312),s=n(3535),o=n(8774),l=n(3427),r=n(4848);function c({as:e,id:t,...n}){const c=(0,l.A)(),d=(0,s.v)(t);if("h1"===e||!t)return(0,r.jsx)(e,{...n,id:void 0});c.collectAnchor(t);const m=(0,i.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof n.children?n.children:t});return(0,r.jsxs)(e,{...n,className:(0,a.A)("anchor",d,n.className),id:t,children:[n.children,(0,r.jsx)(o.A,{className:"hash-link",to:`#${t}`,"aria-label":m,title:m,translate:"no",children:"\u200b"})]})}},3363(e,t,n){n.d(t,{A:()=>l});n(6540);var a=n(8215),i=n(1312),s=n(1107),o=n(4848);function l({className:e}){return(0,o.jsx)("main",{className:(0,a.A)("container margin-vert--xl",e),children:(0,o.jsx)("div",{className:"row",children:(0,o.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,o.jsx)(s.A,{as:"h1",className:"hero__title",children:(0,o.jsx)(i.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,o.jsx)("p",{children:(0,o.jsx)(i.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,o.jsx)("p",{children:(0,o.jsx)(i.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}},3535(e,t,n){n.d(t,{v:()=>o});var a=n(6342);const i="anchorTargetStickyNavbar_Vzrq",s="anchorTargetHideOnScrollNavbar_vjPI";function o(e){const{navbar:{hideOnScroll:t}}=(0,a.p)();if(void 0!==e)return t?s:i}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/aba21aa0.3b844950.js b/docs/build/assets/js/aba21aa0.3b844950.js deleted file mode 100644 index 1f2f95ec7..000000000 --- a/docs/build/assets/js/aba21aa0.3b844950.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[5742],{7093(s){s.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]); \ No newline at end of file diff --git a/docs/build/assets/js/af516ec7.8a98155b.js b/docs/build/assets/js/af516ec7.8a98155b.js deleted file mode 100644 index ff6c1e367..000000000 --- a/docs/build/assets/js/af516ec7.8a98155b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[1645],{5582(s){s.exports=JSON.parse('{"features":[],"title":"Features","intro":null}')}}]); \ No newline at end of file diff --git a/docs/build/assets/js/af75b968.38286f67.js b/docs/build/assets/js/af75b968.38286f67.js deleted file mode 100644 index df9c6bede..000000000 --- a/docs/build/assets/js/af75b968.38286f67.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[6687],{4255(e){e.exports=JSON.parse('{"categoryGeneratedIndex":{"title":"Tutorials","description":"Step-by-step walkthroughs for everyday tasks. The user track covers individual workflows; the admin track covers org-wide configuration.","slug":"/category/tutorials","permalink":"/docs/category/tutorials","sidebar":"tutorialSidebar","navigation":{"previous":{"title":"Doriath","permalink":"/docs/intro"},"next":{"title":"User guide","permalink":"/docs/category/user-guide"}}}}')}}]); \ No newline at end of file diff --git a/docs/build/assets/js/b1abb4d6.c28c5ac9.js b/docs/build/assets/js/b1abb4d6.c28c5ac9.js deleted file mode 100644 index a841967ed..000000000 --- a/docs/build/assets/js/b1abb4d6.c28c5ac9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[9705],{4381(e){e.exports=JSON.parse('{"categoryGeneratedIndex":{"title":"User guide","description":"Workflows for individual users \u2014 opening the app, customizing what\'s on screen, and getting day-to-day work done.","slug":"/category/user-guide","permalink":"/docs/category/user-guide","sidebar":"tutorialSidebar","navigation":{"previous":{"title":"Tutorials","permalink":"/docs/category/tutorials"},"next":{"title":"Open Doriath for the first time","permalink":"/docs/tutorials/user/first-launch"}}}}')}}]); \ No newline at end of file diff --git a/docs/build/assets/js/c4f5d8e4.8954aaa4.js b/docs/build/assets/js/c4f5d8e4.8954aaa4.js deleted file mode 100644 index 1d8cb2fb0..000000000 --- a/docs/build/assets/js/c4f5d8e4.8954aaa4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[2634],{192(e,t,n){n.r(t),n.d(t,{default:()=>p});n(6540);var a=n(1827),o=n(8007),r=n(4848);const i=(0,r.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,r.jsx)("path",{d:"M8 10V7a4 4 0 0 1 8 0v3"}),(0,r.jsx)("rect",{x:"4",y:"10",width:"16",height:"11",rx:"2"})]}),l=(0,r.jsx)(r.Fragment,{children:"Password en secrets management op je eigen Nextcloud. Voor jezelf, voor je team, met een volledig audit trail \u2014 wie heeft welk secret aangemaakt, gedeeld, gebruikt, en wanneer. Geen externe vault, geen extra leverancier. In ontwikkeling."});function c(){const e=[{tone:"var(--c-cobalt-300)",label:"GH \xb7 admin"},{tone:"var(--c-lavender-300)",label:"AWS \xb7 prod"},{tone:"var(--c-mint-500)",label:"SMTP \xb7 relay"},{tone:"var(--c-forest-300)",label:"Stripe \xb7 live"}];return(0,r.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:6},children:e.map((t,n)=>(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"4px 0",borderBottom:n<e.length-1?"1px solid var(--c-cobalt-50)":"none"},children:[(0,r.jsx)("span",{style:{width:12,height:14,clipPath:"var(--hex-pointy-top)",background:t.tone,flexShrink:0}}),(0,r.jsx)("div",{style:{flex:1,fontFamily:"var(--conduction-typography-font-family-code)",fontSize:9,color:"var(--c-cobalt-700)"},children:t.label}),(0,r.jsx)("div",{style:{fontFamily:"var(--conduction-typography-font-family-code)",fontSize:8,letterSpacing:"0.05em",color:"var(--c-cobalt-500)"},children:"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022"})]},n))})}function d(){return(0,r.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[{tone:"var(--c-mint-500)",who:"platform-ops",n:12},{tone:"var(--c-cobalt-300)",who:"engineering",n:28},{tone:"var(--c-lavender-300)",who:"sales",n:6},{tone:"var(--c-orange-knvb)",who:"finance",n:4}].map((e,t)=>(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(0,r.jsx)("span",{style:{width:14,height:16,clipPath:"var(--hex-pointy-top)",background:e.tone,flexShrink:0}}),(0,r.jsx)("div",{style:{flex:1,fontFamily:"var(--conduction-typography-font-family-code)",fontSize:9,color:"var(--c-cobalt-700)"},children:e.who}),(0,r.jsxs)("div",{style:{fontFamily:"var(--conduction-typography-font-family-code)",fontSize:8,fontWeight:700,color:"var(--c-cobalt-500)"},children:[e.n," secrets"]})]},t))})}function s(){return(0,r.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:4},children:[{tone:"var(--c-mint-500)",what:"rotated",when:"2m ago"},{tone:"var(--c-cobalt-300)",what:"viewed",when:"14m ago"},{tone:"var(--c-lavender-300)",what:"shared",when:"1h ago"},{tone:"var(--c-orange-knvb)",what:"created",when:"today"},{tone:"var(--c-forest-300)",what:"revoked",when:"yesterday"}].map((e,t)=>(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(0,r.jsx)("span",{style:{width:10,height:12,clipPath:"var(--hex-pointy-top)",background:e.tone,flexShrink:0}}),(0,r.jsx)("div",{style:{flex:1,fontFamily:"var(--conduction-typography-font-family-code)",fontSize:9,color:"var(--c-cobalt-700)"},children:e.what}),(0,r.jsx)("div",{style:{fontFamily:"var(--conduction-typography-font-family-code)",fontSize:8,letterSpacing:"0.05em",color:"var(--c-cobalt-500)"},children:e.when})]},t))})}const h=[{title:"My vault",desc:"Persoonlijke wachtwoorden en API-keys, encrypted op de Nextcloud-server. Per item: een naam, een waarde, een notitie, en wie het mag zien.",panel:(0,r.jsx)(c,{})},{title:"Shared with team",desc:"Secrets per Nextcloud-groep. Een nieuwe medewerker krijgt automatisch toegang tot wat de groep deelt; iemand die vertrekt verliest het in \xe9\xe9n klik.",panel:(0,r.jsx)(d,{})},{title:"Recent activity",desc:"Wie heeft welk secret aangemaakt, geopend, gedeeld, geroteerd, of ingetrokken \u2014 met tijdstempel. Auditeerbaar, ook achteraf.",panel:(0,r.jsx)(s,{})}];function p(){return(0,r.jsx)(a.A,{title:"Doriath",description:"Self-hosted password and secrets vault for Nextcloud. Per-user, per-team, audited. In development.",children:(0,r.jsxs)("main",{className:"marketing-page",children:[(0,r.jsx)(o.cN,{background:"cobalt",status:{label:"In development",color:"var(--c-orange-knvb)"},version:"pre-release",locales:"NL \xb7 EN",title:"Doriath",tagline:l,primaryCta:{label:"View on GitHub",href:"https://github.com/ConductionNL/doriath",tone:"orange"},secondaryCta:{label:"Read the docs",href:"/docs/intro"},iconColor:"var(--c-orange-knvb)",icon:i}),(0,r.jsx)(o.ru,{eyebrow:"What Doriath will land with",title:"E\xe9n plek voor wachtwoorden en secrets \u2014 op je eigen Nextcloud.",lede:"Een password manager mag niet w\xe9\xe9r een extra leverancier zijn. Doriath leeft binnen je bestaande Nextcloud: dezelfde users, dezelfde groepen, dezelfde audit log. Per-user vaults, gedeelde team-secrets, en een activity feed die zegt wie wat heeft gedaan.",widgets:h})]})})}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/common.f3191396.js b/docs/build/assets/js/common.f3191396.js deleted file mode 100644 index 73743e331..000000000 --- a/docs/build/assets/js/common.f3191396.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[2076],{8453(e,t,r){r.d(t,{R:()=>s,x:()=>o});var n=r(6540);const i={},a=n.createContext(i);function s(e){const t=n.useContext(a);return n.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),n.createElement(a.Provider,{value:t},e.children)}},5016(e,t,r){r.d(t,{S:()=>o});var n=r(9302),i=class extends n.mR{static{(0,n.K2)(this,"ArchitectureTokenBuilder")}constructor(){super(["architecture"])}},a=class extends n.dg{static{(0,n.K2)(this,"ArchitectureValueConverter")}runCustomConverter(e,t,r){if("ARCH_ICON"===e.name)return t.replace(/[()]/g,"").trim();if("ARCH_TEXT_ICON"===e.name)return t.replace(/["()]/g,"");if("ARCH_TITLE"===e.name){let e=t.replace(/^\[|]$/g,"").trim();return(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))&&(e=e.slice(1,-1),e=e.replace(/\\"/g,'"').replace(/\\'/g,"'")),e.trim()}}},s={parser:{TokenBuilder:(0,n.K2)(()=>new i,"TokenBuilder"),ValueConverter:(0,n.K2)(()=>new a,"ValueConverter")}};function o(e=n.DD){const t=(0,n.WQ)((0,n.uM)(e),n.sr),r=(0,n.WQ)((0,n.tG)({shared:t}),n.wV,s);return t.ServiceRegistry.register(r),{shared:t,Architecture:r}}(0,n.K2)(o,"createArchitectureServices")},9511(e,t,r){r.d(t,{v:()=>s});var n=r(9302),i=class extends n.mR{static{(0,n.K2)(this,"InfoTokenBuilder")}constructor(){super(["info","showInfo"])}},a={parser:{TokenBuilder:(0,n.K2)(()=>new i,"TokenBuilder"),ValueConverter:(0,n.K2)(()=>new n.Tm,"ValueConverter")}};function s(e=n.DD){const t=(0,n.WQ)((0,n.uM)(e),n.sr),r=(0,n.WQ)((0,n.tG)({shared:t}),n.FZ,a);return t.ServiceRegistry.register(r),{shared:t,Info:r}}(0,n.K2)(s,"createInfoServices")},1681(e,t,r){r.d(t,{d:()=>u});var n=r(9302),i=class extends n.mR{static{(0,n.K2)(this,"TreemapTokenBuilder")}constructor(){super(["treemap"])}},a=/classDef\s+([A-Z_a-z]\w+)(?:\s+([^\n\r;]*))?;?/,s=class extends n.dg{static{(0,n.K2)(this,"TreemapValueConverter")}runCustomConverter(e,t,r){if("NUMBER2"===e.name)return parseFloat(t.replace(/,/g,""));if("SEPARATOR"===e.name)return t.substring(1,t.length-1);if("STRING2"===e.name)return t.substring(1,t.length-1);if("INDENTATION"===e.name)return t.length;if("ClassDef"===e.name){if("string"!=typeof t)return t;const e=a.exec(t);if(e)return{$type:"ClassDefStatement",className:e[1],styleText:e[2]||void 0}}}};function o(e){const t=e.validation.TreemapValidator,r=e.validation.ValidationRegistry;if(r){const e={Treemap:t.checkSingleRoot.bind(t)};r.register(e,t)}}(0,n.K2)(o,"registerValidationChecks");var l=class{static{(0,n.K2)(this,"TreemapValidator")}checkSingleRoot(e,t){let r;for(const n of e.TreemapRows)n.item&&(void 0===r&&void 0===n.indent?r=0:(void 0===n.indent||void 0!==r&&r>=parseInt(n.indent,10))&&t("error","Multiple root nodes are not allowed in a treemap.",{node:n,property:"item"}))}},c={parser:{TokenBuilder:(0,n.K2)(()=>new i,"TokenBuilder"),ValueConverter:(0,n.K2)(()=>new s,"ValueConverter")},validation:{TreemapValidator:(0,n.K2)(()=>new l,"TreemapValidator")}};function u(e=n.DD){const t=(0,n.WQ)((0,n.uM)(e),n.sr),r=(0,n.WQ)((0,n.tG)({shared:t}),n.XE,c);return t.ServiceRegistry.register(r),o(r),{shared:t,Treemap:r}}(0,n.K2)(u,"createTreemapServices")},5160(e,t,r){r.d(t,{f:()=>s});var n=r(9302),i=class extends n.mR{static{(0,n.K2)(this,"RadarTokenBuilder")}constructor(){super(["radar-beta"])}},a={parser:{TokenBuilder:(0,n.K2)(()=>new i,"TokenBuilder"),ValueConverter:(0,n.K2)(()=>new n.Tm,"ValueConverter")}};function s(e=n.DD){const t=(0,n.WQ)((0,n.uM)(e),n.sr),r=(0,n.WQ)((0,n.tG)({shared:t}),n.Bg,a);return t.ServiceRegistry.register(r),{shared:t,Radar:r}}(0,n.K2)(s,"createRadarServices")},4824(e,t,r){r.d(t,{$:()=>s});var n=r(9302),i=class extends n.mR{static{(0,n.K2)(this,"PacketTokenBuilder")}constructor(){super(["packet"])}},a={parser:{TokenBuilder:(0,n.K2)(()=>new i,"TokenBuilder"),ValueConverter:(0,n.K2)(()=>new n.Tm,"ValueConverter")}};function s(e=n.DD){const t=(0,n.WQ)((0,n.uM)(e),n.sr),r=(0,n.WQ)((0,n.tG)({shared:t}),n.p5,a);return t.ServiceRegistry.register(r),{shared:t,Packet:r}}(0,n.K2)(s,"createPacketServices")},532(e,t,r){r.d(t,{f:()=>o});var n=r(9302),i=class extends n.mR{static{(0,n.K2)(this,"PieTokenBuilder")}constructor(){super(["pie","showData"])}},a=class extends n.dg{static{(0,n.K2)(this,"PieValueConverter")}runCustomConverter(e,t,r){if("PIE_SECTION_LABEL"===e.name)return t.replace(/"/g,"").trim()}},s={parser:{TokenBuilder:(0,n.K2)(()=>new i,"TokenBuilder"),ValueConverter:(0,n.K2)(()=>new a,"ValueConverter")}};function o(e=n.DD){const t=(0,n.WQ)((0,n.uM)(e),n.sr),r=(0,n.WQ)((0,n.tG)({shared:t}),n.D_,s);return t.ServiceRegistry.register(r),{shared:t,Pie:r}}(0,n.K2)(o,"createPieServices")},2968(e,t,r){r.d(t,{g:()=>f});var n=r(9302),i=class extends n.mR{static{(0,n.K2)(this,"EventModelingTokenBuilder")}constructor(){super(["eventmodeling"])}},a=new Set(["cmd","command"]),s=new Set(["evt","event"]),o=new Set(["rmo","readmodel"]),l=new Set(["pcr","processor"]),c=new Set(["ui"]);function u(e){const t=e.validation.EventModelingValidator,r=e.validation.ValidationRegistry;if(r){const e={EmTimeFrame:t.checkSourceFrameTypes.bind(t),EmResetFrame:t.checkSourceFrameTypes.bind(t)};r.register(e,t)}}(0,n.K2)(u,"registerValidationChecks");var d=class{static{(0,n.K2)(this,"EventModelingValidator")}checkSourceFrameTypes(e,t){0!==e.sourceFrames.length&&(a.has(e.modelEntityType)?this.validateSources(e,new Set([...c,...l]),"command","ui or processor",t):s.has(e.modelEntityType)?this.validateSources(e,a,"event","command",t):o.has(e.modelEntityType)?this.validateSources(e,s,"read model","event",t):l.has(e.modelEntityType)?this.validateSources(e,o,"processor","read model",t):c.has(e.modelEntityType)&&this.validateSources(e,o,"ui","read model",t))}validateSources(e,t,r,n,i){for(const a of e.sourceFrames){const s=a.ref;void 0===s||t.has(s.modelEntityType)||i("error",`A ${r} can only receive input from a ${n}, not from '${s.modelEntityType}'.`,{node:e,property:"sourceFrames"})}}},p={parser:{TokenBuilder:(0,n.K2)(()=>new i,"TokenBuilder"),ValueConverter:(0,n.K2)(()=>new n.Tm,"ValueConverter")},validation:{EventModelingValidator:(0,n.K2)(()=>new d,"EventModelingValidator")}};function f(e=n.DD){const t=(0,n.WQ)((0,n.uM)(e),n.sr),r=(0,n.WQ)((0,n.tG)({shared:t}),n.x0,p);return t.ServiceRegistry.register(r),u(r),{shared:t,EventModel:r}}(0,n.K2)(f,"createEventModelingServices")},9302(e,t,r){r.d(t,{Bg:()=>fL,CZ:()=>mL,DD:()=>vN,D_:()=>pL,F5:()=>D_,FZ:()=>uL,K2:()=>ze,Tm:()=>TL,WQ:()=>iN,XE:()=>hL,Xr:()=>gL,d$:()=>cL,dg:()=>vL,mR:()=>RL,p5:()=>dL,sr:()=>sL,tG:()=>rN,uM:()=>nN,wV:()=>oL,x0:()=>lL});var n,i,a,s,o,l,c,u,d,p,f,h,m,g,y,v,T,R,$,b,E,C,A,k,S,w,x,N,I,_,P,D,O,L,M,j,F,z,K,G,q,U,W,B,V,H,Y,J,X,Q,Z,ee,te,re,ne,ie,ae,se,oe,le,ce,ue,de,pe,fe,he,me,ge,ye,ve,Te,Re,$e,be,Ee,Ce,Ae,ke,Se,we,xe,Ne,Ie,_e,Pe,De=Object.create,Oe=Object.defineProperty,Le=Object.getOwnPropertyDescriptor,Me=Object.getOwnPropertyNames,je=Object.getPrototypeOf,Fe=Object.prototype.hasOwnProperty,ze=(e,t)=>Oe(e,"name",{value:t,configurable:!0}),Ke=(e,t)=>function(){return t||(0,e[Me(e)[0]])((t={exports:{}}).exports,t),t.exports},Ge=(e,t)=>{for(var r in t)Oe(e,r,{get:t[r],enumerable:!0})},qe=(e,t,r,n)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let i of Me(t))Fe.call(e,i)||i===r||Oe(e,i,{get:()=>t[i],enumerable:!(n=Le(t,i))||n.enumerable});return e},Ue=(e,t,r)=>(qe(e,t,"default"),r&&qe(r,t,"default")),We=(e,t,r)=>(r=null!=e?De(je(e)):{},qe(!t&&e&&e.__esModule?r:Oe(r,"default",{value:e,enumerable:!0}),e)),Be=e=>qe(Oe({},"__esModule",{value:!0}),e),Ve={};Ge(Ve,{AnnotatedTextEdit:()=>A,ChangeAnnotation:()=>E,ChangeAnnotationIdentifier:()=>C,CodeAction:()=>le,CodeActionContext:()=>oe,CodeActionKind:()=>ae,CodeActionTriggerKind:()=>se,CodeDescription:()=>T,CodeLens:()=>ce,Color:()=>d,ColorInformation:()=>p,ColorPresentation:()=>f,Command:()=>$,CompletionItem:()=>B,CompletionItemKind:()=>z,CompletionItemLabelDetails:()=>W,CompletionItemTag:()=>G,CompletionList:()=>V,CreateFile:()=>S,DeleteFile:()=>x,Diagnostic:()=>R,DiagnosticRelatedInformation:()=>g,DiagnosticSeverity:()=>y,DiagnosticTag:()=>v,DocumentHighlight:()=>Z,DocumentHighlightKind:()=>Q,DocumentLink:()=>de,DocumentSymbol:()=>ie,DocumentUri:()=>n,EOL:()=>Ne,FoldingRange:()=>m,FoldingRangeKind:()=>h,FormattingOptions:()=>ue,Hover:()=>Y,InlayHint:()=>be,InlayHintKind:()=>Re,InlayHintLabelPart:()=>$e,InlineCompletionContext:()=>we,InlineCompletionItem:()=>Ce,InlineCompletionList:()=>Ae,InlineCompletionTriggerKind:()=>ke,InlineValueContext:()=>Te,InlineValueEvaluatableExpression:()=>ve,InlineValueText:()=>ge,InlineValueVariableLookup:()=>ye,InsertReplaceEdit:()=>q,InsertTextFormat:()=>K,InsertTextMode:()=>U,Location:()=>c,LocationLink:()=>u,MarkedString:()=>H,MarkupContent:()=>F,MarkupKind:()=>j,OptionalVersionedTextDocumentIdentifier:()=>L,ParameterInformation:()=>J,Position:()=>o,Range:()=>l,RenameFile:()=>w,SelectedCompletionInfo:()=>Se,SelectionRange:()=>pe,SemanticTokenModifiers:()=>he,SemanticTokenTypes:()=>fe,SemanticTokens:()=>me,SignatureInformation:()=>X,StringValue:()=>Ee,SymbolInformation:()=>re,SymbolKind:()=>ee,SymbolTag:()=>te,TextDocument:()=>Ie,TextDocumentEdit:()=>k,TextDocumentIdentifier:()=>D,TextDocumentItem:()=>M,TextEdit:()=>b,URI:()=>i,VersionedTextDocumentIdentifier:()=>O,WorkspaceChange:()=>P,WorkspaceEdit:()=>N,WorkspaceFolder:()=>xe,WorkspaceSymbol:()=>ne,integer:()=>a,uinteger:()=>s});var He,Ye,Je=(He={"../../node_modules/.pnpm/vscode-languageserver-types@3.17.5/node_modules/vscode-languageserver-types/lib/esm/main.js"(){var e,t,r,De,Oe,Le,Me,je,Fe,Ke,Ge,qe,Ue;!function(e){function t(e){return"string"==typeof e}ze(t,"is"),e.is=t}(n||(n={})),function(e){function t(e){return"string"==typeof e}ze(t,"is"),e.is=t}(i||(i={})),function(e){function t(t){return"number"==typeof t&&e.MIN_VALUE<=t&&t<=e.MAX_VALUE}e.MIN_VALUE=-2147483648,e.MAX_VALUE=2147483647,ze(t,"is"),e.is=t}(a||(a={})),function(e){function t(t){return"number"==typeof t&&e.MIN_VALUE<=t&&t<=e.MAX_VALUE}e.MIN_VALUE=0,e.MAX_VALUE=2147483647,ze(t,"is"),e.is=t}(s||(s={})),function(e){function t(e,t){return e===Number.MAX_VALUE&&(e=s.MAX_VALUE),t===Number.MAX_VALUE&&(t=s.MAX_VALUE),{line:e,character:t}}function r(e){let t=e;return Pe.objectLiteral(t)&&Pe.uinteger(t.line)&&Pe.uinteger(t.character)}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(o||(o={})),function(e){function t(e,t,r,n){if(Pe.uinteger(e)&&Pe.uinteger(t)&&Pe.uinteger(r)&&Pe.uinteger(n))return{start:o.create(e,t),end:o.create(r,n)};if(o.is(e)&&o.is(t))return{start:e,end:t};throw new Error(`Range#create called with invalid arguments[${e}, ${t}, ${r}, ${n}]`)}function r(e){let t=e;return Pe.objectLiteral(t)&&o.is(t.start)&&o.is(t.end)}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(l||(l={})),function(e){function t(e,t){return{uri:e,range:t}}function r(e){let t=e;return Pe.objectLiteral(t)&&l.is(t.range)&&(Pe.string(t.uri)||Pe.undefined(t.uri))}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(c||(c={})),function(e){function t(e,t,r,n){return{targetUri:e,targetRange:t,targetSelectionRange:r,originSelectionRange:n}}function r(e){let t=e;return Pe.objectLiteral(t)&&l.is(t.targetRange)&&Pe.string(t.targetUri)&&l.is(t.targetSelectionRange)&&(l.is(t.originSelectionRange)||Pe.undefined(t.originSelectionRange))}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(u||(u={})),function(e){function t(e,t,r,n){return{red:e,green:t,blue:r,alpha:n}}function r(e){const t=e;return Pe.objectLiteral(t)&&Pe.numberRange(t.red,0,1)&&Pe.numberRange(t.green,0,1)&&Pe.numberRange(t.blue,0,1)&&Pe.numberRange(t.alpha,0,1)}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(d||(d={})),function(e){function t(e,t){return{range:e,color:t}}function r(e){const t=e;return Pe.objectLiteral(t)&&l.is(t.range)&&d.is(t.color)}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(p||(p={})),function(e){function t(e,t,r){return{label:e,textEdit:t,additionalTextEdits:r}}function r(e){const t=e;return Pe.objectLiteral(t)&&Pe.string(t.label)&&(Pe.undefined(t.textEdit)||b.is(t))&&(Pe.undefined(t.additionalTextEdits)||Pe.typedArray(t.additionalTextEdits,b.is))}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(f||(f={})),(e=h||(h={})).Comment="comment",e.Imports="imports",e.Region="region",function(e){function t(e,t,r,n,i,a){const s={startLine:e,endLine:t};return Pe.defined(r)&&(s.startCharacter=r),Pe.defined(n)&&(s.endCharacter=n),Pe.defined(i)&&(s.kind=i),Pe.defined(a)&&(s.collapsedText=a),s}function r(e){const t=e;return Pe.objectLiteral(t)&&Pe.uinteger(t.startLine)&&Pe.uinteger(t.startLine)&&(Pe.undefined(t.startCharacter)||Pe.uinteger(t.startCharacter))&&(Pe.undefined(t.endCharacter)||Pe.uinteger(t.endCharacter))&&(Pe.undefined(t.kind)||Pe.string(t.kind))}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(m||(m={})),function(e){function t(e,t){return{location:e,message:t}}function r(e){let t=e;return Pe.defined(t)&&c.is(t.location)&&Pe.string(t.message)}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(g||(g={})),(t=y||(y={})).Error=1,t.Warning=2,t.Information=3,t.Hint=4,(r=v||(v={})).Unnecessary=1,r.Deprecated=2,function(e){function t(e){const t=e;return Pe.objectLiteral(t)&&Pe.string(t.href)}ze(t,"is"),e.is=t}(T||(T={})),function(e){function t(e,t,r,n,i,a){let s={range:e,message:t};return Pe.defined(r)&&(s.severity=r),Pe.defined(n)&&(s.code=n),Pe.defined(i)&&(s.source=i),Pe.defined(a)&&(s.relatedInformation=a),s}function r(e){var t;let r=e;return Pe.defined(r)&&l.is(r.range)&&Pe.string(r.message)&&(Pe.number(r.severity)||Pe.undefined(r.severity))&&(Pe.integer(r.code)||Pe.string(r.code)||Pe.undefined(r.code))&&(Pe.undefined(r.codeDescription)||Pe.string(null===(t=r.codeDescription)||void 0===t?void 0:t.href))&&(Pe.string(r.source)||Pe.undefined(r.source))&&(Pe.undefined(r.relatedInformation)||Pe.typedArray(r.relatedInformation,g.is))}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(R||(R={})),function(e){function t(e,t,...r){let n={title:e,command:t};return Pe.defined(r)&&r.length>0&&(n.arguments=r),n}function r(e){let t=e;return Pe.defined(t)&&Pe.string(t.title)&&Pe.string(t.command)}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}($||($={})),function(e){function t(e,t){return{range:e,newText:t}}function r(e,t){return{range:{start:e,end:e},newText:t}}function n(e){return{range:e,newText:""}}function i(e){const t=e;return Pe.objectLiteral(t)&&Pe.string(t.newText)&&l.is(t.range)}ze(t,"replace"),e.replace=t,ze(r,"insert"),e.insert=r,ze(n,"del"),e.del=n,ze(i,"is"),e.is=i}(b||(b={})),function(e){function t(e,t,r){const n={label:e};return void 0!==t&&(n.needsConfirmation=t),void 0!==r&&(n.description=r),n}function r(e){const t=e;return Pe.objectLiteral(t)&&Pe.string(t.label)&&(Pe.boolean(t.needsConfirmation)||void 0===t.needsConfirmation)&&(Pe.string(t.description)||void 0===t.description)}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(E||(E={})),function(e){function t(e){const t=e;return Pe.string(t)}ze(t,"is"),e.is=t}(C||(C={})),function(e){function t(e,t,r){return{range:e,newText:t,annotationId:r}}function r(e,t,r){return{range:{start:e,end:e},newText:t,annotationId:r}}function n(e,t){return{range:e,newText:"",annotationId:t}}function i(e){const t=e;return b.is(t)&&(E.is(t.annotationId)||C.is(t.annotationId))}ze(t,"replace"),e.replace=t,ze(r,"insert"),e.insert=r,ze(n,"del"),e.del=n,ze(i,"is"),e.is=i}(A||(A={})),function(e){function t(e,t){return{textDocument:e,edits:t}}function r(e){let t=e;return Pe.defined(t)&&L.is(t.textDocument)&&Array.isArray(t.edits)}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(k||(k={})),function(e){function t(e,t,r){let n={kind:"create",uri:e};return void 0===t||void 0===t.overwrite&&void 0===t.ignoreIfExists||(n.options=t),void 0!==r&&(n.annotationId=r),n}function r(e){let t=e;return t&&"create"===t.kind&&Pe.string(t.uri)&&(void 0===t.options||(void 0===t.options.overwrite||Pe.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||Pe.boolean(t.options.ignoreIfExists)))&&(void 0===t.annotationId||C.is(t.annotationId))}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(S||(S={})),function(e){function t(e,t,r,n){let i={kind:"rename",oldUri:e,newUri:t};return void 0===r||void 0===r.overwrite&&void 0===r.ignoreIfExists||(i.options=r),void 0!==n&&(i.annotationId=n),i}function r(e){let t=e;return t&&"rename"===t.kind&&Pe.string(t.oldUri)&&Pe.string(t.newUri)&&(void 0===t.options||(void 0===t.options.overwrite||Pe.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||Pe.boolean(t.options.ignoreIfExists)))&&(void 0===t.annotationId||C.is(t.annotationId))}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(w||(w={})),function(e){function t(e,t,r){let n={kind:"delete",uri:e};return void 0===t||void 0===t.recursive&&void 0===t.ignoreIfNotExists||(n.options=t),void 0!==r&&(n.annotationId=r),n}function r(e){let t=e;return t&&"delete"===t.kind&&Pe.string(t.uri)&&(void 0===t.options||(void 0===t.options.recursive||Pe.boolean(t.options.recursive))&&(void 0===t.options.ignoreIfNotExists||Pe.boolean(t.options.ignoreIfNotExists)))&&(void 0===t.annotationId||C.is(t.annotationId))}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(x||(x={})),function(e){function t(e){let t=e;return t&&(void 0!==t.changes||void 0!==t.documentChanges)&&(void 0===t.documentChanges||t.documentChanges.every(e=>Pe.string(e.kind)?S.is(e)||w.is(e)||x.is(e):k.is(e)))}ze(t,"is"),e.is=t}(N||(N={})),I=class{static{ze(this,"TextEditChangeImpl")}constructor(e,t){this.edits=e,this.changeAnnotations=t}insert(e,t,r){let n,i;if(void 0===r?n=b.insert(e,t):C.is(r)?(i=r,n=A.insert(e,t,r)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(r),n=A.insert(e,t,i)),this.edits.push(n),void 0!==i)return i}replace(e,t,r){let n,i;if(void 0===r?n=b.replace(e,t):C.is(r)?(i=r,n=A.replace(e,t,r)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(r),n=A.replace(e,t,i)),this.edits.push(n),void 0!==i)return i}delete(e,t){let r,n;if(void 0===t?r=b.del(e):C.is(t)?(n=t,r=A.del(e,t)):(this.assertChangeAnnotations(this.changeAnnotations),n=this.changeAnnotations.manage(t),r=A.del(e,n)),this.edits.push(r),void 0!==n)return n}add(e){this.edits.push(e)}all(){return this.edits}clear(){this.edits.splice(0,this.edits.length)}assertChangeAnnotations(e){if(void 0===e)throw new Error("Text edit change is not configured to manage change annotations.")}},_=class{static{ze(this,"ChangeAnnotations")}constructor(e){this._annotations=void 0===e?Object.create(null):e,this._counter=0,this._size=0}all(){return this._annotations}get size(){return this._size}manage(e,t){let r;if(C.is(e)?r=e:(r=this.nextId(),t=e),void 0!==this._annotations[r])throw new Error(`Id ${r} is already in use.`);if(void 0===t)throw new Error(`No annotation provided for id ${r}`);return this._annotations[r]=t,this._size++,r}nextId(){return this._counter++,this._counter.toString()}},P=class{static{ze(this,"WorkspaceChange")}constructor(e){this._textEditChanges=Object.create(null),void 0!==e?(this._workspaceEdit=e,e.documentChanges?(this._changeAnnotations=new _(e.changeAnnotations),e.changeAnnotations=this._changeAnnotations.all(),e.documentChanges.forEach(e=>{if(k.is(e)){const t=new I(e.edits,this._changeAnnotations);this._textEditChanges[e.textDocument.uri]=t}})):e.changes&&Object.keys(e.changes).forEach(t=>{const r=new I(e.changes[t]);this._textEditChanges[t]=r})):this._workspaceEdit={}}get edit(){return this.initDocumentChanges(),void 0!==this._changeAnnotations&&(0===this._changeAnnotations.size?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit}getTextEditChange(e){if(L.is(e)){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");const t={uri:e.uri,version:e.version};let r=this._textEditChanges[t.uri];if(!r){const e=[],n={textDocument:t,edits:e};this._workspaceEdit.documentChanges.push(n),r=new I(e,this._changeAnnotations),this._textEditChanges[t.uri]=r}return r}{if(this.initChanges(),void 0===this._workspaceEdit.changes)throw new Error("Workspace edit is not configured for normal text edit changes.");let t=this._textEditChanges[e];if(!t){let r=[];this._workspaceEdit.changes[e]=r,t=new I(r),this._textEditChanges[e]=t}return t}}initDocumentChanges(){void 0===this._workspaceEdit.documentChanges&&void 0===this._workspaceEdit.changes&&(this._changeAnnotations=new _,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())}initChanges(){void 0===this._workspaceEdit.documentChanges&&void 0===this._workspaceEdit.changes&&(this._workspaceEdit.changes=Object.create(null))}createFile(e,t,r){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");let n,i,a;if(E.is(t)||C.is(t)?n=t:r=t,void 0===n?i=S.create(e,r):(a=C.is(n)?n:this._changeAnnotations.manage(n),i=S.create(e,r,a)),this._workspaceEdit.documentChanges.push(i),void 0!==a)return a}renameFile(e,t,r,n){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");let i,a,s;if(E.is(r)||C.is(r)?i=r:n=r,void 0===i?a=w.create(e,t,n):(s=C.is(i)?i:this._changeAnnotations.manage(i),a=w.create(e,t,n,s)),this._workspaceEdit.documentChanges.push(a),void 0!==s)return s}deleteFile(e,t,r){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");let n,i,a;if(E.is(t)||C.is(t)?n=t:r=t,void 0===n?i=x.create(e,r):(a=C.is(n)?n:this._changeAnnotations.manage(n),i=x.create(e,r,a)),this._workspaceEdit.documentChanges.push(i),void 0!==a)return a}},function(e){function t(e){return{uri:e}}function r(e){let t=e;return Pe.defined(t)&&Pe.string(t.uri)}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(D||(D={})),function(e){function t(e,t){return{uri:e,version:t}}function r(e){let t=e;return Pe.defined(t)&&Pe.string(t.uri)&&Pe.integer(t.version)}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(O||(O={})),function(e){function t(e,t){return{uri:e,version:t}}function r(e){let t=e;return Pe.defined(t)&&Pe.string(t.uri)&&(null===t.version||Pe.integer(t.version))}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(L||(L={})),function(e){function t(e,t,r,n){return{uri:e,languageId:t,version:r,text:n}}function r(e){let t=e;return Pe.defined(t)&&Pe.string(t.uri)&&Pe.string(t.languageId)&&Pe.integer(t.version)&&Pe.string(t.text)}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(M||(M={})),function(e){function t(t){const r=t;return r===e.PlainText||r===e.Markdown}e.PlainText="plaintext",e.Markdown="markdown",ze(t,"is"),e.is=t}(j||(j={})),function(e){function t(e){const t=e;return Pe.objectLiteral(e)&&j.is(t.kind)&&Pe.string(t.value)}ze(t,"is"),e.is=t}(F||(F={})),(De=z||(z={})).Text=1,De.Method=2,De.Function=3,De.Constructor=4,De.Field=5,De.Variable=6,De.Class=7,De.Interface=8,De.Module=9,De.Property=10,De.Unit=11,De.Value=12,De.Enum=13,De.Keyword=14,De.Snippet=15,De.Color=16,De.File=17,De.Reference=18,De.Folder=19,De.EnumMember=20,De.Constant=21,De.Struct=22,De.Event=23,De.Operator=24,De.TypeParameter=25,(Oe=K||(K={})).PlainText=1,Oe.Snippet=2,(G||(G={})).Deprecated=1,function(e){function t(e,t,r){return{newText:e,insert:t,replace:r}}function r(e){const t=e;return t&&Pe.string(t.newText)&&l.is(t.insert)&&l.is(t.replace)}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(q||(q={})),(Le=U||(U={})).asIs=1,Le.adjustIndentation=2,function(e){function t(e){const t=e;return t&&(Pe.string(t.detail)||void 0===t.detail)&&(Pe.string(t.description)||void 0===t.description)}ze(t,"is"),e.is=t}(W||(W={})),function(e){function t(e){return{label:e}}ze(t,"create"),e.create=t}(B||(B={})),function(e){function t(e,t){return{items:e||[],isIncomplete:!!t}}ze(t,"create"),e.create=t}(V||(V={})),function(e){function t(e){return e.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}function r(e){const t=e;return Pe.string(t)||Pe.objectLiteral(t)&&Pe.string(t.language)&&Pe.string(t.value)}ze(t,"fromPlainText"),e.fromPlainText=t,ze(r,"is"),e.is=r}(H||(H={})),function(e){function t(e){let t=e;return!!t&&Pe.objectLiteral(t)&&(F.is(t.contents)||H.is(t.contents)||Pe.typedArray(t.contents,H.is))&&(void 0===e.range||l.is(e.range))}ze(t,"is"),e.is=t}(Y||(Y={})),function(e){function t(e,t){return t?{label:e,documentation:t}:{label:e}}ze(t,"create"),e.create=t}(J||(J={})),function(e){function t(e,t,...r){let n={label:e};return Pe.defined(t)&&(n.documentation=t),Pe.defined(r)?n.parameters=r:n.parameters=[],n}ze(t,"create"),e.create=t}(X||(X={})),(Me=Q||(Q={})).Text=1,Me.Read=2,Me.Write=3,function(e){function t(e,t){let r={range:e};return Pe.number(t)&&(r.kind=t),r}ze(t,"create"),e.create=t}(Z||(Z={})),(je=ee||(ee={})).File=1,je.Module=2,je.Namespace=3,je.Package=4,je.Class=5,je.Method=6,je.Property=7,je.Field=8,je.Constructor=9,je.Enum=10,je.Interface=11,je.Function=12,je.Variable=13,je.Constant=14,je.String=15,je.Number=16,je.Boolean=17,je.Array=18,je.Object=19,je.Key=20,je.Null=21,je.EnumMember=22,je.Struct=23,je.Event=24,je.Operator=25,je.TypeParameter=26,(te||(te={})).Deprecated=1,function(e){function t(e,t,r,n,i){let a={name:e,kind:t,location:{uri:n,range:r}};return i&&(a.containerName=i),a}ze(t,"create"),e.create=t}(re||(re={})),function(e){function t(e,t,r,n){return void 0!==n?{name:e,kind:t,location:{uri:r,range:n}}:{name:e,kind:t,location:{uri:r}}}ze(t,"create"),e.create=t}(ne||(ne={})),function(e){function t(e,t,r,n,i,a){let s={name:e,detail:t,kind:r,range:n,selectionRange:i};return void 0!==a&&(s.children=a),s}function r(e){let t=e;return t&&Pe.string(t.name)&&Pe.number(t.kind)&&l.is(t.range)&&l.is(t.selectionRange)&&(void 0===t.detail||Pe.string(t.detail))&&(void 0===t.deprecated||Pe.boolean(t.deprecated))&&(void 0===t.children||Array.isArray(t.children))&&(void 0===t.tags||Array.isArray(t.tags))}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(ie||(ie={})),(Fe=ae||(ae={})).Empty="",Fe.QuickFix="quickfix",Fe.Refactor="refactor",Fe.RefactorExtract="refactor.extract",Fe.RefactorInline="refactor.inline",Fe.RefactorRewrite="refactor.rewrite",Fe.Source="source",Fe.SourceOrganizeImports="source.organizeImports",Fe.SourceFixAll="source.fixAll",(Ke=se||(se={})).Invoked=1,Ke.Automatic=2,function(e){function t(e,t,r){let n={diagnostics:e};return null!=t&&(n.only=t),null!=r&&(n.triggerKind=r),n}function r(e){let t=e;return Pe.defined(t)&&Pe.typedArray(t.diagnostics,R.is)&&(void 0===t.only||Pe.typedArray(t.only,Pe.string))&&(void 0===t.triggerKind||t.triggerKind===se.Invoked||t.triggerKind===se.Automatic)}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(oe||(oe={})),function(e){function t(e,t,r){let n={title:e},i=!0;return"string"==typeof t?(i=!1,n.kind=t):$.is(t)?n.command=t:n.edit=t,i&&void 0!==r&&(n.kind=r),n}function r(e){let t=e;return t&&Pe.string(t.title)&&(void 0===t.diagnostics||Pe.typedArray(t.diagnostics,R.is))&&(void 0===t.kind||Pe.string(t.kind))&&(void 0!==t.edit||void 0!==t.command)&&(void 0===t.command||$.is(t.command))&&(void 0===t.isPreferred||Pe.boolean(t.isPreferred))&&(void 0===t.edit||N.is(t.edit))}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(le||(le={})),function(e){function t(e,t){let r={range:e};return Pe.defined(t)&&(r.data=t),r}function r(e){let t=e;return Pe.defined(t)&&l.is(t.range)&&(Pe.undefined(t.command)||$.is(t.command))}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(ce||(ce={})),function(e){function t(e,t){return{tabSize:e,insertSpaces:t}}function r(e){let t=e;return Pe.defined(t)&&Pe.uinteger(t.tabSize)&&Pe.boolean(t.insertSpaces)}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(ue||(ue={})),function(e){function t(e,t,r){return{range:e,target:t,data:r}}function r(e){let t=e;return Pe.defined(t)&&l.is(t.range)&&(Pe.undefined(t.target)||Pe.string(t.target))}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(de||(de={})),function(e){function t(e,t){return{range:e,parent:t}}function r(t){let r=t;return Pe.objectLiteral(r)&&l.is(r.range)&&(void 0===r.parent||e.is(r.parent))}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(pe||(pe={})),(Ge=fe||(fe={})).namespace="namespace",Ge.type="type",Ge.class="class",Ge.enum="enum",Ge.interface="interface",Ge.struct="struct",Ge.typeParameter="typeParameter",Ge.parameter="parameter",Ge.variable="variable",Ge.property="property",Ge.enumMember="enumMember",Ge.event="event",Ge.function="function",Ge.method="method",Ge.macro="macro",Ge.keyword="keyword",Ge.modifier="modifier",Ge.comment="comment",Ge.string="string",Ge.number="number",Ge.regexp="regexp",Ge.operator="operator",Ge.decorator="decorator",(qe=he||(he={})).declaration="declaration",qe.definition="definition",qe.readonly="readonly",qe.static="static",qe.deprecated="deprecated",qe.abstract="abstract",qe.async="async",qe.modification="modification",qe.documentation="documentation",qe.defaultLibrary="defaultLibrary",function(e){function t(e){const t=e;return Pe.objectLiteral(t)&&(void 0===t.resultId||"string"==typeof t.resultId)&&Array.isArray(t.data)&&(0===t.data.length||"number"==typeof t.data[0])}ze(t,"is"),e.is=t}(me||(me={})),function(e){function t(e,t){return{range:e,text:t}}function r(e){const t=e;return null!=t&&l.is(t.range)&&Pe.string(t.text)}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(ge||(ge={})),function(e){function t(e,t,r){return{range:e,variableName:t,caseSensitiveLookup:r}}function r(e){const t=e;return null!=t&&l.is(t.range)&&Pe.boolean(t.caseSensitiveLookup)&&(Pe.string(t.variableName)||void 0===t.variableName)}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(ye||(ye={})),function(e){function t(e,t){return{range:e,expression:t}}function r(e){const t=e;return null!=t&&l.is(t.range)&&(Pe.string(t.expression)||void 0===t.expression)}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(ve||(ve={})),function(e){function t(e,t){return{frameId:e,stoppedLocation:t}}function r(e){const t=e;return Pe.defined(t)&&l.is(e.stoppedLocation)}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(Te||(Te={})),function(e){function t(e){return 1===e||2===e}e.Type=1,e.Parameter=2,ze(t,"is"),e.is=t}(Re||(Re={})),function(e){function t(e){return{value:e}}function r(e){const t=e;return Pe.objectLiteral(t)&&(void 0===t.tooltip||Pe.string(t.tooltip)||F.is(t.tooltip))&&(void 0===t.location||c.is(t.location))&&(void 0===t.command||$.is(t.command))}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}($e||($e={})),function(e){function t(e,t,r){const n={position:e,label:t};return void 0!==r&&(n.kind=r),n}function r(e){const t=e;return Pe.objectLiteral(t)&&o.is(t.position)&&(Pe.string(t.label)||Pe.typedArray(t.label,$e.is))&&(void 0===t.kind||Re.is(t.kind))&&void 0===t.textEdits||Pe.typedArray(t.textEdits,b.is)&&(void 0===t.tooltip||Pe.string(t.tooltip)||F.is(t.tooltip))&&(void 0===t.paddingLeft||Pe.boolean(t.paddingLeft))&&(void 0===t.paddingRight||Pe.boolean(t.paddingRight))}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(be||(be={})),function(e){function t(e){return{kind:"snippet",value:e}}ze(t,"createSnippet"),e.createSnippet=t}(Ee||(Ee={})),function(e){function t(e,t,r,n){return{insertText:e,filterText:t,range:r,command:n}}ze(t,"create"),e.create=t}(Ce||(Ce={})),function(e){function t(e){return{items:e}}ze(t,"create"),e.create=t}(Ae||(Ae={})),(Ue=ke||(ke={})).Invoked=0,Ue.Automatic=1,function(e){function t(e,t){return{range:e,text:t}}ze(t,"create"),e.create=t}(Se||(Se={})),function(e){function t(e,t){return{triggerKind:e,selectedCompletionInfo:t}}ze(t,"create"),e.create=t}(we||(we={})),function(e){function t(e){const t=e;return Pe.objectLiteral(t)&&i.is(t.uri)&&Pe.string(t.name)}ze(t,"is"),e.is=t}(xe||(xe={})),Ne=["\n","\r\n","\r"],function(e){function t(e,t,r,n){return new _e(e,t,r,n)}function r(e){let t=e;return!!(Pe.defined(t)&&Pe.string(t.uri)&&(Pe.undefined(t.languageId)||Pe.string(t.languageId))&&Pe.uinteger(t.lineCount)&&Pe.func(t.getText)&&Pe.func(t.positionAt)&&Pe.func(t.offsetAt))}function n(e,t){let r=e.getText(),n=i(t,(e,t)=>{let r=e.range.start.line-t.range.start.line;return 0===r?e.range.start.character-t.range.start.character:r}),a=r.length;for(let i=n.length-1;i>=0;i--){let t=n[i],s=e.offsetAt(t.range.start),o=e.offsetAt(t.range.end);if(!(o<=a))throw new Error("Overlapping edit");r=r.substring(0,s)+t.newText+r.substring(o,r.length),a=s}return r}function i(e,t){if(e.length<=1)return e;const r=e.length/2|0,n=e.slice(0,r),a=e.slice(r);i(n,t),i(a,t);let s=0,o=0,l=0;for(;s<n.length&&o<a.length;){let r=t(n[s],a[o]);e[l++]=r<=0?n[s++]:a[o++]}for(;s<n.length;)e[l++]=n[s++];for(;o<a.length;)e[l++]=a[o++];return e}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r,ze(n,"applyEdits"),e.applyEdits=n,ze(i,"mergeSort")}(Ie||(Ie={})),_e=class{static{ze(this,"FullTextDocument")}constructor(e,t,r,n){this._uri=e,this._languageId=t,this._version=r,this._content=n,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){let t=this.offsetAt(e.start),r=this.offsetAt(e.end);return this._content.substring(t,r)}return this._content}update(e,t){this._content=e.text,this._version=t,this._lineOffsets=void 0}getLineOffsets(){if(void 0===this._lineOffsets){let e=[],t=this._content,r=!0;for(let n=0;n<t.length;n++){r&&(e.push(n),r=!1);let i=t.charAt(n);r="\r"===i||"\n"===i,"\r"===i&&n+1<t.length&&"\n"===t.charAt(n+1)&&n++}r&&t.length>0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);let t=this.getLineOffsets(),r=0,n=t.length;if(0===n)return o.create(0,e);for(;r<n;){let i=Math.floor((r+n)/2);t[i]>e?n=i:r=i+1}let i=r-1;return o.create(i,e-t[i])}offsetAt(e){let t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;let r=t[e.line],n=e.line+1<t.length?t[e.line+1]:this._content.length;return Math.max(Math.min(r+e.character,n),r)}get lineCount(){return this.getLineOffsets().length}},function(e){const t=Object.prototype.toString;function r(e){return void 0!==e}function n(e){return void 0===e}function i(e){return!0===e||!1===e}function a(e){return"[object String]"===t.call(e)}function s(e){return"[object Number]"===t.call(e)}function o(e,r,n){return"[object Number]"===t.call(e)&&r<=e&&e<=n}function l(e){return"[object Number]"===t.call(e)&&-2147483648<=e&&e<=2147483647}function c(e){return"[object Number]"===t.call(e)&&0<=e&&e<=2147483647}function u(e){return"[object Function]"===t.call(e)}function d(e){return null!==e&&"object"==typeof e}function p(e,t){return Array.isArray(e)&&e.every(t)}ze(r,"defined"),e.defined=r,ze(n,"undefined"),e.undefined=n,ze(i,"boolean"),e.boolean=i,ze(a,"string"),e.string=a,ze(s,"number"),e.number=s,ze(o,"numberRange"),e.numberRange=o,ze(l,"integer"),e.integer=l,ze(c,"uinteger"),e.uinteger=c,ze(u,"func"),e.func=u,ze(d,"objectLiteral"),e.objectLiteral=d,ze(p,"typedArray"),e.typedArray=p}(Pe||(Pe={}))}},function(){return He&&(Ye=(0,He[Me(He)[0]])(He=0)),Ye}),Xe=Ke({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/ral.js"(e){var t;function r(){if(void 0===t)throw new Error("No runtime abstraction layer installed");return t}Object.defineProperty(e,"__esModule",{value:!0}),ze(r,"RAL"),function(e){function r(e){if(void 0===e)throw new Error("No runtime abstraction layer provided");t=e}ze(r,"install"),e.install=r}(r||(r={})),e.default=r}}),Qe=Ke({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/is.js"(e){function t(e){return!0===e||!1===e}function r(e){return"string"==typeof e||e instanceof String}function n(e){return"number"==typeof e||e instanceof Number}function i(e){return e instanceof Error}function a(e){return"function"==typeof e}function s(e){return Array.isArray(e)}function o(e){return s(e)&&e.every(e=>r(e))}Object.defineProperty(e,"__esModule",{value:!0}),e.stringArray=e.array=e.func=e.error=e.number=e.string=e.boolean=void 0,ze(t,"boolean"),e.boolean=t,ze(r,"string"),e.string=r,ze(n,"number"),e.number=n,ze(i,"error"),e.error=i,ze(a,"func"),e.func=a,ze(s,"array"),e.array=s,ze(o,"stringArray"),e.stringArray=o}}),Ze=Ke({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/events.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Emitter=e.Event=void 0;var t,r=Xe();!function(e){const t={dispose(){}};e.None=function(){return t}}(t||(e.Event=t={}));var n=class{static{ze(this,"CallbackList")}add(e,t=null,r){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(e),this._contexts.push(t),Array.isArray(r)&&r.push({dispose:ze(()=>this.remove(e,t),"dispose")})}remove(e,t=null){if(!this._callbacks)return;let r=!1;for(let n=0,i=this._callbacks.length;n<i;n++)if(this._callbacks[n]===e){if(this._contexts[n]===t)return this._callbacks.splice(n,1),void this._contexts.splice(n,1);r=!0}if(r)throw new Error("When adding a listener with a context, you should remove it with the same context")}invoke(...e){if(!this._callbacks)return[];const t=[],n=this._callbacks.slice(0),i=this._contexts.slice(0);for(let s=0,o=n.length;s<o;s++)try{t.push(n[s].apply(i[s],e))}catch(a){(0,r.default)().console.error(a)}return t}isEmpty(){return!this._callbacks||0===this._callbacks.length}dispose(){this._callbacks=void 0,this._contexts=void 0}},i=class e{static{ze(this,"Emitter")}constructor(e){this._options=e}get event(){return this._event||(this._event=(t,r,i)=>{this._callbacks||(this._callbacks=new n),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(t,r);const a={dispose:ze(()=>{this._callbacks&&(this._callbacks.remove(t,r),a.dispose=e._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))},"dispose")};return Array.isArray(i)&&i.push(a),a}),this._event}fire(e){this._callbacks&&this._callbacks.invoke.call(this._callbacks,e)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}};e.Emitter=i,i._noop=function(){}}}),et=Ke({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/cancellation.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CancellationTokenSource=e.CancellationToken=void 0;var t,r=Xe(),n=Qe(),i=Ze();!function(e){function t(t){const r=t;return r&&(r===e.None||r===e.Cancelled||n.boolean(r.isCancellationRequested)&&!!r.onCancellationRequested)}e.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:i.Event.None}),e.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:i.Event.None}),ze(t,"is"),e.is=t}(t||(e.CancellationToken=t={}));var a=Object.freeze(function(e,t){const n=(0,r.default)().timer.setTimeout(e.bind(t),0);return{dispose(){n.dispose()}}}),s=class{static{ze(this,"MutableToken")}constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?a:(this._emitter||(this._emitter=new i.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}},o=class{static{ze(this,"CancellationTokenSource")}get token(){return this._token||(this._token=new s),this._token}cancel(){this._token?this._token.cancel():this._token=t.Cancelled}dispose(){this._token?this._token instanceof s&&this._token.dispose():this._token=t.None}};e.CancellationTokenSource=o}}),tt=Ke({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messages.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Message=e.NotificationType9=e.NotificationType8=e.NotificationType7=e.NotificationType6=e.NotificationType5=e.NotificationType4=e.NotificationType3=e.NotificationType2=e.NotificationType1=e.NotificationType0=e.NotificationType=e.RequestType9=e.RequestType8=e.RequestType7=e.RequestType6=e.RequestType5=e.RequestType4=e.RequestType3=e.RequestType2=e.RequestType1=e.RequestType=e.RequestType0=e.AbstractMessageSignature=e.ParameterStructures=e.ResponseError=e.ErrorCodes=void 0;var t,r,n=Qe();(r=t||(e.ErrorCodes=t={})).ParseError=-32700,r.InvalidRequest=-32600,r.MethodNotFound=-32601,r.InvalidParams=-32602,r.InternalError=-32603,r.jsonrpcReservedErrorRangeStart=-32099,r.serverErrorStart=-32099,r.MessageWriteError=-32099,r.MessageReadError=-32098,r.PendingResponseRejected=-32097,r.ConnectionInactive=-32096,r.ServerNotInitialized=-32002,r.UnknownErrorCode=-32001,r.jsonrpcReservedErrorRangeEnd=-32e3,r.serverErrorEnd=-32e3;var i=class e extends Error{static{ze(this,"ResponseError")}constructor(r,i,a){super(i),this.code=n.number(r)?r:t.UnknownErrorCode,this.data=a,Object.setPrototypeOf(this,e.prototype)}toJson(){const e={code:this.code,message:this.message};return void 0!==this.data&&(e.data=this.data),e}};e.ResponseError=i;var a=class e{static{ze(this,"ParameterStructures")}constructor(e){this.kind=e}static is(t){return t===e.auto||t===e.byName||t===e.byPosition}toString(){return this.kind}};e.ParameterStructures=a,a.auto=new a("auto"),a.byPosition=new a("byPosition"),a.byName=new a("byName");var s=class{static{ze(this,"AbstractMessageSignature")}constructor(e,t){this.method=e,this.numberOfParams=t}get parameterStructures(){return a.auto}};e.AbstractMessageSignature=s;var o=class extends s{static{ze(this,"RequestType0")}constructor(e){super(e,0)}};e.RequestType0=o;var l=class extends s{static{ze(this,"RequestType")}constructor(e,t=a.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}};e.RequestType=l;var c=class extends s{static{ze(this,"RequestType1")}constructor(e,t=a.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}};e.RequestType1=c;var u=class extends s{static{ze(this,"RequestType2")}constructor(e){super(e,2)}};e.RequestType2=u;var d=class extends s{static{ze(this,"RequestType3")}constructor(e){super(e,3)}};e.RequestType3=d;var p=class extends s{static{ze(this,"RequestType4")}constructor(e){super(e,4)}};e.RequestType4=p;var f=class extends s{static{ze(this,"RequestType5")}constructor(e){super(e,5)}};e.RequestType5=f;var h=class extends s{static{ze(this,"RequestType6")}constructor(e){super(e,6)}};e.RequestType6=h;var m=class extends s{static{ze(this,"RequestType7")}constructor(e){super(e,7)}};e.RequestType7=m;var g=class extends s{static{ze(this,"RequestType8")}constructor(e){super(e,8)}};e.RequestType8=g;var y=class extends s{static{ze(this,"RequestType9")}constructor(e){super(e,9)}};e.RequestType9=y;var v=class extends s{static{ze(this,"NotificationType")}constructor(e,t=a.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}};e.NotificationType=v;var T=class extends s{static{ze(this,"NotificationType0")}constructor(e){super(e,0)}};e.NotificationType0=T;var R=class extends s{static{ze(this,"NotificationType1")}constructor(e,t=a.auto){super(e,1),this._parameterStructures=t}get parameterStructures(){return this._parameterStructures}};e.NotificationType1=R;var $=class extends s{static{ze(this,"NotificationType2")}constructor(e){super(e,2)}};e.NotificationType2=$;var b=class extends s{static{ze(this,"NotificationType3")}constructor(e){super(e,3)}};e.NotificationType3=b;var E=class extends s{static{ze(this,"NotificationType4")}constructor(e){super(e,4)}};e.NotificationType4=E;var C=class extends s{static{ze(this,"NotificationType5")}constructor(e){super(e,5)}};e.NotificationType5=C;var A=class extends s{static{ze(this,"NotificationType6")}constructor(e){super(e,6)}};e.NotificationType6=A;var k=class extends s{static{ze(this,"NotificationType7")}constructor(e){super(e,7)}};e.NotificationType7=k;var S=class extends s{static{ze(this,"NotificationType8")}constructor(e){super(e,8)}};e.NotificationType8=S;var w,x=class extends s{static{ze(this,"NotificationType9")}constructor(e){super(e,9)}};e.NotificationType9=x,function(e){function t(e){const t=e;return t&&n.string(t.method)&&(n.string(t.id)||n.number(t.id))}function r(e){const t=e;return t&&n.string(t.method)&&void 0===e.id}function i(e){const t=e;return t&&(void 0!==t.result||!!t.error)&&(n.string(t.id)||n.number(t.id)||null===t.id)}ze(t,"isRequest"),e.isRequest=t,ze(r,"isNotification"),e.isNotification=r,ze(i,"isResponse"),e.isResponse=i}(w||(e.Message=w={}))}}),rt=Ke({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/linkedMap.js"(e){var t,r,n;Object.defineProperty(e,"__esModule",{value:!0}),e.LRUCache=e.LinkedMap=e.Touch=void 0,(n=r||(e.Touch=r={})).None=0,n.First=1,n.AsOld=n.First,n.Last=2,n.AsNew=n.Last;var i=class{static{ze(this,"LinkedMap")}constructor(){this[t]="LinkedMap",this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}isEmpty(){return!this._head&&!this._tail}get size(){return this._size}get first(){return this._head?.value}get last(){return this._tail?.value}has(e){return this._map.has(e)}get(e,t=r.None){const n=this._map.get(e);if(n)return t!==r.None&&this.touch(n,t),n.value}set(e,t,n=r.None){let i=this._map.get(e);if(i)i.value=t,n!==r.None&&this.touch(i,n);else{switch(i={key:e,value:t,next:void 0,previous:void 0},n){case r.None:this.addItemLast(i);break;case r.First:this.addItemFirst(i);break;case r.Last:default:this.addItemLast(i)}this._map.set(e,i),this._size++}return this}delete(e){return!!this.remove(e)}remove(e){const t=this._map.get(e);if(t)return this._map.delete(e),this.removeItem(t),this._size--,t.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error("Invalid list");const e=this._head;return this._map.delete(e.key),this.removeItem(e),this._size--,e.value}forEach(e,t){const r=this._state;let n=this._head;for(;n;){if(t?e.bind(t)(n.value,n.key,this):e(n.value,n.key,this),this._state!==r)throw new Error("LinkedMap got modified during iteration.");n=n.next}}keys(){const e=this._state;let t=this._head;const r={[Symbol.iterator]:()=>r,next:ze(()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(t){const e={value:t.key,done:!1};return t=t.next,e}return{value:void 0,done:!0}},"next")};return r}values(){const e=this._state;let t=this._head;const r={[Symbol.iterator]:()=>r,next:ze(()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(t){const e={value:t.value,done:!1};return t=t.next,e}return{value:void 0,done:!0}},"next")};return r}entries(){const e=this._state;let t=this._head;const r={[Symbol.iterator]:()=>r,next:ze(()=>{if(this._state!==e)throw new Error("LinkedMap got modified during iteration.");if(t){const e={value:[t.key,t.value],done:!1};return t=t.next,e}return{value:void 0,done:!0}},"next")};return r}[(t=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(e){if(e>=this.size)return;if(0===e)return void this.clear();let t=this._head,r=this.size;for(;t&&r>e;)this._map.delete(t.key),t=t.next,r--;this._head=t,this._size=r,t&&(t.previous=void 0),this._state++}addItemFirst(e){if(this._head||this._tail){if(!this._head)throw new Error("Invalid list");e.next=this._head,this._head.previous=e}else this._tail=e;this._head=e,this._state++}addItemLast(e){if(this._head||this._tail){if(!this._tail)throw new Error("Invalid list");e.previous=this._tail,this._tail.next=e}else this._head=e;this._tail=e,this._state++}removeItem(e){if(e===this._head&&e===this._tail)this._head=void 0,this._tail=void 0;else if(e===this._head){if(!e.next)throw new Error("Invalid list");e.next.previous=void 0,this._head=e.next}else if(e===this._tail){if(!e.previous)throw new Error("Invalid list");e.previous.next=void 0,this._tail=e.previous}else{const t=e.next,r=e.previous;if(!t||!r)throw new Error("Invalid list");t.previous=r,r.next=t}e.next=void 0,e.previous=void 0,this._state++}touch(e,t){if(!this._head||!this._tail)throw new Error("Invalid list");if(t===r.First||t===r.Last)if(t===r.First){if(e===this._head)return;const t=e.next,r=e.previous;e===this._tail?(r.next=void 0,this._tail=r):(t.previous=r,r.next=t),e.previous=void 0,e.next=this._head,this._head.previous=e,this._head=e,this._state++}else if(t===r.Last){if(e===this._tail)return;const t=e.next,r=e.previous;e===this._head?(t.previous=void 0,this._head=t):(t.previous=r,r.next=t),e.next=void 0,e.previous=this._tail,this._tail.next=e,this._tail=e,this._state++}}toJSON(){const e=[];return this.forEach((t,r)=>{e.push([r,t])}),e}fromJSON(e){this.clear();for(const[t,r]of e)this.set(t,r)}};e.LinkedMap=i;var a=class extends i{static{ze(this,"LRUCache")}constructor(e,t=1){super(),this._limit=e,this._ratio=Math.min(Math.max(0,t),1)}get limit(){return this._limit}set limit(e){this._limit=e,this.checkTrim()}get ratio(){return this._ratio}set ratio(e){this._ratio=Math.min(Math.max(0,e),1),this.checkTrim()}get(e,t=r.AsNew){return super.get(e,t)}peek(e){return super.get(e,r.None)}set(e,t){return super.set(e,t,r.Last),this.checkTrim(),this}checkTrim(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))}};e.LRUCache=a}}),nt=Ke({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/disposable.js"(e){var t;Object.defineProperty(e,"__esModule",{value:!0}),e.Disposable=void 0,function(e){function t(e){return{dispose:e}}ze(t,"create"),e.create=t}(t||(e.Disposable=t={}))}}),it=Ke({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.SharedArrayReceiverStrategy=e.SharedArraySenderStrategy=void 0;var t,r,n=et();(r=t||(t={})).Continue=0,r.Cancelled=1;var i=class{static{ze(this,"SharedArraySenderStrategy")}constructor(){this.buffers=new Map}enableCancellation(e){if(null===e.id)return;const r=new SharedArrayBuffer(4);new Int32Array(r,0,1)[0]=t.Continue,this.buffers.set(e.id,r),e.$cancellationData=r}async sendCancellation(e,r){const n=this.buffers.get(r);if(void 0===n)return;const i=new Int32Array(n,0,1);Atomics.store(i,0,t.Cancelled)}cleanup(e){this.buffers.delete(e)}dispose(){this.buffers.clear()}};e.SharedArraySenderStrategy=i;var a=class{static{ze(this,"SharedArrayBufferCancellationToken")}constructor(e){this.data=new Int32Array(e,0,1)}get isCancellationRequested(){return Atomics.load(this.data,0)===t.Cancelled}get onCancellationRequested(){throw new Error("Cancellation over SharedArrayBuffer doesn't support cancellation events")}},s=class{static{ze(this,"SharedArrayBufferCancellationTokenSource")}constructor(e){this.token=new a(e)}cancel(){}dispose(){}},o=class{static{ze(this,"SharedArrayReceiverStrategy")}constructor(){this.kind="request"}createCancellationTokenSource(e){const t=e.$cancellationData;return void 0===t?new n.CancellationTokenSource:new s(t)}};e.SharedArrayReceiverStrategy=o}}),at=Ke({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/semaphore.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Semaphore=void 0;var t=Xe(),r=class{static{ze(this,"Semaphore")}constructor(e=1){if(e<=0)throw new Error("Capacity must be greater than 0");this._capacity=e,this._active=0,this._waiting=[]}lock(e){return new Promise((t,r)=>{this._waiting.push({thunk:e,resolve:t,reject:r}),this.runNext()})}get active(){return this._active}runNext(){0!==this._waiting.length&&this._active!==this._capacity&&(0,t.default)().timer.setImmediate(()=>this.doRunNext())}doRunNext(){if(0===this._waiting.length||this._active===this._capacity)return;const e=this._waiting.shift();if(this._active++,this._active>this._capacity)throw new Error("To many thunks active");try{const t=e.thunk();t instanceof Promise?t.then(t=>{this._active--,e.resolve(t),this.runNext()},t=>{this._active--,e.reject(t),this.runNext()}):(this._active--,e.resolve(t),this.runNext())}catch(t){this._active--,e.reject(t),this.runNext()}}};e.Semaphore=r}}),st=Ke({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageReader.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ReadableStreamMessageReader=e.AbstractMessageReader=e.MessageReader=void 0;var t,r=Xe(),n=Qe(),i=Ze(),a=at();!function(e){function t(e){let t=e;return t&&n.func(t.listen)&&n.func(t.dispose)&&n.func(t.onError)&&n.func(t.onClose)&&n.func(t.onPartialMessage)}ze(t,"is"),e.is=t}(t||(e.MessageReader=t={}));var s,o=class{static{ze(this,"AbstractMessageReader")}constructor(){this.errorEmitter=new i.Emitter,this.closeEmitter=new i.Emitter,this.partialMessageEmitter=new i.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(e){this.errorEmitter.fire(this.asError(e))}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}get onPartialMessage(){return this.partialMessageEmitter.event}firePartialMessage(e){this.partialMessageEmitter.fire(e)}asError(e){return e instanceof Error?e:new Error(`Reader received error. Reason: ${n.string(e.message)?e.message:"unknown"}`)}};e.AbstractMessageReader=o,function(e){function t(e){let t,n;const i=new Map;let a;const s=new Map;if(void 0===e||"string"==typeof e)t=e??"utf-8";else{if(t=e.charset??"utf-8",void 0!==e.contentDecoder&&(n=e.contentDecoder,i.set(n.name,n)),void 0!==e.contentDecoders)for(const t of e.contentDecoders)i.set(t.name,t);if(void 0!==e.contentTypeDecoder&&(a=e.contentTypeDecoder,s.set(a.name,a)),void 0!==e.contentTypeDecoders)for(const t of e.contentTypeDecoders)s.set(t.name,t)}return void 0===a&&(a=(0,r.default)().applicationJson.decoder,s.set(a.name,a)),{charset:t,contentDecoder:n,contentDecoders:i,contentTypeDecoder:a,contentTypeDecoders:s}}ze(t,"fromOptions"),e.fromOptions=t}(s||(s={}));var l=class extends o{static{ze(this,"ReadableStreamMessageReader")}constructor(e,t){super(),this.readable=e,this.options=s.fromOptions(t),this.buffer=(0,r.default)().messageBuffer.create(this.options.charset),this._partialMessageTimeout=1e4,this.nextMessageLength=-1,this.messageToken=0,this.readSemaphore=new a.Semaphore(1)}set partialMessageTimeout(e){this._partialMessageTimeout=e}get partialMessageTimeout(){return this._partialMessageTimeout}listen(e){this.nextMessageLength=-1,this.messageToken=0,this.partialMessageTimer=void 0,this.callback=e;const t=this.readable.onData(e=>{this.onData(e)});return this.readable.onError(e=>this.fireError(e)),this.readable.onClose(()=>this.fireClose()),t}onData(e){try{for(this.buffer.append(e);;){if(-1===this.nextMessageLength){const e=this.buffer.tryReadHeaders(!0);if(!e)return;const t=e.get("content-length");if(!t)return void this.fireError(new Error(`Header must provide a Content-Length property.\n${JSON.stringify(Object.fromEntries(e))}`));const r=parseInt(t);if(isNaN(r))return void this.fireError(new Error(`Content-Length value must be a number. Got ${t}`));this.nextMessageLength=r}const e=this.buffer.tryReadBody(this.nextMessageLength);if(void 0===e)return void this.setPartialMessageTimer();this.clearPartialMessageTimer(),this.nextMessageLength=-1,this.readSemaphore.lock(async()=>{const t=void 0!==this.options.contentDecoder?await this.options.contentDecoder.decode(e):e,r=await this.options.contentTypeDecoder.decode(t,this.options);this.callback(r)}).catch(e=>{this.fireError(e)})}}catch(t){this.fireError(t)}}clearPartialMessageTimer(){this.partialMessageTimer&&(this.partialMessageTimer.dispose(),this.partialMessageTimer=void 0)}setPartialMessageTimer(){this.clearPartialMessageTimer(),this._partialMessageTimeout<=0||(this.partialMessageTimer=(0,r.default)().timer.setTimeout((e,t)=>{this.partialMessageTimer=void 0,e===this.messageToken&&(this.firePartialMessage({messageToken:e,waitingTime:t}),this.setPartialMessageTimer())},this._partialMessageTimeout,this.messageToken,this._partialMessageTimeout))}};e.ReadableStreamMessageReader=l}}),ot=Ke({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageWriter.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.WriteableStreamMessageWriter=e.AbstractMessageWriter=e.MessageWriter=void 0;var t,r=Xe(),n=Qe(),i=at(),a=Ze();!function(e){function t(e){let t=e;return t&&n.func(t.dispose)&&n.func(t.onClose)&&n.func(t.onError)&&n.func(t.write)}ze(t,"is"),e.is=t}(t||(e.MessageWriter=t={}));var s,o=class{static{ze(this,"AbstractMessageWriter")}constructor(){this.errorEmitter=new a.Emitter,this.closeEmitter=new a.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(e,t,r){this.errorEmitter.fire([this.asError(e),t,r])}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}asError(e){return e instanceof Error?e:new Error(`Writer received error. Reason: ${n.string(e.message)?e.message:"unknown"}`)}};e.AbstractMessageWriter=o,function(e){function t(e){return void 0===e||"string"==typeof e?{charset:e??"utf-8",contentTypeEncoder:(0,r.default)().applicationJson.encoder}:{charset:e.charset??"utf-8",contentEncoder:e.contentEncoder,contentTypeEncoder:e.contentTypeEncoder??(0,r.default)().applicationJson.encoder}}ze(t,"fromOptions"),e.fromOptions=t}(s||(s={}));var l=class extends o{static{ze(this,"WriteableStreamMessageWriter")}constructor(e,t){super(),this.writable=e,this.options=s.fromOptions(t),this.errorCount=0,this.writeSemaphore=new i.Semaphore(1),this.writable.onError(e=>this.fireError(e)),this.writable.onClose(()=>this.fireClose())}async write(e){return this.writeSemaphore.lock(async()=>this.options.contentTypeEncoder.encode(e,this.options).then(e=>void 0!==this.options.contentEncoder?this.options.contentEncoder.encode(e):e).then(t=>{const r=[];return r.push("Content-Length: ",t.byteLength.toString(),"\r\n"),r.push("\r\n"),this.doWrite(e,r,t)},e=>{throw this.fireError(e),e}))}async doWrite(e,t,r){try{return await this.writable.write(t.join(""),"ascii"),this.writable.write(r)}catch(n){return this.handleError(n,e),Promise.reject(n)}}handleError(e,t){this.errorCount++,this.fireError(e,t,this.errorCount)}end(){this.writable.end()}};e.WriteableStreamMessageWriter=l}}),lt=Ke({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageBuffer.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractMessageBuffer=void 0;var t=class{static{ze(this,"AbstractMessageBuffer")}constructor(e="utf-8"){this._encoding=e,this._chunks=[],this._totalLength=0}get encoding(){return this._encoding}append(e){const t="string"==typeof e?this.fromString(e,this._encoding):e;this._chunks.push(t),this._totalLength+=t.byteLength}tryReadHeaders(e=!1){if(0===this._chunks.length)return;let t=0,r=0,n=0,i=0;e:for(;r<this._chunks.length;){const e=this._chunks[r];for(n=0;n<e.length;){switch(e[n]){case 13:switch(t){case 0:t=1;break;case 2:t=3;break;default:t=0}break;case 10:switch(t){case 1:t=2;break;case 3:t=4,n++;break e;default:t=0}break;default:t=0}n++}i+=e.byteLength,r++}if(4!==t)return;const a=this._read(i+n),s=new Map,o=this.toString(a,"ascii").split("\r\n");if(o.length<2)return s;for(let l=0;l<o.length-2;l++){const t=o[l],r=t.indexOf(":");if(-1===r)throw new Error(`Message header must separate key and value using ':'\n${t}`);const n=t.substr(0,r),i=t.substr(r+1).trim();s.set(e?n.toLowerCase():n,i)}return s}tryReadBody(e){if(!(this._totalLength<e))return this._read(e)}get numberOfBytes(){return this._totalLength}_read(e){if(0===e)return this.emptyBuffer();if(e>this._totalLength)throw new Error("Cannot read so many bytes!");if(this._chunks[0].byteLength===e){const t=this._chunks[0];return this._chunks.shift(),this._totalLength-=e,this.asNative(t)}if(this._chunks[0].byteLength>e){const t=this._chunks[0],r=this.asNative(t,e);return this._chunks[0]=t.slice(e),this._totalLength-=e,r}const t=this.allocNative(e);let r=0;for(;e>0;){const n=this._chunks[0];if(n.byteLength>e){const i=n.slice(0,e);t.set(i,r),r+=e,this._chunks[0]=n.slice(e),this._totalLength-=e,e-=e}else t.set(n,r),r+=n.byteLength,this._chunks.shift(),this._totalLength-=n.byteLength,e-=n.byteLength}return t}};e.AbstractMessageBuffer=t}}),ct=Ke({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/connection.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.createMessageConnection=e.ConnectionOptions=e.MessageStrategy=e.CancellationStrategy=e.CancellationSenderStrategy=e.CancellationReceiverStrategy=e.RequestCancellationReceiverStrategy=e.IdCancellationReceiverStrategy=e.ConnectionStrategy=e.ConnectionError=e.ConnectionErrors=e.LogTraceNotification=e.SetTraceNotification=e.TraceFormat=e.TraceValues=e.Trace=e.NullLogger=e.ProgressType=e.ProgressToken=void 0;var t,r,n,i=Xe(),a=Qe(),s=tt(),o=rt(),l=Ze(),c=et();(t||(t={})).type=new s.NotificationType("$/cancelRequest"),function(e){function t(e){return"string"==typeof e||"number"==typeof e}ze(t,"is"),e.is=t}(r||(e.ProgressToken=r={})),(n||(n={})).type=new s.NotificationType("$/progress");var u,d,p,f,h,m,g,y,v,T,R,$=class{static{ze(this,"ProgressType")}constructor(){}};e.ProgressType=$,function(e){function t(e){return a.func(e)}ze(t,"is"),e.is=t}(u||(u={})),e.NullLogger=Object.freeze({error:ze(()=>{},"error"),warn:ze(()=>{},"warn"),info:ze(()=>{},"info"),log:ze(()=>{},"log")}),(p=d||(e.Trace=d={}))[p.Off=0]="Off",p[p.Messages=1]="Messages",p[p.Compact=2]="Compact",p[p.Verbose=3]="Verbose",(h=f||(e.TraceValues=f={})).Off="off",h.Messages="messages",h.Compact="compact",h.Verbose="verbose",function(e){function t(t){if(!a.string(t))return e.Off;switch(t=t.toLowerCase()){case"off":default:return e.Off;case"messages":return e.Messages;case"compact":return e.Compact;case"verbose":return e.Verbose}}function r(t){switch(t){case e.Off:return"off";case e.Messages:return"messages";case e.Compact:return"compact";case e.Verbose:return"verbose";default:return"off"}}ze(t,"fromString"),e.fromString=t,ze(r,"toString"),e.toString=r}(d||(e.Trace=d={})),(g=m||(e.TraceFormat=m={})).Text="text",g.JSON="json",function(e){function t(t){return a.string(t)&&"json"===(t=t.toLowerCase())?e.JSON:e.Text}ze(t,"fromString"),e.fromString=t}(m||(e.TraceFormat=m={})),(y||(e.SetTraceNotification=y={})).type=new s.NotificationType("$/setTrace"),(v||(e.LogTraceNotification=v={})).type=new s.NotificationType("$/logTrace"),(R=T||(e.ConnectionErrors=T={}))[R.Closed=1]="Closed",R[R.Disposed=2]="Disposed",R[R.AlreadyListening=3]="AlreadyListening";var b,E,C,A,k,S,w,x,N,I,_=class e extends Error{static{ze(this,"ConnectionError")}constructor(t,r){super(r),this.code=t,Object.setPrototypeOf(this,e.prototype)}};function P(p,f,h,g){const R=void 0!==h?h:e.NullLogger;let $=0,b=0,C=0;const A="2.0";let k;const x=new Map;let I;const P=new Map,D=new Map;let O,L,M=new o.LinkedMap,j=new Map,F=new Set,z=new Map,K=d.Off,G=m.Text,q=N.New;const U=new l.Emitter,W=new l.Emitter,B=new l.Emitter,V=new l.Emitter,H=new l.Emitter,Y=g&&g.cancellationStrategy?g.cancellationStrategy:S.Message;function J(e){if(null===e)throw new Error("Can't send requests with id null since the response can't be correlated.");return"req-"+e.toString()}function X(e){return null===e?"res-unknown-"+(++C).toString():"res-"+e.toString()}function Q(){return"not-"+(++b).toString()}function Z(e,t){s.Message.isRequest(t)?e.set(J(t.id),t):s.Message.isResponse(t)?e.set(X(t.id),t):e.set(Q(),t)}function ee(e){}function te(){return q===N.Listening}function re(){return q===N.Closed}function ne(){return q===N.Disposed}function ie(){q!==N.New&&q!==N.Listening||(q=N.Closed,W.fire(void 0))}function ae(e){U.fire([e,void 0,void 0])}function se(e){U.fire(e)}function oe(){O||0===M.size||(O=(0,i.default)().timer.setImmediate(()=>{O=void 0,ce()}))}function le(e){s.Message.isRequest(e)?de(e):s.Message.isNotification(e)?fe(e):s.Message.isResponse(e)?pe(e):he(e)}function ce(){if(0===M.size)return;const e=M.shift();try{const t=g?.messageStrategy;w.is(t)?t.handleMessage(e,le):le(e)}finally{oe()}}ze(J,"createRequestQueueKey"),ze(X,"createResponseQueueKey"),ze(Q,"createNotificationQueueKey"),ze(Z,"addMessageToQueue"),ze(ee,"cancelUndispatched"),ze(te,"isListening"),ze(re,"isClosed"),ze(ne,"isDisposed"),ze(ie,"closeHandler"),ze(ae,"readErrorHandler"),ze(se,"writeErrorHandler"),p.onClose(ie),p.onError(ae),f.onClose(ie),f.onError(se),ze(oe,"triggerMessageQueue"),ze(le,"handleMessage"),ze(ce,"processMessageQueue");const ue=ze(e=>{try{if(s.Message.isNotification(e)&&e.method===t.type.method){const t=e.params.id,r=J(t),n=M.get(r);if(s.Message.isRequest(n)){const i=g?.connectionStrategy,a=i&&i.cancelUndispatched?i.cancelUndispatched(n,ee):void 0;if(a&&(void 0!==a.error||void 0!==a.result))return M.delete(r),z.delete(t),a.id=n.id,ve(a,e.method,Date.now()),void f.write(a).catch(()=>R.error("Sending response for canceled message failed."))}const i=z.get(t);if(void 0!==i)return i.cancel(),void Re(e);F.add(t)}Z(M,e)}finally{oe()}},"callback");function de(e){if(ne())return;function t(t,r,n){const i={jsonrpc:A,id:e.id};t instanceof s.ResponseError?i.error=t.toJson():i.result=void 0===t?null:t,ve(i,r,n),f.write(i).catch(()=>R.error("Sending response failed."))}function r(t,r,n){const i={jsonrpc:A,id:e.id,error:t.toJson()};ve(i,r,n),f.write(i).catch(()=>R.error("Sending response failed."))}function n(t,r,n){void 0===t&&(t=null);const i={jsonrpc:A,id:e.id,result:t};ve(i,r,n),f.write(i).catch(()=>R.error("Sending response failed."))}ze(t,"reply"),ze(r,"replyError"),ze(n,"replySuccess"),Te(e);const i=x.get(e.method);let o,l;i&&(o=i.type,l=i.handler);const c=Date.now();if(l||k){const i=e.id??String(Date.now()),d=E.is(Y.receiver)?Y.receiver.createCancellationTokenSource(i):Y.receiver.createCancellationTokenSource(e);null!==e.id&&F.has(e.id)&&d.cancel(),null!==e.id&&z.set(i,d);try{let u;if(l)if(void 0===e.params){if(void 0!==o&&0!==o.numberOfParams)return void r(new s.ResponseError(s.ErrorCodes.InvalidParams,`Request ${e.method} defines ${o.numberOfParams} params but received none.`),e.method,c);u=l(d.token)}else if(Array.isArray(e.params)){if(void 0!==o&&o.parameterStructures===s.ParameterStructures.byName)return void r(new s.ResponseError(s.ErrorCodes.InvalidParams,`Request ${e.method} defines parameters by name but received parameters by position`),e.method,c);u=l(...e.params,d.token)}else{if(void 0!==o&&o.parameterStructures===s.ParameterStructures.byPosition)return void r(new s.ResponseError(s.ErrorCodes.InvalidParams,`Request ${e.method} defines parameters by position but received parameters by name`),e.method,c);u=l(e.params,d.token)}else k&&(u=k(e.method,e.params,d.token));const p=u;u?p.then?p.then(r=>{z.delete(i),t(r,e.method,c)},t=>{z.delete(i),t instanceof s.ResponseError?r(t,e.method,c):t&&a.string(t.message)?r(new s.ResponseError(s.ErrorCodes.InternalError,`Request ${e.method} failed with message: ${t.message}`),e.method,c):r(new s.ResponseError(s.ErrorCodes.InternalError,`Request ${e.method} failed unexpectedly without providing any details.`),e.method,c)}):(z.delete(i),t(u,e.method,c)):(z.delete(i),n(u,e.method,c))}catch(u){z.delete(i),u instanceof s.ResponseError?t(u,e.method,c):u&&a.string(u.message)?r(new s.ResponseError(s.ErrorCodes.InternalError,`Request ${e.method} failed with message: ${u.message}`),e.method,c):r(new s.ResponseError(s.ErrorCodes.InternalError,`Request ${e.method} failed unexpectedly without providing any details.`),e.method,c)}}else r(new s.ResponseError(s.ErrorCodes.MethodNotFound,`Unhandled method ${e.method}`),e.method,c)}function pe(e){if(!ne())if(null===e.id)e.error?R.error(`Received response message without id: Error is: \n${JSON.stringify(e.error,void 0,4)}`):R.error("Received response message without id. No further error information provided.");else{const r=e.id,n=j.get(r);if($e(e,n),void 0!==n){j.delete(r);try{if(e.error){const t=e.error;n.reject(new s.ResponseError(t.code,t.message,t.data))}else{if(void 0===e.result)throw new Error("Should never happen.");n.resolve(e.result)}}catch(t){t.message?R.error(`Response handler '${n.method}' failed with message: ${t.message}`):R.error(`Response handler '${n.method}' failed unexpectedly.`)}}}}function fe(e){if(ne())return;let i,a;if(e.method===t.type.method){const t=e.params.id;return F.delete(t),void Re(e)}{const t=P.get(e.method);t&&(a=t.handler,i=t.type)}if(a||I)try{if(Re(e),a)if(void 0===e.params)void 0!==i&&0!==i.numberOfParams&&i.parameterStructures!==s.ParameterStructures.byName&&R.error(`Notification ${e.method} defines ${i.numberOfParams} params but received none.`),a();else if(Array.isArray(e.params)){const t=e.params;e.method===n.type.method&&2===t.length&&r.is(t[0])?a({token:t[0],value:t[1]}):(void 0!==i&&(i.parameterStructures===s.ParameterStructures.byName&&R.error(`Notification ${e.method} defines parameters by name but received parameters by position`),i.numberOfParams!==e.params.length&&R.error(`Notification ${e.method} defines ${i.numberOfParams} params but received ${t.length} arguments`)),a(...t))}else void 0!==i&&i.parameterStructures===s.ParameterStructures.byPosition&&R.error(`Notification ${e.method} defines parameters by position but received parameters by name`),a(e.params);else I&&I(e.method,e.params)}catch(o){o.message?R.error(`Notification handler '${e.method}' failed with message: ${o.message}`):R.error(`Notification handler '${e.method}' failed unexpectedly.`)}else B.fire(e)}function he(e){if(!e)return void R.error("Received empty message.");R.error(`Received message which is neither a response nor a notification message:\n${JSON.stringify(e,null,4)}`);const t=e;if(a.string(t.id)||a.number(t.id)){const e=t.id,r=j.get(e);r&&r.reject(new Error("The received response has neither a result nor an error property."))}}function me(e){if(null!=e)switch(K){case d.Verbose:return JSON.stringify(e,null,4);case d.Compact:return JSON.stringify(e);default:return}}function ge(e){if(K!==d.Off&&L)if(G===m.Text){let t;K!==d.Verbose&&K!==d.Compact||!e.params||(t=`Params: ${me(e.params)}\n\n`),L.log(`Sending request '${e.method} - (${e.id})'.`,t)}else be("send-request",e)}function ye(e){if(K!==d.Off&&L)if(G===m.Text){let t;K!==d.Verbose&&K!==d.Compact||(t=e.params?`Params: ${me(e.params)}\n\n`:"No parameters provided.\n\n"),L.log(`Sending notification '${e.method}'.`,t)}else be("send-notification",e)}function ve(e,t,r){if(K!==d.Off&&L)if(G===m.Text){let n;K!==d.Verbose&&K!==d.Compact||(e.error&&e.error.data?n=`Error data: ${me(e.error.data)}\n\n`:e.result?n=`Result: ${me(e.result)}\n\n`:void 0===e.error&&(n="No result returned.\n\n")),L.log(`Sending response '${t} - (${e.id})'. Processing request took ${Date.now()-r}ms`,n)}else be("send-response",e)}function Te(e){if(K!==d.Off&&L)if(G===m.Text){let t;K!==d.Verbose&&K!==d.Compact||!e.params||(t=`Params: ${me(e.params)}\n\n`),L.log(`Received request '${e.method} - (${e.id})'.`,t)}else be("receive-request",e)}function Re(e){if(K!==d.Off&&L&&e.method!==v.type.method)if(G===m.Text){let t;K!==d.Verbose&&K!==d.Compact||(t=e.params?`Params: ${me(e.params)}\n\n`:"No parameters provided.\n\n"),L.log(`Received notification '${e.method}'.`,t)}else be("receive-notification",e)}function $e(e,t){if(K!==d.Off&&L)if(G===m.Text){let r;if(K!==d.Verbose&&K!==d.Compact||(e.error&&e.error.data?r=`Error data: ${me(e.error.data)}\n\n`:e.result?r=`Result: ${me(e.result)}\n\n`:void 0===e.error&&(r="No result returned.\n\n")),t){const n=e.error?` Request failed: ${e.error.message} (${e.error.code}).`:"";L.log(`Received response '${t.method} - (${e.id})' in ${Date.now()-t.timerStart}ms.${n}`,r)}else L.log(`Received response ${e.id} without active response promise.`,r)}else be("receive-response",e)}function be(e,t){if(!L||K===d.Off)return;const r={isLSPMessage:!0,type:e,message:t,timestamp:Date.now()};L.log(r)}function Ee(){if(re())throw new _(T.Closed,"Connection is closed.");if(ne())throw new _(T.Disposed,"Connection is disposed.")}function Ce(){if(te())throw new _(T.AlreadyListening,"Connection is already listening")}function Ae(){if(!te())throw new Error("Call listen() first.")}function ke(e){return void 0===e?null:e}function Se(e){return null===e?void 0:e}function we(e){return null!=e&&!Array.isArray(e)&&"object"==typeof e}function xe(e,t){switch(e){case s.ParameterStructures.auto:return we(t)?Se(t):[ke(t)];case s.ParameterStructures.byName:if(!we(t))throw new Error("Received parameters by name but param is not an object literal.");return Se(t);case s.ParameterStructures.byPosition:return[ke(t)];default:throw new Error(`Unknown parameter structure ${e.toString()}`)}}function Ne(e,t){let r;const n=e.numberOfParams;switch(n){case 0:r=void 0;break;case 1:r=xe(e.parameterStructures,t[0]);break;default:r=[];for(let e=0;e<t.length&&e<n;e++)r.push(ke(t[e]));if(t.length<n)for(let e=t.length;e<n;e++)r.push(null)}return r}ze(de,"handleRequest"),ze(pe,"handleResponse"),ze(fe,"handleNotification"),ze(he,"handleInvalidMessage"),ze(me,"stringifyTrace"),ze(ge,"traceSendingRequest"),ze(ye,"traceSendingNotification"),ze(ve,"traceSendingResponse"),ze(Te,"traceReceivedRequest"),ze(Re,"traceReceivedNotification"),ze($e,"traceReceivedResponse"),ze(be,"logLSPMessage"),ze(Ee,"throwIfClosedOrDisposed"),ze(Ce,"throwIfListening"),ze(Ae,"throwIfNotListening"),ze(ke,"undefinedToNull"),ze(Se,"nullToUndefined"),ze(we,"isNamedParam"),ze(xe,"computeSingleParam"),ze(Ne,"computeMessageParams");const Ie={sendNotification:ze((e,...t)=>{let r,n;if(Ee(),a.string(e)){r=e;const i=t[0];let a=0,o=s.ParameterStructures.auto;s.ParameterStructures.is(i)&&(a=1,o=i);let l=t.length;const c=l-a;switch(c){case 0:n=void 0;break;case 1:n=xe(o,t[a]);break;default:if(o===s.ParameterStructures.byName)throw new Error(`Received ${c} parameters for 'by Name' notification parameter structure.`);n=t.slice(a,l).map(e=>ke(e))}}else{const i=t;r=e.method,n=Ne(e,i)}const i={jsonrpc:A,method:r,params:n};return ye(i),f.write(i).catch(e=>{throw R.error("Sending notification failed."),e})},"sendNotification"),onNotification:ze((e,t)=>{let r;return Ee(),a.func(e)?I=e:t&&(a.string(e)?(r=e,P.set(e,{type:void 0,handler:t})):(r=e.method,P.set(e.method,{type:e,handler:t}))),{dispose:ze(()=>{void 0!==r?P.delete(r):I=void 0},"dispose")}},"onNotification"),onProgress:ze((e,t,r)=>{if(D.has(t))throw new Error(`Progress handler for token ${t} already registered`);return D.set(t,r),{dispose:ze(()=>{D.delete(t)},"dispose")}},"onProgress"),sendProgress:ze((e,t,r)=>Ie.sendNotification(n.type,{token:t,value:r}),"sendProgress"),onUnhandledProgress:V.event,sendRequest:ze((e,...t)=>{let r,n,i;if(Ee(),Ae(),a.string(e)){r=e;const a=t[0],o=t[t.length-1];let l=0,u=s.ParameterStructures.auto;s.ParameterStructures.is(a)&&(l=1,u=a);let d=t.length;c.CancellationToken.is(o)&&(d-=1,i=o);const p=d-l;switch(p){case 0:n=void 0;break;case 1:n=xe(u,t[l]);break;default:if(u===s.ParameterStructures.byName)throw new Error(`Received ${p} parameters for 'by Name' request parameter structure.`);n=t.slice(l,d).map(e=>ke(e))}}else{const a=t;r=e.method,n=Ne(e,a);const s=e.numberOfParams;i=c.CancellationToken.is(a[s])?a[s]:void 0}const o=$++;let l;i&&(l=i.onCancellationRequested(()=>{const e=Y.sender.sendCancellation(Ie,o);return void 0===e?(R.log(`Received no promise from cancellation strategy when cancelling id ${o}`),Promise.resolve()):e.catch(()=>{R.log(`Sending cancellation messages for id ${o} failed`)})}));const u={jsonrpc:A,id:o,method:r,params:n};return ge(u),"function"==typeof Y.sender.enableCancellation&&Y.sender.enableCancellation(u),new Promise(async(e,t)=>{const n=ze(t=>{e(t),Y.sender.cleanup(o),l?.dispose()},"resolveWithCleanup"),i=ze(e=>{t(e),Y.sender.cleanup(o),l?.dispose()},"rejectWithCleanup"),a={method:r,timerStart:Date.now(),resolve:n,reject:i};try{await f.write(u),j.set(o,a)}catch(c){throw R.error("Sending request failed."),a.reject(new s.ResponseError(s.ErrorCodes.MessageWriteError,c.message?c.message:"Unknown reason")),c}})},"sendRequest"),onRequest:ze((e,t)=>{Ee();let r=null;return u.is(e)?(r=void 0,k=e):a.string(e)?(r=null,void 0!==t&&(r=e,x.set(e,{handler:t,type:void 0}))):void 0!==t&&(r=e.method,x.set(e.method,{type:e,handler:t})),{dispose:ze(()=>{null!==r&&(void 0!==r?x.delete(r):k=void 0)},"dispose")}},"onRequest"),hasPendingResponse:ze(()=>j.size>0,"hasPendingResponse"),trace:ze(async(e,t,r)=>{let n=!1,i=m.Text;void 0!==r&&(a.boolean(r)?n=r:(n=r.sendNotification||!1,i=r.traceFormat||m.Text)),K=e,G=i,L=K===d.Off?void 0:t,!n||re()||ne()||await Ie.sendNotification(y.type,{value:d.toString(e)})},"trace"),onError:U.event,onClose:W.event,onUnhandledNotification:B.event,onDispose:H.event,end:ze(()=>{f.end()},"end"),dispose:ze(()=>{if(ne())return;q=N.Disposed,H.fire(void 0);const e=new s.ResponseError(s.ErrorCodes.PendingResponseRejected,"Pending response rejected since connection got disposed");for(const t of j.values())t.reject(e);j=new Map,z=new Map,F=new Set,M=new o.LinkedMap,a.func(f.dispose)&&f.dispose(),a.func(p.dispose)&&p.dispose()},"dispose"),listen:ze(()=>{Ee(),Ce(),q=N.Listening,p.listen(ue)},"listen"),inspect:ze(()=>{(0,i.default)().console.log("inspect")},"inspect")};return Ie.onNotification(v.type,e=>{if(K===d.Off||!L)return;const t=K===d.Verbose||K===d.Compact;L.log(e.message,t?e.verbose:void 0)}),Ie.onNotification(n.type,e=>{const t=D.get(e.token);t?t(e.value):V.fire(e)}),Ie}e.ConnectionError=_,function(e){function t(e){const t=e;return t&&a.func(t.cancelUndispatched)}ze(t,"is"),e.is=t}(b||(e.ConnectionStrategy=b={})),function(e){function t(e){const t=e;return t&&(void 0===t.kind||"id"===t.kind)&&a.func(t.createCancellationTokenSource)&&(void 0===t.dispose||a.func(t.dispose))}ze(t,"is"),e.is=t}(E||(e.IdCancellationReceiverStrategy=E={})),function(e){function t(e){const t=e;return t&&"request"===t.kind&&a.func(t.createCancellationTokenSource)&&(void 0===t.dispose||a.func(t.dispose))}ze(t,"is"),e.is=t}(C||(e.RequestCancellationReceiverStrategy=C={})),function(e){function t(e){return E.is(e)||C.is(e)}e.Message=Object.freeze({createCancellationTokenSource:e=>new c.CancellationTokenSource}),ze(t,"is"),e.is=t}(A||(e.CancellationReceiverStrategy=A={})),function(e){function r(e){const t=e;return t&&a.func(t.sendCancellation)&&a.func(t.cleanup)}e.Message=Object.freeze({sendCancellation:(e,r)=>e.sendNotification(t.type,{id:r}),cleanup(e){}}),ze(r,"is"),e.is=r}(k||(e.CancellationSenderStrategy=k={})),function(e){function t(e){const t=e;return t&&A.is(t.receiver)&&k.is(t.sender)}e.Message=Object.freeze({receiver:A.Message,sender:k.Message}),ze(t,"is"),e.is=t}(S||(e.CancellationStrategy=S={})),function(e){function t(e){const t=e;return t&&a.func(t.handleMessage)}ze(t,"is"),e.is=t}(w||(e.MessageStrategy=w={})),function(e){function t(e){const t=e;return t&&(S.is(t.cancellationStrategy)||b.is(t.connectionStrategy)||w.is(t.messageStrategy))}ze(t,"is"),e.is=t}(x||(e.ConnectionOptions=x={})),(I=N||(N={}))[I.New=1]="New",I[I.Listening=2]="Listening",I[I.Closed=3]="Closed",I[I.Disposed=4]="Disposed",ze(P,"createMessageConnection"),e.createMessageConnection=P}}),ut=Ke({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/api.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ProgressType=e.ProgressToken=e.createMessageConnection=e.NullLogger=e.ConnectionOptions=e.ConnectionStrategy=e.AbstractMessageBuffer=e.WriteableStreamMessageWriter=e.AbstractMessageWriter=e.MessageWriter=e.ReadableStreamMessageReader=e.AbstractMessageReader=e.MessageReader=e.SharedArrayReceiverStrategy=e.SharedArraySenderStrategy=e.CancellationToken=e.CancellationTokenSource=e.Emitter=e.Event=e.Disposable=e.LRUCache=e.Touch=e.LinkedMap=e.ParameterStructures=e.NotificationType9=e.NotificationType8=e.NotificationType7=e.NotificationType6=e.NotificationType5=e.NotificationType4=e.NotificationType3=e.NotificationType2=e.NotificationType1=e.NotificationType0=e.NotificationType=e.ErrorCodes=e.ResponseError=e.RequestType9=e.RequestType8=e.RequestType7=e.RequestType6=e.RequestType5=e.RequestType4=e.RequestType3=e.RequestType2=e.RequestType1=e.RequestType0=e.RequestType=e.Message=e.RAL=void 0,e.MessageStrategy=e.CancellationStrategy=e.CancellationSenderStrategy=e.CancellationReceiverStrategy=e.ConnectionError=e.ConnectionErrors=e.LogTraceNotification=e.SetTraceNotification=e.TraceFormat=e.TraceValues=e.Trace=void 0;var t=tt();Object.defineProperty(e,"Message",{enumerable:!0,get:ze(function(){return t.Message},"get")}),Object.defineProperty(e,"RequestType",{enumerable:!0,get:ze(function(){return t.RequestType},"get")}),Object.defineProperty(e,"RequestType0",{enumerable:!0,get:ze(function(){return t.RequestType0},"get")}),Object.defineProperty(e,"RequestType1",{enumerable:!0,get:ze(function(){return t.RequestType1},"get")}),Object.defineProperty(e,"RequestType2",{enumerable:!0,get:ze(function(){return t.RequestType2},"get")}),Object.defineProperty(e,"RequestType3",{enumerable:!0,get:ze(function(){return t.RequestType3},"get")}),Object.defineProperty(e,"RequestType4",{enumerable:!0,get:ze(function(){return t.RequestType4},"get")}),Object.defineProperty(e,"RequestType5",{enumerable:!0,get:ze(function(){return t.RequestType5},"get")}),Object.defineProperty(e,"RequestType6",{enumerable:!0,get:ze(function(){return t.RequestType6},"get")}),Object.defineProperty(e,"RequestType7",{enumerable:!0,get:ze(function(){return t.RequestType7},"get")}),Object.defineProperty(e,"RequestType8",{enumerable:!0,get:ze(function(){return t.RequestType8},"get")}),Object.defineProperty(e,"RequestType9",{enumerable:!0,get:ze(function(){return t.RequestType9},"get")}),Object.defineProperty(e,"ResponseError",{enumerable:!0,get:ze(function(){return t.ResponseError},"get")}),Object.defineProperty(e,"ErrorCodes",{enumerable:!0,get:ze(function(){return t.ErrorCodes},"get")}),Object.defineProperty(e,"NotificationType",{enumerable:!0,get:ze(function(){return t.NotificationType},"get")}),Object.defineProperty(e,"NotificationType0",{enumerable:!0,get:ze(function(){return t.NotificationType0},"get")}),Object.defineProperty(e,"NotificationType1",{enumerable:!0,get:ze(function(){return t.NotificationType1},"get")}),Object.defineProperty(e,"NotificationType2",{enumerable:!0,get:ze(function(){return t.NotificationType2},"get")}),Object.defineProperty(e,"NotificationType3",{enumerable:!0,get:ze(function(){return t.NotificationType3},"get")}),Object.defineProperty(e,"NotificationType4",{enumerable:!0,get:ze(function(){return t.NotificationType4},"get")}),Object.defineProperty(e,"NotificationType5",{enumerable:!0,get:ze(function(){return t.NotificationType5},"get")}),Object.defineProperty(e,"NotificationType6",{enumerable:!0,get:ze(function(){return t.NotificationType6},"get")}),Object.defineProperty(e,"NotificationType7",{enumerable:!0,get:ze(function(){return t.NotificationType7},"get")}),Object.defineProperty(e,"NotificationType8",{enumerable:!0,get:ze(function(){return t.NotificationType8},"get")}),Object.defineProperty(e,"NotificationType9",{enumerable:!0,get:ze(function(){return t.NotificationType9},"get")}),Object.defineProperty(e,"ParameterStructures",{enumerable:!0,get:ze(function(){return t.ParameterStructures},"get")});var r=rt();Object.defineProperty(e,"LinkedMap",{enumerable:!0,get:ze(function(){return r.LinkedMap},"get")}),Object.defineProperty(e,"LRUCache",{enumerable:!0,get:ze(function(){return r.LRUCache},"get")}),Object.defineProperty(e,"Touch",{enumerable:!0,get:ze(function(){return r.Touch},"get")});var n=nt();Object.defineProperty(e,"Disposable",{enumerable:!0,get:ze(function(){return n.Disposable},"get")});var i=Ze();Object.defineProperty(e,"Event",{enumerable:!0,get:ze(function(){return i.Event},"get")}),Object.defineProperty(e,"Emitter",{enumerable:!0,get:ze(function(){return i.Emitter},"get")});var a=et();Object.defineProperty(e,"CancellationTokenSource",{enumerable:!0,get:ze(function(){return a.CancellationTokenSource},"get")}),Object.defineProperty(e,"CancellationToken",{enumerable:!0,get:ze(function(){return a.CancellationToken},"get")});var s=it();Object.defineProperty(e,"SharedArraySenderStrategy",{enumerable:!0,get:ze(function(){return s.SharedArraySenderStrategy},"get")}),Object.defineProperty(e,"SharedArrayReceiverStrategy",{enumerable:!0,get:ze(function(){return s.SharedArrayReceiverStrategy},"get")});var o=st();Object.defineProperty(e,"MessageReader",{enumerable:!0,get:ze(function(){return o.MessageReader},"get")}),Object.defineProperty(e,"AbstractMessageReader",{enumerable:!0,get:ze(function(){return o.AbstractMessageReader},"get")}),Object.defineProperty(e,"ReadableStreamMessageReader",{enumerable:!0,get:ze(function(){return o.ReadableStreamMessageReader},"get")});var l=ot();Object.defineProperty(e,"MessageWriter",{enumerable:!0,get:ze(function(){return l.MessageWriter},"get")}),Object.defineProperty(e,"AbstractMessageWriter",{enumerable:!0,get:ze(function(){return l.AbstractMessageWriter},"get")}),Object.defineProperty(e,"WriteableStreamMessageWriter",{enumerable:!0,get:ze(function(){return l.WriteableStreamMessageWriter},"get")});var c=lt();Object.defineProperty(e,"AbstractMessageBuffer",{enumerable:!0,get:ze(function(){return c.AbstractMessageBuffer},"get")});var u=ct();Object.defineProperty(e,"ConnectionStrategy",{enumerable:!0,get:ze(function(){return u.ConnectionStrategy},"get")}),Object.defineProperty(e,"ConnectionOptions",{enumerable:!0,get:ze(function(){return u.ConnectionOptions},"get")}),Object.defineProperty(e,"NullLogger",{enumerable:!0,get:ze(function(){return u.NullLogger},"get")}),Object.defineProperty(e,"createMessageConnection",{enumerable:!0,get:ze(function(){return u.createMessageConnection},"get")}),Object.defineProperty(e,"ProgressToken",{enumerable:!0,get:ze(function(){return u.ProgressToken},"get")}),Object.defineProperty(e,"ProgressType",{enumerable:!0,get:ze(function(){return u.ProgressType},"get")}),Object.defineProperty(e,"Trace",{enumerable:!0,get:ze(function(){return u.Trace},"get")}),Object.defineProperty(e,"TraceValues",{enumerable:!0,get:ze(function(){return u.TraceValues},"get")}),Object.defineProperty(e,"TraceFormat",{enumerable:!0,get:ze(function(){return u.TraceFormat},"get")}),Object.defineProperty(e,"SetTraceNotification",{enumerable:!0,get:ze(function(){return u.SetTraceNotification},"get")}),Object.defineProperty(e,"LogTraceNotification",{enumerable:!0,get:ze(function(){return u.LogTraceNotification},"get")}),Object.defineProperty(e,"ConnectionErrors",{enumerable:!0,get:ze(function(){return u.ConnectionErrors},"get")}),Object.defineProperty(e,"ConnectionError",{enumerable:!0,get:ze(function(){return u.ConnectionError},"get")}),Object.defineProperty(e,"CancellationReceiverStrategy",{enumerable:!0,get:ze(function(){return u.CancellationReceiverStrategy},"get")}),Object.defineProperty(e,"CancellationSenderStrategy",{enumerable:!0,get:ze(function(){return u.CancellationSenderStrategy},"get")}),Object.defineProperty(e,"CancellationStrategy",{enumerable:!0,get:ze(function(){return u.CancellationStrategy},"get")}),Object.defineProperty(e,"MessageStrategy",{enumerable:!0,get:ze(function(){return u.MessageStrategy},"get")});var d=Xe();e.RAL=d.default}}),dt=Ke({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/browser/ril.js"(e){Object.defineProperty(e,"__esModule",{value:!0});var t=ut(),r=class e extends t.AbstractMessageBuffer{static{ze(this,"MessageBuffer")}constructor(e="utf-8"){super(e),this.asciiDecoder=new TextDecoder("ascii")}emptyBuffer(){return e.emptyBuffer}fromString(e,t){return(new TextEncoder).encode(e)}toString(e,t){return"ascii"===t?this.asciiDecoder.decode(e):new TextDecoder(t).decode(e)}asNative(e,t){return void 0===t?e:e.slice(0,t)}allocNative(e){return new Uint8Array(e)}};r.emptyBuffer=new Uint8Array(0);var n=class{static{ze(this,"ReadableStreamWrapper")}constructor(e){this.socket=e,this._onData=new t.Emitter,this._messageListener=e=>{e.data.arrayBuffer().then(e=>{this._onData.fire(new Uint8Array(e))},()=>{(0,t.RAL)().console.error("Converting blob to array buffer failed.")})},this.socket.addEventListener("message",this._messageListener)}onClose(e){return this.socket.addEventListener("close",e),t.Disposable.create(()=>this.socket.removeEventListener("close",e))}onError(e){return this.socket.addEventListener("error",e),t.Disposable.create(()=>this.socket.removeEventListener("error",e))}onEnd(e){return this.socket.addEventListener("end",e),t.Disposable.create(()=>this.socket.removeEventListener("end",e))}onData(e){return this._onData.event(e)}},i=class{static{ze(this,"WritableStreamWrapper")}constructor(e){this.socket=e}onClose(e){return this.socket.addEventListener("close",e),t.Disposable.create(()=>this.socket.removeEventListener("close",e))}onError(e){return this.socket.addEventListener("error",e),t.Disposable.create(()=>this.socket.removeEventListener("error",e))}onEnd(e){return this.socket.addEventListener("end",e),t.Disposable.create(()=>this.socket.removeEventListener("end",e))}write(e,t){if("string"==typeof e){if(void 0!==t&&"utf-8"!==t)throw new Error(`In a Browser environments only utf-8 text encoding is supported. But got encoding: ${t}`);this.socket.send(e)}else this.socket.send(e);return Promise.resolve()}end(){this.socket.close()}},a=new TextEncoder,s=Object.freeze({messageBuffer:Object.freeze({create:ze(e=>new r(e),"create")}),applicationJson:Object.freeze({encoder:Object.freeze({name:"application/json",encode:ze((e,t)=>{if("utf-8"!==t.charset)throw new Error(`In a Browser environments only utf-8 text encoding is supported. But got encoding: ${t.charset}`);return Promise.resolve(a.encode(JSON.stringify(e,void 0,0)))},"encode")}),decoder:Object.freeze({name:"application/json",decode:ze((e,t)=>{if(!(e instanceof Uint8Array))throw new Error("In a Browser environments only Uint8Arrays are supported.");return Promise.resolve(JSON.parse(new TextDecoder(t.charset).decode(e)))},"decode")})}),stream:Object.freeze({asReadableStream:ze(e=>new n(e),"asReadableStream"),asWritableStream:ze(e=>new i(e),"asWritableStream")}),console:console,timer:Object.freeze({setTimeout(e,t,...r){const n=setTimeout(e,t,...r);return{dispose:ze(()=>clearTimeout(n),"dispose")}},setImmediate(e,...t){const r=setTimeout(e,0,...t);return{dispose:ze(()=>clearTimeout(r),"dispose")}},setInterval(e,t,...r){const n=setInterval(e,t,...r);return{dispose:ze(()=>clearInterval(n),"dispose")}}})});function o(){return s}ze(o,"RIL"),function(e){function r(){t.RAL.install(s)}ze(r,"install"),e.install=r}(o||(o={})),e.default=o}}),pt=Ke({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/browser/main.js"(e){var t=e&&e.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:ze(function(){return t[r]},"get")}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),r=e&&e.__exportStar||function(e,r){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(r,n)||t(r,e,n)};Object.defineProperty(e,"__esModule",{value:!0}),e.createMessageConnection=e.BrowserMessageWriter=e.BrowserMessageReader=void 0,dt().default.install();var n=ut();r(ut(),e);var i=class extends n.AbstractMessageReader{static{ze(this,"BrowserMessageReader")}constructor(e){super(),this._onData=new n.Emitter,this._messageListener=e=>{this._onData.fire(e.data)},e.addEventListener("error",e=>this.fireError(e)),e.onmessage=this._messageListener}listen(e){return this._onData.event(e)}};e.BrowserMessageReader=i;var a=class extends n.AbstractMessageWriter{static{ze(this,"BrowserMessageWriter")}constructor(e){super(),this.port=e,this.errorCount=0,e.addEventListener("error",e=>this.fireError(e))}write(e){try{return this.port.postMessage(e),Promise.resolve()}catch(t){return this.handleError(t,e),Promise.reject(t)}}handleError(e,t){this.errorCount++,this.fireError(e,t,this.errorCount)}end(){}};function s(e,t,r,i){return void 0===r&&(r=n.NullLogger),n.ConnectionStrategy.is(i)&&(i={connectionStrategy:i}),(0,n.createMessageConnection)(e,t,r,i)}e.BrowserMessageWriter=a,ze(s,"createMessageConnection"),e.createMessageConnection=s}}),ft=Ke({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/browser.js"(e,t){t.exports=pt()}}),ht=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/messages.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ProtocolNotificationType=e.ProtocolNotificationType0=e.ProtocolRequestType=e.ProtocolRequestType0=e.RegistrationType=e.MessageDirection=void 0;var t,r,n=pt();(r=t||(e.MessageDirection=t={})).clientToServer="clientToServer",r.serverToClient="serverToClient",r.both="both";var i=class{static{ze(this,"RegistrationType")}constructor(e){this.method=e}};e.RegistrationType=i;var a=class extends n.RequestType0{static{ze(this,"ProtocolRequestType0")}constructor(e){super(e)}};e.ProtocolRequestType0=a;var s=class extends n.RequestType{static{ze(this,"ProtocolRequestType")}constructor(e){super(e,n.ParameterStructures.byName)}};e.ProtocolRequestType=s;var o=class extends n.NotificationType0{static{ze(this,"ProtocolNotificationType0")}constructor(e){super(e)}};e.ProtocolNotificationType0=o;var l=class extends n.NotificationType{static{ze(this,"ProtocolNotificationType")}constructor(e){super(e,n.ParameterStructures.byName)}};e.ProtocolNotificationType=l}}),mt=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/utils/is.js"(e){function t(e){return!0===e||!1===e}function r(e){return"string"==typeof e||e instanceof String}function n(e){return"number"==typeof e||e instanceof Number}function i(e){return e instanceof Error}function a(e){return"function"==typeof e}function s(e){return Array.isArray(e)}function o(e){return s(e)&&e.every(e=>r(e))}function l(e,t){return Array.isArray(e)&&e.every(t)}function c(e){return null!==e&&"object"==typeof e}Object.defineProperty(e,"__esModule",{value:!0}),e.objectLiteral=e.typedArray=e.stringArray=e.array=e.func=e.error=e.number=e.string=e.boolean=void 0,ze(t,"boolean"),e.boolean=t,ze(r,"string"),e.string=r,ze(n,"number"),e.number=n,ze(i,"error"),e.error=i,ze(a,"func"),e.func=a,ze(s,"array"),e.array=s,ze(o,"stringArray"),e.stringArray=o,ze(l,"typedArray"),e.typedArray=l,ze(c,"objectLiteral"),e.objectLiteral=c}}),gt=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ImplementationRequest=void 0;var t,r,n=ht();(r=t||(e.ImplementationRequest=t={})).method="textDocument/implementation",r.messageDirection=n.MessageDirection.clientToServer,r.type=new n.ProtocolRequestType(r.method)}}),yt=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.TypeDefinitionRequest=void 0;var t,r,n=ht();(r=t||(e.TypeDefinitionRequest=t={})).method="textDocument/typeDefinition",r.messageDirection=n.MessageDirection.clientToServer,r.type=new n.ProtocolRequestType(r.method)}}),vt=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolder.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DidChangeWorkspaceFoldersNotification=e.WorkspaceFoldersRequest=void 0;var t,r,n,i,a=ht();(r=t||(e.WorkspaceFoldersRequest=t={})).method="workspace/workspaceFolders",r.messageDirection=a.MessageDirection.serverToClient,r.type=new a.ProtocolRequestType0(r.method),(i=n||(e.DidChangeWorkspaceFoldersNotification=n={})).method="workspace/didChangeWorkspaceFolders",i.messageDirection=a.MessageDirection.clientToServer,i.type=new a.ProtocolNotificationType(i.method)}}),Tt=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ConfigurationRequest=void 0;var t,r,n=ht();(r=t||(e.ConfigurationRequest=t={})).method="workspace/configuration",r.messageDirection=n.MessageDirection.serverToClient,r.type=new n.ProtocolRequestType(r.method)}}),Rt=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ColorPresentationRequest=e.DocumentColorRequest=void 0;var t,r,n,i,a=ht();(r=t||(e.DocumentColorRequest=t={})).method="textDocument/documentColor",r.messageDirection=a.MessageDirection.clientToServer,r.type=new a.ProtocolRequestType(r.method),(i=n||(e.ColorPresentationRequest=n={})).method="textDocument/colorPresentation",i.messageDirection=a.MessageDirection.clientToServer,i.type=new a.ProtocolRequestType(i.method)}}),$t=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.FoldingRangeRefreshRequest=e.FoldingRangeRequest=void 0;var t,r,n,i,a=ht();(r=t||(e.FoldingRangeRequest=t={})).method="textDocument/foldingRange",r.messageDirection=a.MessageDirection.clientToServer,r.type=new a.ProtocolRequestType(r.method),(i=n||(e.FoldingRangeRefreshRequest=n={})).method="workspace/foldingRange/refresh",i.messageDirection=a.MessageDirection.serverToClient,i.type=new a.ProtocolRequestType0(i.method)}}),bt=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DeclarationRequest=void 0;var t,r,n=ht();(r=t||(e.DeclarationRequest=t={})).method="textDocument/declaration",r.messageDirection=n.MessageDirection.clientToServer,r.type=new n.ProtocolRequestType(r.method)}}),Et=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.SelectionRangeRequest=void 0;var t,r,n=ht();(r=t||(e.SelectionRangeRequest=t={})).method="textDocument/selectionRange",r.messageDirection=n.MessageDirection.clientToServer,r.type=new n.ProtocolRequestType(r.method)}}),Ct=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.WorkDoneProgressCancelNotification=e.WorkDoneProgressCreateRequest=e.WorkDoneProgress=void 0;var t,r,n,i,a,s=pt(),o=ht();!function(e){function t(t){return t===e.type}e.type=new s.ProgressType,ze(t,"is"),e.is=t}(t||(e.WorkDoneProgress=t={})),(n=r||(e.WorkDoneProgressCreateRequest=r={})).method="window/workDoneProgress/create",n.messageDirection=o.MessageDirection.serverToClient,n.type=new o.ProtocolRequestType(n.method),(a=i||(e.WorkDoneProgressCancelNotification=i={})).method="window/workDoneProgress/cancel",a.messageDirection=o.MessageDirection.clientToServer,a.type=new o.ProtocolNotificationType(a.method)}}),At=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CallHierarchyOutgoingCallsRequest=e.CallHierarchyIncomingCallsRequest=e.CallHierarchyPrepareRequest=void 0;var t,r,n,i,a,s,o=ht();(r=t||(e.CallHierarchyPrepareRequest=t={})).method="textDocument/prepareCallHierarchy",r.messageDirection=o.MessageDirection.clientToServer,r.type=new o.ProtocolRequestType(r.method),(i=n||(e.CallHierarchyIncomingCallsRequest=n={})).method="callHierarchy/incomingCalls",i.messageDirection=o.MessageDirection.clientToServer,i.type=new o.ProtocolRequestType(i.method),(s=a||(e.CallHierarchyOutgoingCallsRequest=a={})).method="callHierarchy/outgoingCalls",s.messageDirection=o.MessageDirection.clientToServer,s.type=new o.ProtocolRequestType(s.method)}}),kt=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.SemanticTokensRefreshRequest=e.SemanticTokensRangeRequest=e.SemanticTokensDeltaRequest=e.SemanticTokensRequest=e.SemanticTokensRegistrationType=e.TokenFormat=void 0;var t,r,n,i,a,s,o,l,c,u,d,p=ht();(t||(e.TokenFormat=t={})).Relative="relative",(n=r||(e.SemanticTokensRegistrationType=r={})).method="textDocument/semanticTokens",n.type=new p.RegistrationType(n.method),(a=i||(e.SemanticTokensRequest=i={})).method="textDocument/semanticTokens/full",a.messageDirection=p.MessageDirection.clientToServer,a.type=new p.ProtocolRequestType(a.method),a.registrationMethod=r.method,(o=s||(e.SemanticTokensDeltaRequest=s={})).method="textDocument/semanticTokens/full/delta",o.messageDirection=p.MessageDirection.clientToServer,o.type=new p.ProtocolRequestType(o.method),o.registrationMethod=r.method,(c=l||(e.SemanticTokensRangeRequest=l={})).method="textDocument/semanticTokens/range",c.messageDirection=p.MessageDirection.clientToServer,c.type=new p.ProtocolRequestType(c.method),c.registrationMethod=r.method,(d=u||(e.SemanticTokensRefreshRequest=u={})).method="workspace/semanticTokens/refresh",d.messageDirection=p.MessageDirection.serverToClient,d.type=new p.ProtocolRequestType0(d.method)}}),St=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ShowDocumentRequest=void 0;var t,r,n=ht();(r=t||(e.ShowDocumentRequest=t={})).method="window/showDocument",r.messageDirection=n.MessageDirection.serverToClient,r.type=new n.ProtocolRequestType(r.method)}}),wt=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.LinkedEditingRangeRequest=void 0;var t,r,n=ht();(r=t||(e.LinkedEditingRangeRequest=t={})).method="textDocument/linkedEditingRange",r.messageDirection=n.MessageDirection.clientToServer,r.type=new n.ProtocolRequestType(r.method)}}),xt=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.WillDeleteFilesRequest=e.DidDeleteFilesNotification=e.DidRenameFilesNotification=e.WillRenameFilesRequest=e.DidCreateFilesNotification=e.WillCreateFilesRequest=e.FileOperationPatternKind=void 0;var t,r,n,i,a,s,o,l,c,u,d,p,f,h,m=ht();(r=t||(e.FileOperationPatternKind=t={})).file="file",r.folder="folder",(i=n||(e.WillCreateFilesRequest=n={})).method="workspace/willCreateFiles",i.messageDirection=m.MessageDirection.clientToServer,i.type=new m.ProtocolRequestType(i.method),(s=a||(e.DidCreateFilesNotification=a={})).method="workspace/didCreateFiles",s.messageDirection=m.MessageDirection.clientToServer,s.type=new m.ProtocolNotificationType(s.method),(l=o||(e.WillRenameFilesRequest=o={})).method="workspace/willRenameFiles",l.messageDirection=m.MessageDirection.clientToServer,l.type=new m.ProtocolRequestType(l.method),(u=c||(e.DidRenameFilesNotification=c={})).method="workspace/didRenameFiles",u.messageDirection=m.MessageDirection.clientToServer,u.type=new m.ProtocolNotificationType(u.method),(p=d||(e.DidDeleteFilesNotification=d={})).method="workspace/didDeleteFiles",p.messageDirection=m.MessageDirection.clientToServer,p.type=new m.ProtocolNotificationType(p.method),(h=f||(e.WillDeleteFilesRequest=f={})).method="workspace/willDeleteFiles",h.messageDirection=m.MessageDirection.clientToServer,h.type=new m.ProtocolRequestType(h.method)}}),Nt=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.MonikerRequest=e.MonikerKind=e.UniquenessLevel=void 0;var t,r,n,i,a,s,o=ht();(r=t||(e.UniquenessLevel=t={})).document="document",r.project="project",r.group="group",r.scheme="scheme",r.global="global",(i=n||(e.MonikerKind=n={})).$import="import",i.$export="export",i.local="local",(s=a||(e.MonikerRequest=a={})).method="textDocument/moniker",s.messageDirection=o.MessageDirection.clientToServer,s.type=new o.ProtocolRequestType(s.method)}}),It=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeHierarchy.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.TypeHierarchySubtypesRequest=e.TypeHierarchySupertypesRequest=e.TypeHierarchyPrepareRequest=void 0;var t,r,n,i,a,s,o=ht();(r=t||(e.TypeHierarchyPrepareRequest=t={})).method="textDocument/prepareTypeHierarchy",r.messageDirection=o.MessageDirection.clientToServer,r.type=new o.ProtocolRequestType(r.method),(i=n||(e.TypeHierarchySupertypesRequest=n={})).method="typeHierarchy/supertypes",i.messageDirection=o.MessageDirection.clientToServer,i.type=new o.ProtocolRequestType(i.method),(s=a||(e.TypeHierarchySubtypesRequest=a={})).method="typeHierarchy/subtypes",s.messageDirection=o.MessageDirection.clientToServer,s.type=new o.ProtocolRequestType(s.method)}}),_t=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.InlineValueRefreshRequest=e.InlineValueRequest=void 0;var t,r,n,i,a=ht();(r=t||(e.InlineValueRequest=t={})).method="textDocument/inlineValue",r.messageDirection=a.MessageDirection.clientToServer,r.type=new a.ProtocolRequestType(r.method),(i=n||(e.InlineValueRefreshRequest=n={})).method="workspace/inlineValue/refresh",i.messageDirection=a.MessageDirection.serverToClient,i.type=new a.ProtocolRequestType0(i.method)}}),Pt=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayHint.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.InlayHintRefreshRequest=e.InlayHintResolveRequest=e.InlayHintRequest=void 0;var t,r,n,i,a,s,o=ht();(r=t||(e.InlayHintRequest=t={})).method="textDocument/inlayHint",r.messageDirection=o.MessageDirection.clientToServer,r.type=new o.ProtocolRequestType(r.method),(i=n||(e.InlayHintResolveRequest=n={})).method="inlayHint/resolve",i.messageDirection=o.MessageDirection.clientToServer,i.type=new o.ProtocolRequestType(i.method),(s=a||(e.InlayHintRefreshRequest=a={})).method="workspace/inlayHint/refresh",s.messageDirection=o.MessageDirection.serverToClient,s.type=new o.ProtocolRequestType0(s.method)}}),Dt=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DiagnosticRefreshRequest=e.WorkspaceDiagnosticRequest=e.DocumentDiagnosticRequest=e.DocumentDiagnosticReportKind=e.DiagnosticServerCancellationData=void 0;var t,r,n,i,a,s,o,l,c,u=pt(),d=mt(),p=ht();!function(e){function t(e){const t=e;return t&&d.boolean(t.retriggerRequest)}ze(t,"is"),e.is=t}(t||(e.DiagnosticServerCancellationData=t={})),(n=r||(e.DocumentDiagnosticReportKind=r={})).Full="full",n.Unchanged="unchanged",(a=i||(e.DocumentDiagnosticRequest=i={})).method="textDocument/diagnostic",a.messageDirection=p.MessageDirection.clientToServer,a.type=new p.ProtocolRequestType(a.method),a.partialResult=new u.ProgressType,(o=s||(e.WorkspaceDiagnosticRequest=s={})).method="workspace/diagnostic",o.messageDirection=p.MessageDirection.clientToServer,o.type=new p.ProtocolRequestType(o.method),o.partialResult=new u.ProgressType,(c=l||(e.DiagnosticRefreshRequest=l={})).method="workspace/diagnostic/refresh",c.messageDirection=p.MessageDirection.serverToClient,c.type=new p.ProtocolRequestType0(c.method)}}),Ot=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.DidCloseNotebookDocumentNotification=e.DidSaveNotebookDocumentNotification=e.DidChangeNotebookDocumentNotification=e.NotebookCellArrayChange=e.DidOpenNotebookDocumentNotification=e.NotebookDocumentSyncRegistrationType=e.NotebookDocument=e.NotebookCell=e.ExecutionSummary=e.NotebookCellKind=void 0;var t,r,n,i,a,s,o,l,c,u,d,p,f,h,m,g=(Je(),Be(Ve)),y=mt(),v=ht();!function(e){function t(e){return 1===e||2===e}e.Markup=1,e.Code=2,ze(t,"is"),e.is=t}(t||(e.NotebookCellKind=t={})),function(e){function t(e,t){const r={executionOrder:e};return!0!==t&&!1!==t||(r.success=t),r}function r(e){const t=e;return y.objectLiteral(t)&&g.uinteger.is(t.executionOrder)&&(void 0===t.success||y.boolean(t.success))}function n(e,t){return e===t||null!=e&&null!=t&&(e.executionOrder===t.executionOrder&&e.success===t.success)}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r,ze(n,"equals"),e.equals=n}(r||(e.ExecutionSummary=r={})),function(e){function n(e,t){return{kind:e,document:t}}function i(e){const r=e;return y.objectLiteral(r)&&t.is(r.kind)&&g.DocumentUri.is(r.document)&&(void 0===r.metadata||y.objectLiteral(r.metadata))}function a(e,t){const n=new Set;return e.document!==t.document&&n.add("document"),e.kind!==t.kind&&n.add("kind"),e.executionSummary!==t.executionSummary&&n.add("executionSummary"),void 0===e.metadata&&void 0===t.metadata||s(e.metadata,t.metadata)||n.add("metadata"),void 0===e.executionSummary&&void 0===t.executionSummary||r.equals(e.executionSummary,t.executionSummary)||n.add("executionSummary"),n}function s(e,t){if(e===t)return!0;if(null==e||null==t)return!1;if(typeof e!=typeof t)return!1;if("object"!=typeof e)return!1;const r=Array.isArray(e),n=Array.isArray(t);if(r!==n)return!1;if(r&&n){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!s(e[r],t[r]))return!1}if(y.objectLiteral(e)&&y.objectLiteral(t)){const r=Object.keys(e),n=Object.keys(t);if(r.length!==n.length)return!1;if(r.sort(),n.sort(),!s(r,n))return!1;for(let i=0;i<r.length;i++){const n=r[i];if(!s(e[n],t[n]))return!1}}return!0}ze(n,"create"),e.create=n,ze(i,"is"),e.is=i,ze(a,"diff"),e.diff=a,ze(s,"equalsMetadata")}(n||(e.NotebookCell=n={})),function(e){function t(e,t,r,n){return{uri:e,notebookType:t,version:r,cells:n}}function r(e){const t=e;return y.objectLiteral(t)&&y.string(t.uri)&&g.integer.is(t.version)&&y.typedArray(t.cells,n.is)}ze(t,"create"),e.create=t,ze(r,"is"),e.is=r}(i||(e.NotebookDocument=i={})),(s=a||(e.NotebookDocumentSyncRegistrationType=a={})).method="notebookDocument/sync",s.messageDirection=v.MessageDirection.clientToServer,s.type=new v.RegistrationType(s.method),(l=o||(e.DidOpenNotebookDocumentNotification=o={})).method="notebookDocument/didOpen",l.messageDirection=v.MessageDirection.clientToServer,l.type=new v.ProtocolNotificationType(l.method),l.registrationMethod=a.method,function(e){function t(e){const t=e;return y.objectLiteral(t)&&g.uinteger.is(t.start)&&g.uinteger.is(t.deleteCount)&&(void 0===t.cells||y.typedArray(t.cells,n.is))}function r(e,t,r){const n={start:e,deleteCount:t};return void 0!==r&&(n.cells=r),n}ze(t,"is"),e.is=t,ze(r,"create"),e.create=r}(c||(e.NotebookCellArrayChange=c={})),(d=u||(e.DidChangeNotebookDocumentNotification=u={})).method="notebookDocument/didChange",d.messageDirection=v.MessageDirection.clientToServer,d.type=new v.ProtocolNotificationType(d.method),d.registrationMethod=a.method,(f=p||(e.DidSaveNotebookDocumentNotification=p={})).method="notebookDocument/didSave",f.messageDirection=v.MessageDirection.clientToServer,f.type=new v.ProtocolNotificationType(f.method),f.registrationMethod=a.method,(m=h||(e.DidCloseNotebookDocumentNotification=h={})).method="notebookDocument/didClose",m.messageDirection=v.MessageDirection.clientToServer,m.type=new v.ProtocolNotificationType(m.method),m.registrationMethod=a.method}}),Lt=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineCompletion.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.InlineCompletionRequest=void 0;var t,r,n=ht();(r=t||(e.InlineCompletionRequest=t={})).method="textDocument/inlineCompletion",r.messageDirection=n.MessageDirection.clientToServer,r.type=new n.ProtocolRequestType(r.method)}}),Mt=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.WorkspaceSymbolRequest=e.CodeActionResolveRequest=e.CodeActionRequest=e.DocumentSymbolRequest=e.DocumentHighlightRequest=e.ReferencesRequest=e.DefinitionRequest=e.SignatureHelpRequest=e.SignatureHelpTriggerKind=e.HoverRequest=e.CompletionResolveRequest=e.CompletionRequest=e.CompletionTriggerKind=e.PublishDiagnosticsNotification=e.WatchKind=e.RelativePattern=e.FileChangeType=e.DidChangeWatchedFilesNotification=e.WillSaveTextDocumentWaitUntilRequest=e.WillSaveTextDocumentNotification=e.TextDocumentSaveReason=e.DidSaveTextDocumentNotification=e.DidCloseTextDocumentNotification=e.DidChangeTextDocumentNotification=e.TextDocumentContentChangeEvent=e.DidOpenTextDocumentNotification=e.TextDocumentSyncKind=e.TelemetryEventNotification=e.LogMessageNotification=e.ShowMessageRequest=e.ShowMessageNotification=e.MessageType=e.DidChangeConfigurationNotification=e.ExitNotification=e.ShutdownRequest=e.InitializedNotification=e.InitializeErrorCodes=e.InitializeRequest=e.WorkDoneProgressOptions=e.TextDocumentRegistrationOptions=e.StaticRegistrationOptions=e.PositionEncodingKind=e.FailureHandlingKind=e.ResourceOperationKind=e.UnregistrationRequest=e.RegistrationRequest=e.DocumentSelector=e.NotebookCellTextDocumentFilter=e.NotebookDocumentFilter=e.TextDocumentFilter=void 0,e.MonikerRequest=e.MonikerKind=e.UniquenessLevel=e.WillDeleteFilesRequest=e.DidDeleteFilesNotification=e.WillRenameFilesRequest=e.DidRenameFilesNotification=e.WillCreateFilesRequest=e.DidCreateFilesNotification=e.FileOperationPatternKind=e.LinkedEditingRangeRequest=e.ShowDocumentRequest=e.SemanticTokensRegistrationType=e.SemanticTokensRefreshRequest=e.SemanticTokensRangeRequest=e.SemanticTokensDeltaRequest=e.SemanticTokensRequest=e.TokenFormat=e.CallHierarchyPrepareRequest=e.CallHierarchyOutgoingCallsRequest=e.CallHierarchyIncomingCallsRequest=e.WorkDoneProgressCancelNotification=e.WorkDoneProgressCreateRequest=e.WorkDoneProgress=e.SelectionRangeRequest=e.DeclarationRequest=e.FoldingRangeRefreshRequest=e.FoldingRangeRequest=e.ColorPresentationRequest=e.DocumentColorRequest=e.ConfigurationRequest=e.DidChangeWorkspaceFoldersNotification=e.WorkspaceFoldersRequest=e.TypeDefinitionRequest=e.ImplementationRequest=e.ApplyWorkspaceEditRequest=e.ExecuteCommandRequest=e.PrepareRenameRequest=e.RenameRequest=e.PrepareSupportDefaultBehavior=e.DocumentOnTypeFormattingRequest=e.DocumentRangesFormattingRequest=e.DocumentRangeFormattingRequest=e.DocumentFormattingRequest=e.DocumentLinkResolveRequest=e.DocumentLinkRequest=e.CodeLensRefreshRequest=e.CodeLensResolveRequest=e.CodeLensRequest=e.WorkspaceSymbolResolveRequest=void 0,e.InlineCompletionRequest=e.DidCloseNotebookDocumentNotification=e.DidSaveNotebookDocumentNotification=e.DidChangeNotebookDocumentNotification=e.NotebookCellArrayChange=e.DidOpenNotebookDocumentNotification=e.NotebookDocumentSyncRegistrationType=e.NotebookDocument=e.NotebookCell=e.ExecutionSummary=e.NotebookCellKind=e.DiagnosticRefreshRequest=e.WorkspaceDiagnosticRequest=e.DocumentDiagnosticRequest=e.DocumentDiagnosticReportKind=e.DiagnosticServerCancellationData=e.InlayHintRefreshRequest=e.InlayHintResolveRequest=e.InlayHintRequest=e.InlineValueRefreshRequest=e.InlineValueRequest=e.TypeHierarchySupertypesRequest=e.TypeHierarchySubtypesRequest=e.TypeHierarchyPrepareRequest=void 0;var t=ht(),r=(Je(),Be(Ve)),n=mt(),i=gt();Object.defineProperty(e,"ImplementationRequest",{enumerable:!0,get:ze(function(){return i.ImplementationRequest},"get")});var a=yt();Object.defineProperty(e,"TypeDefinitionRequest",{enumerable:!0,get:ze(function(){return a.TypeDefinitionRequest},"get")});var s=vt();Object.defineProperty(e,"WorkspaceFoldersRequest",{enumerable:!0,get:ze(function(){return s.WorkspaceFoldersRequest},"get")}),Object.defineProperty(e,"DidChangeWorkspaceFoldersNotification",{enumerable:!0,get:ze(function(){return s.DidChangeWorkspaceFoldersNotification},"get")});var o=Tt();Object.defineProperty(e,"ConfigurationRequest",{enumerable:!0,get:ze(function(){return o.ConfigurationRequest},"get")});var l=Rt();Object.defineProperty(e,"DocumentColorRequest",{enumerable:!0,get:ze(function(){return l.DocumentColorRequest},"get")}),Object.defineProperty(e,"ColorPresentationRequest",{enumerable:!0,get:ze(function(){return l.ColorPresentationRequest},"get")});var c=$t();Object.defineProperty(e,"FoldingRangeRequest",{enumerable:!0,get:ze(function(){return c.FoldingRangeRequest},"get")}),Object.defineProperty(e,"FoldingRangeRefreshRequest",{enumerable:!0,get:ze(function(){return c.FoldingRangeRefreshRequest},"get")});var u=bt();Object.defineProperty(e,"DeclarationRequest",{enumerable:!0,get:ze(function(){return u.DeclarationRequest},"get")});var d=Et();Object.defineProperty(e,"SelectionRangeRequest",{enumerable:!0,get:ze(function(){return d.SelectionRangeRequest},"get")});var p=Ct();Object.defineProperty(e,"WorkDoneProgress",{enumerable:!0,get:ze(function(){return p.WorkDoneProgress},"get")}),Object.defineProperty(e,"WorkDoneProgressCreateRequest",{enumerable:!0,get:ze(function(){return p.WorkDoneProgressCreateRequest},"get")}),Object.defineProperty(e,"WorkDoneProgressCancelNotification",{enumerable:!0,get:ze(function(){return p.WorkDoneProgressCancelNotification},"get")});var f=At();Object.defineProperty(e,"CallHierarchyIncomingCallsRequest",{enumerable:!0,get:ze(function(){return f.CallHierarchyIncomingCallsRequest},"get")}),Object.defineProperty(e,"CallHierarchyOutgoingCallsRequest",{enumerable:!0,get:ze(function(){return f.CallHierarchyOutgoingCallsRequest},"get")}),Object.defineProperty(e,"CallHierarchyPrepareRequest",{enumerable:!0,get:ze(function(){return f.CallHierarchyPrepareRequest},"get")});var h=kt();Object.defineProperty(e,"TokenFormat",{enumerable:!0,get:ze(function(){return h.TokenFormat},"get")}),Object.defineProperty(e,"SemanticTokensRequest",{enumerable:!0,get:ze(function(){return h.SemanticTokensRequest},"get")}),Object.defineProperty(e,"SemanticTokensDeltaRequest",{enumerable:!0,get:ze(function(){return h.SemanticTokensDeltaRequest},"get")}),Object.defineProperty(e,"SemanticTokensRangeRequest",{enumerable:!0,get:ze(function(){return h.SemanticTokensRangeRequest},"get")}),Object.defineProperty(e,"SemanticTokensRefreshRequest",{enumerable:!0,get:ze(function(){return h.SemanticTokensRefreshRequest},"get")}),Object.defineProperty(e,"SemanticTokensRegistrationType",{enumerable:!0,get:ze(function(){return h.SemanticTokensRegistrationType},"get")});var m=St();Object.defineProperty(e,"ShowDocumentRequest",{enumerable:!0,get:ze(function(){return m.ShowDocumentRequest},"get")});var g=wt();Object.defineProperty(e,"LinkedEditingRangeRequest",{enumerable:!0,get:ze(function(){return g.LinkedEditingRangeRequest},"get")});var y=xt();Object.defineProperty(e,"FileOperationPatternKind",{enumerable:!0,get:ze(function(){return y.FileOperationPatternKind},"get")}),Object.defineProperty(e,"DidCreateFilesNotification",{enumerable:!0,get:ze(function(){return y.DidCreateFilesNotification},"get")}),Object.defineProperty(e,"WillCreateFilesRequest",{enumerable:!0,get:ze(function(){return y.WillCreateFilesRequest},"get")}),Object.defineProperty(e,"DidRenameFilesNotification",{enumerable:!0,get:ze(function(){return y.DidRenameFilesNotification},"get")}),Object.defineProperty(e,"WillRenameFilesRequest",{enumerable:!0,get:ze(function(){return y.WillRenameFilesRequest},"get")}),Object.defineProperty(e,"DidDeleteFilesNotification",{enumerable:!0,get:ze(function(){return y.DidDeleteFilesNotification},"get")}),Object.defineProperty(e,"WillDeleteFilesRequest",{enumerable:!0,get:ze(function(){return y.WillDeleteFilesRequest},"get")});var v=Nt();Object.defineProperty(e,"UniquenessLevel",{enumerable:!0,get:ze(function(){return v.UniquenessLevel},"get")}),Object.defineProperty(e,"MonikerKind",{enumerable:!0,get:ze(function(){return v.MonikerKind},"get")}),Object.defineProperty(e,"MonikerRequest",{enumerable:!0,get:ze(function(){return v.MonikerRequest},"get")});var T=It();Object.defineProperty(e,"TypeHierarchyPrepareRequest",{enumerable:!0,get:ze(function(){return T.TypeHierarchyPrepareRequest},"get")}),Object.defineProperty(e,"TypeHierarchySubtypesRequest",{enumerable:!0,get:ze(function(){return T.TypeHierarchySubtypesRequest},"get")}),Object.defineProperty(e,"TypeHierarchySupertypesRequest",{enumerable:!0,get:ze(function(){return T.TypeHierarchySupertypesRequest},"get")});var R=_t();Object.defineProperty(e,"InlineValueRequest",{enumerable:!0,get:ze(function(){return R.InlineValueRequest},"get")}),Object.defineProperty(e,"InlineValueRefreshRequest",{enumerable:!0,get:ze(function(){return R.InlineValueRefreshRequest},"get")});var $=Pt();Object.defineProperty(e,"InlayHintRequest",{enumerable:!0,get:ze(function(){return $.InlayHintRequest},"get")}),Object.defineProperty(e,"InlayHintResolveRequest",{enumerable:!0,get:ze(function(){return $.InlayHintResolveRequest},"get")}),Object.defineProperty(e,"InlayHintRefreshRequest",{enumerable:!0,get:ze(function(){return $.InlayHintRefreshRequest},"get")});var b=Dt();Object.defineProperty(e,"DiagnosticServerCancellationData",{enumerable:!0,get:ze(function(){return b.DiagnosticServerCancellationData},"get")}),Object.defineProperty(e,"DocumentDiagnosticReportKind",{enumerable:!0,get:ze(function(){return b.DocumentDiagnosticReportKind},"get")}),Object.defineProperty(e,"DocumentDiagnosticRequest",{enumerable:!0,get:ze(function(){return b.DocumentDiagnosticRequest},"get")}),Object.defineProperty(e,"WorkspaceDiagnosticRequest",{enumerable:!0,get:ze(function(){return b.WorkspaceDiagnosticRequest},"get")}),Object.defineProperty(e,"DiagnosticRefreshRequest",{enumerable:!0,get:ze(function(){return b.DiagnosticRefreshRequest},"get")});var E=Ot();Object.defineProperty(e,"NotebookCellKind",{enumerable:!0,get:ze(function(){return E.NotebookCellKind},"get")}),Object.defineProperty(e,"ExecutionSummary",{enumerable:!0,get:ze(function(){return E.ExecutionSummary},"get")}),Object.defineProperty(e,"NotebookCell",{enumerable:!0,get:ze(function(){return E.NotebookCell},"get")}),Object.defineProperty(e,"NotebookDocument",{enumerable:!0,get:ze(function(){return E.NotebookDocument},"get")}),Object.defineProperty(e,"NotebookDocumentSyncRegistrationType",{enumerable:!0,get:ze(function(){return E.NotebookDocumentSyncRegistrationType},"get")}),Object.defineProperty(e,"DidOpenNotebookDocumentNotification",{enumerable:!0,get:ze(function(){return E.DidOpenNotebookDocumentNotification},"get")}),Object.defineProperty(e,"NotebookCellArrayChange",{enumerable:!0,get:ze(function(){return E.NotebookCellArrayChange},"get")}),Object.defineProperty(e,"DidChangeNotebookDocumentNotification",{enumerable:!0,get:ze(function(){return E.DidChangeNotebookDocumentNotification},"get")}),Object.defineProperty(e,"DidSaveNotebookDocumentNotification",{enumerable:!0,get:ze(function(){return E.DidSaveNotebookDocumentNotification},"get")}),Object.defineProperty(e,"DidCloseNotebookDocumentNotification",{enumerable:!0,get:ze(function(){return E.DidCloseNotebookDocumentNotification},"get")});var C,A,k,S,w,x,N,I,_,P,D,O,L,M,j,F,z,K,G,q,U,W,B,V,H,Y,J,X,Q,Z,ee,te,re,ne,ie,ae,se,oe,le,ce,ue,de,pe,fe,he,me,ge,ye,ve,Te,Re,$e,be,Ee,Ce,Ae,ke,Se,we,xe,Ne,Ie,_e,Pe,De,Oe,Le,Me,je,Fe,Ke,Ge,qe,Ue,We,He,Ye,Xe,Qe,Ze,et,tt,rt,nt,it,at,st,ot,lt,ct,ut,dt,pt,ft,Mt,jt,Ft,zt,Kt,Gt,qt,Ut,Wt,Bt,Vt,Ht,Yt,Jt,Xt,Qt,Zt,er,tr,rr,nr,ir,ar,sr,or,lr=Lt();Object.defineProperty(e,"InlineCompletionRequest",{enumerable:!0,get:ze(function(){return lr.InlineCompletionRequest},"get")}),function(e){function t(e){const t=e;return n.string(t)||n.string(t.language)||n.string(t.scheme)||n.string(t.pattern)}ze(t,"is"),e.is=t}(C||(e.TextDocumentFilter=C={})),function(e){function t(e){const t=e;return n.objectLiteral(t)&&(n.string(t.notebookType)||n.string(t.scheme)||n.string(t.pattern))}ze(t,"is"),e.is=t}(A||(e.NotebookDocumentFilter=A={})),function(e){function t(e){const t=e;return n.objectLiteral(t)&&(n.string(t.notebook)||A.is(t.notebook))&&(void 0===t.language||n.string(t.language))}ze(t,"is"),e.is=t}(k||(e.NotebookCellTextDocumentFilter=k={})),function(e){function t(e){if(!Array.isArray(e))return!1;for(let t of e)if(!n.string(t)&&!C.is(t)&&!k.is(t))return!1;return!0}ze(t,"is"),e.is=t}(S||(e.DocumentSelector=S={})),(x=w||(e.RegistrationRequest=w={})).method="client/registerCapability",x.messageDirection=t.MessageDirection.serverToClient,x.type=new t.ProtocolRequestType(x.method),(I=N||(e.UnregistrationRequest=N={})).method="client/unregisterCapability",I.messageDirection=t.MessageDirection.serverToClient,I.type=new t.ProtocolRequestType(I.method),(P=_||(e.ResourceOperationKind=_={})).Create="create",P.Rename="rename",P.Delete="delete",(O=D||(e.FailureHandlingKind=D={})).Abort="abort",O.Transactional="transactional",O.TextOnlyTransactional="textOnlyTransactional",O.Undo="undo",(M=L||(e.PositionEncodingKind=L={})).UTF8="utf-8",M.UTF16="utf-16",M.UTF32="utf-32",function(e){function t(e){const t=e;return t&&n.string(t.id)&&t.id.length>0}ze(t,"hasId"),e.hasId=t}(j||(e.StaticRegistrationOptions=j={})),function(e){function t(e){const t=e;return t&&(null===t.documentSelector||S.is(t.documentSelector))}ze(t,"is"),e.is=t}(F||(e.TextDocumentRegistrationOptions=F={})),function(e){function t(e){const t=e;return n.objectLiteral(t)&&(void 0===t.workDoneProgress||n.boolean(t.workDoneProgress))}function r(e){const t=e;return t&&n.boolean(t.workDoneProgress)}ze(t,"is"),e.is=t,ze(r,"hasWorkDoneProgress"),e.hasWorkDoneProgress=r}(z||(e.WorkDoneProgressOptions=z={})),(G=K||(e.InitializeRequest=K={})).method="initialize",G.messageDirection=t.MessageDirection.clientToServer,G.type=new t.ProtocolRequestType(G.method),(q||(e.InitializeErrorCodes=q={})).unknownProtocolVersion=1,(W=U||(e.InitializedNotification=U={})).method="initialized",W.messageDirection=t.MessageDirection.clientToServer,W.type=new t.ProtocolNotificationType(W.method),(V=B||(e.ShutdownRequest=B={})).method="shutdown",V.messageDirection=t.MessageDirection.clientToServer,V.type=new t.ProtocolRequestType0(V.method),(Y=H||(e.ExitNotification=H={})).method="exit",Y.messageDirection=t.MessageDirection.clientToServer,Y.type=new t.ProtocolNotificationType0(Y.method),(X=J||(e.DidChangeConfigurationNotification=J={})).method="workspace/didChangeConfiguration",X.messageDirection=t.MessageDirection.clientToServer,X.type=new t.ProtocolNotificationType(X.method),(Z=Q||(e.MessageType=Q={})).Error=1,Z.Warning=2,Z.Info=3,Z.Log=4,Z.Debug=5,(te=ee||(e.ShowMessageNotification=ee={})).method="window/showMessage",te.messageDirection=t.MessageDirection.serverToClient,te.type=new t.ProtocolNotificationType(te.method),(ne=re||(e.ShowMessageRequest=re={})).method="window/showMessageRequest",ne.messageDirection=t.MessageDirection.serverToClient,ne.type=new t.ProtocolRequestType(ne.method),(ae=ie||(e.LogMessageNotification=ie={})).method="window/logMessage",ae.messageDirection=t.MessageDirection.serverToClient,ae.type=new t.ProtocolNotificationType(ae.method),(oe=se||(e.TelemetryEventNotification=se={})).method="telemetry/event",oe.messageDirection=t.MessageDirection.serverToClient,oe.type=new t.ProtocolNotificationType(oe.method),(ce=le||(e.TextDocumentSyncKind=le={})).None=0,ce.Full=1,ce.Incremental=2,(de=ue||(e.DidOpenTextDocumentNotification=ue={})).method="textDocument/didOpen",de.messageDirection=t.MessageDirection.clientToServer,de.type=new t.ProtocolNotificationType(de.method),function(e){function t(e){let t=e;return null!=t&&"string"==typeof t.text&&void 0!==t.range&&(void 0===t.rangeLength||"number"==typeof t.rangeLength)}function r(e){let t=e;return null!=t&&"string"==typeof t.text&&void 0===t.range&&void 0===t.rangeLength}ze(t,"isIncremental"),e.isIncremental=t,ze(r,"isFull"),e.isFull=r}(pe||(e.TextDocumentContentChangeEvent=pe={})),(he=fe||(e.DidChangeTextDocumentNotification=fe={})).method="textDocument/didChange",he.messageDirection=t.MessageDirection.clientToServer,he.type=new t.ProtocolNotificationType(he.method),(ge=me||(e.DidCloseTextDocumentNotification=me={})).method="textDocument/didClose",ge.messageDirection=t.MessageDirection.clientToServer,ge.type=new t.ProtocolNotificationType(ge.method),(ve=ye||(e.DidSaveTextDocumentNotification=ye={})).method="textDocument/didSave",ve.messageDirection=t.MessageDirection.clientToServer,ve.type=new t.ProtocolNotificationType(ve.method),(Re=Te||(e.TextDocumentSaveReason=Te={})).Manual=1,Re.AfterDelay=2,Re.FocusOut=3,(be=$e||(e.WillSaveTextDocumentNotification=$e={})).method="textDocument/willSave",be.messageDirection=t.MessageDirection.clientToServer,be.type=new t.ProtocolNotificationType(be.method),(Ce=Ee||(e.WillSaveTextDocumentWaitUntilRequest=Ee={})).method="textDocument/willSaveWaitUntil",Ce.messageDirection=t.MessageDirection.clientToServer,Ce.type=new t.ProtocolRequestType(Ce.method),(ke=Ae||(e.DidChangeWatchedFilesNotification=Ae={})).method="workspace/didChangeWatchedFiles",ke.messageDirection=t.MessageDirection.clientToServer,ke.type=new t.ProtocolNotificationType(ke.method),(we=Se||(e.FileChangeType=Se={})).Created=1,we.Changed=2,we.Deleted=3,function(e){function t(e){const t=e;return n.objectLiteral(t)&&(r.URI.is(t.baseUri)||r.WorkspaceFolder.is(t.baseUri))&&n.string(t.pattern)}ze(t,"is"),e.is=t}(xe||(e.RelativePattern=xe={})),(Ie=Ne||(e.WatchKind=Ne={})).Create=1,Ie.Change=2,Ie.Delete=4,(Pe=_e||(e.PublishDiagnosticsNotification=_e={})).method="textDocument/publishDiagnostics",Pe.messageDirection=t.MessageDirection.serverToClient,Pe.type=new t.ProtocolNotificationType(Pe.method),(Oe=De||(e.CompletionTriggerKind=De={})).Invoked=1,Oe.TriggerCharacter=2,Oe.TriggerForIncompleteCompletions=3,(Me=Le||(e.CompletionRequest=Le={})).method="textDocument/completion",Me.messageDirection=t.MessageDirection.clientToServer,Me.type=new t.ProtocolRequestType(Me.method),(Fe=je||(e.CompletionResolveRequest=je={})).method="completionItem/resolve",Fe.messageDirection=t.MessageDirection.clientToServer,Fe.type=new t.ProtocolRequestType(Fe.method),(Ge=Ke||(e.HoverRequest=Ke={})).method="textDocument/hover",Ge.messageDirection=t.MessageDirection.clientToServer,Ge.type=new t.ProtocolRequestType(Ge.method),(Ue=qe||(e.SignatureHelpTriggerKind=qe={})).Invoked=1,Ue.TriggerCharacter=2,Ue.ContentChange=3,(He=We||(e.SignatureHelpRequest=We={})).method="textDocument/signatureHelp",He.messageDirection=t.MessageDirection.clientToServer,He.type=new t.ProtocolRequestType(He.method),(Xe=Ye||(e.DefinitionRequest=Ye={})).method="textDocument/definition",Xe.messageDirection=t.MessageDirection.clientToServer,Xe.type=new t.ProtocolRequestType(Xe.method),(Ze=Qe||(e.ReferencesRequest=Qe={})).method="textDocument/references",Ze.messageDirection=t.MessageDirection.clientToServer,Ze.type=new t.ProtocolRequestType(Ze.method),(tt=et||(e.DocumentHighlightRequest=et={})).method="textDocument/documentHighlight",tt.messageDirection=t.MessageDirection.clientToServer,tt.type=new t.ProtocolRequestType(tt.method),(nt=rt||(e.DocumentSymbolRequest=rt={})).method="textDocument/documentSymbol",nt.messageDirection=t.MessageDirection.clientToServer,nt.type=new t.ProtocolRequestType(nt.method),(at=it||(e.CodeActionRequest=it={})).method="textDocument/codeAction",at.messageDirection=t.MessageDirection.clientToServer,at.type=new t.ProtocolRequestType(at.method),(ot=st||(e.CodeActionResolveRequest=st={})).method="codeAction/resolve",ot.messageDirection=t.MessageDirection.clientToServer,ot.type=new t.ProtocolRequestType(ot.method),(ct=lt||(e.WorkspaceSymbolRequest=lt={})).method="workspace/symbol",ct.messageDirection=t.MessageDirection.clientToServer,ct.type=new t.ProtocolRequestType(ct.method),(dt=ut||(e.WorkspaceSymbolResolveRequest=ut={})).method="workspaceSymbol/resolve",dt.messageDirection=t.MessageDirection.clientToServer,dt.type=new t.ProtocolRequestType(dt.method),(ft=pt||(e.CodeLensRequest=pt={})).method="textDocument/codeLens",ft.messageDirection=t.MessageDirection.clientToServer,ft.type=new t.ProtocolRequestType(ft.method),(jt=Mt||(e.CodeLensResolveRequest=Mt={})).method="codeLens/resolve",jt.messageDirection=t.MessageDirection.clientToServer,jt.type=new t.ProtocolRequestType(jt.method),(zt=Ft||(e.CodeLensRefreshRequest=Ft={})).method="workspace/codeLens/refresh",zt.messageDirection=t.MessageDirection.serverToClient,zt.type=new t.ProtocolRequestType0(zt.method),(Gt=Kt||(e.DocumentLinkRequest=Kt={})).method="textDocument/documentLink",Gt.messageDirection=t.MessageDirection.clientToServer,Gt.type=new t.ProtocolRequestType(Gt.method),(Ut=qt||(e.DocumentLinkResolveRequest=qt={})).method="documentLink/resolve",Ut.messageDirection=t.MessageDirection.clientToServer,Ut.type=new t.ProtocolRequestType(Ut.method),(Bt=Wt||(e.DocumentFormattingRequest=Wt={})).method="textDocument/formatting",Bt.messageDirection=t.MessageDirection.clientToServer,Bt.type=new t.ProtocolRequestType(Bt.method),(Ht=Vt||(e.DocumentRangeFormattingRequest=Vt={})).method="textDocument/rangeFormatting",Ht.messageDirection=t.MessageDirection.clientToServer,Ht.type=new t.ProtocolRequestType(Ht.method),(Jt=Yt||(e.DocumentRangesFormattingRequest=Yt={})).method="textDocument/rangesFormatting",Jt.messageDirection=t.MessageDirection.clientToServer,Jt.type=new t.ProtocolRequestType(Jt.method),(Qt=Xt||(e.DocumentOnTypeFormattingRequest=Xt={})).method="textDocument/onTypeFormatting",Qt.messageDirection=t.MessageDirection.clientToServer,Qt.type=new t.ProtocolRequestType(Qt.method),(Zt||(e.PrepareSupportDefaultBehavior=Zt={})).Identifier=1,(tr=er||(e.RenameRequest=er={})).method="textDocument/rename",tr.messageDirection=t.MessageDirection.clientToServer,tr.type=new t.ProtocolRequestType(tr.method),(nr=rr||(e.PrepareRenameRequest=rr={})).method="textDocument/prepareRename",nr.messageDirection=t.MessageDirection.clientToServer,nr.type=new t.ProtocolRequestType(nr.method),(ar=ir||(e.ExecuteCommandRequest=ir={})).method="workspace/executeCommand",ar.messageDirection=t.MessageDirection.clientToServer,ar.type=new t.ProtocolRequestType(ar.method),(or=sr||(e.ApplyWorkspaceEditRequest=sr={})).method="workspace/applyEdit",or.messageDirection=t.MessageDirection.serverToClient,or.type=new t.ProtocolRequestType("workspace/applyEdit")}}),jt=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/connection.js"(e){Object.defineProperty(e,"__esModule",{value:!0}),e.createProtocolConnection=void 0;var t=pt();function r(e,r,n,i){return t.ConnectionStrategy.is(i)&&(i={connectionStrategy:i}),(0,t.createMessageConnection)(e,r,n,i)}ze(r,"createProtocolConnection"),e.createProtocolConnection=r}}),Ft=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/api.js"(e){var t=e&&e.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:ze(function(){return t[r]},"get")}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),r=e&&e.__exportStar||function(e,r){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(r,n)||t(r,e,n)};Object.defineProperty(e,"__esModule",{value:!0}),e.LSPErrorCodes=e.createProtocolConnection=void 0,r(pt(),e),r((Je(),Be(Ve)),e),r(ht(),e),r(Mt(),e);var n,i,a=jt();Object.defineProperty(e,"createProtocolConnection",{enumerable:!0,get:ze(function(){return a.createProtocolConnection},"get")}),(i=n||(e.LSPErrorCodes=n={})).lspReservedErrorRangeStart=-32899,i.RequestFailed=-32803,i.ServerCancelled=-32802,i.ContentModified=-32801,i.RequestCancelled=-32800,i.lspReservedErrorRangeEnd=-32800}}),zt=Ke({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/browser/main.js"(e){var t=e&&e.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:ze(function(){return t[r]},"get")}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),r=e&&e.__exportStar||function(e,r){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(r,n)||t(r,e,n)};Object.defineProperty(e,"__esModule",{value:!0}),e.createProtocolConnection=void 0;var n=ft();function i(e,t,r,i){return(0,n.createMessageConnection)(e,t,r,i)}r(ft(),e),r(Ft(),e),ze(i,"createProtocolConnection"),e.createProtocolConnection=i}}),Kt={};Ge(Kt,{AbstractAstReflection:()=>Ht,AbstractCstNode:()=>hS,AbstractLangiumParser:()=>bS,AbstractParserErrorMessageProvider:()=>CS,AbstractThreadedAsyncParser:()=>Qx,AstUtils:()=>sr,BiMap:()=>_w,Cancellation:()=>ew,CompositeCstNodeImpl:()=>gS,ContextCache:()=>zw,CstNodeBuilder:()=>fS,CstUtils:()=>Gt,DEFAULT_TOKENIZE_OPTIONS:()=>gx,DONE_RESULT:()=>rr,DatatypeSymbol:()=>TS,DefaultAstNodeDescriptionProvider:()=>ax,DefaultAstNodeLocator:()=>ox,DefaultAsyncParser:()=>Xx,DefaultCommentProvider:()=>Jx,DefaultConfigurationProvider:()=>ux,DefaultDocumentBuilder:()=>px,DefaultDocumentValidator:()=>tx,DefaultHydrator:()=>tN,DefaultIndexManager:()=>fx,DefaultJsonSerializer:()=>Hw,DefaultLangiumDocumentFactory:()=>Cw,DefaultLangiumDocuments:()=>Aw,DefaultLangiumProfiler:()=>PN,DefaultLexer:()=>yx,DefaultLexerErrorMessageProvider:()=>mx,DefaultLinker:()=>Sw,DefaultNameProvider:()=>xw,DefaultReferenceDescriptionProvider:()=>sx,DefaultReferences:()=>Nw,DefaultScopeComputation:()=>Pw,DefaultScopeProvider:()=>qw,DefaultServiceRegistry:()=>Yw,DefaultTokenBuilder:()=>QS,DefaultValueConverter:()=>ZS,DefaultWorkspaceLock:()=>eN,DefaultWorkspaceManager:()=>hx,Deferred:()=>dw,Disposable:()=>cx,DisposableCache:()=>jw,DocumentCache:()=>Kw,DocumentState:()=>$w,DocumentValidator:()=>Xw,EMPTY_SCOPE:()=>Mw,EMPTY_STREAM:()=>tr,EmptyFileSystem:()=>vN,EmptyFileSystemProvider:()=>yN,ErrorWithLocation:()=>Ui,GrammarAST:()=>$r,GrammarUtils:()=>qi,IndentationAwareLexer:()=>mN,IndentationAwareTokenBuilder:()=>hN,JSDocDocumentationProvider:()=>Yx,LangiumCompletionParser:()=>kS,LangiumParser:()=>ES,LangiumParserErrorMessageProvider:()=>AS,LeafCstNodeImpl:()=>mS,LexingMode:()=>dN,MapScope:()=>Ow,Module:()=>Hx,MultiMap:()=>Iw,MultiMapScope:()=>Lw,OperationCancelled:()=>sw,ParserWorker:()=>Zx,ProfilingTask:()=>DN,Reduction:()=>ir,RefResolving:()=>kw,RegExpUtils:()=>Vi,RootCstNodeImpl:()=>vS,SimpleCache:()=>Fw,StreamImpl:()=>Qt,StreamScope:()=>Dw,TextDocument:()=>cw,TreeStreamImpl:()=>ar,URI:()=>Tw,UriTrie:()=>Ew,UriUtils:()=>vw,VALIDATE_EACH_NODE:()=>ex,ValidationCategory:()=>Bw,ValidationRegistry:()=>Zw,ValueConverter:()=>XS,WorkspaceCache:()=>Gw,assertCondition:()=>Bi,assertUnreachable:()=>Wi,createCompletionParser:()=>HS,createDefaultCoreModule:()=>rN,createDefaultSharedCoreModule:()=>nN,createGrammarConfig:()=>is,createLangiumParser:()=>YS,createParser:()=>NS,delayNextTick:()=>tw,diagnosticData:()=>Jw,eagerLoad:()=>sN,getDiagnosticRange:()=>rx,indentationBuilderDefaultOptions:()=>fN,inject:()=>iN,interruptAndCheck:()=>lw,isAstNode:()=>qt,isAstNodeDescription:()=>Bt,isAstNodeWithComment:()=>Uw,isCompositeCstNode:()=>Yt,isIMultiModeLexerDefinition:()=>Tx,isJSDoc:()=>bx,isLeafCstNode:()=>Jt,isLinkingError:()=>Vt,isMultiReference:()=>Wt,isNamed:()=>ww,isOperationCancelled:()=>ow,isReference:()=>Ut,isRootCstNode:()=>Xt,isTokenTypeArray:()=>vx,isTokenTypeDictionary:()=>Rx,loadGrammarFromJson:()=>bN,parseJSDoc:()=>$x,prepareLangiumParser:()=>JS,setInterruptionPeriod:()=>aw,startCancelableOperation:()=>iw,stream:()=>nr,toDiagnosticData:()=>ix,toDiagnosticSeverity:()=>nx});var Gt={};function qt(e){return"object"==typeof e&&null!==e&&"string"==typeof e.$type}function Ut(e){return"object"==typeof e&&null!==e&&"string"==typeof e.$refText&&"ref"in e}function Wt(e){return"object"==typeof e&&null!==e&&"string"==typeof e.$refText&&"items"in e}function Bt(e){return"object"==typeof e&&null!==e&&"string"==typeof e.name&&"string"==typeof e.type&&"string"==typeof e.path}function Vt(e){return"object"==typeof e&&null!==e&&"object"==typeof e.info&&"string"==typeof e.message}Ge(Gt,{DefaultNameRegexp:()=>Ni,RangeComparison:()=>vi,compareRange:()=>wi,findCommentNode:()=>_i,findDeclarationNodeAtOffset:()=>Ii,findLeafNodeAtOffset:()=>Di,findLeafNodeBeforeOffset:()=>Oi,flattenCst:()=>Ci,getDatatypeNode:()=>bi,getInteriorNodes:()=>zi,getNextNode:()=>ji,getPreviousNode:()=>Mi,getStartlineNode:()=>Fi,inRange:()=>xi,isChildNode:()=>Ai,isCommentNode:()=>Pi,streamCst:()=>Ei,toDocumentSegment:()=>Si,tokenToRange:()=>ki}),ze(qt,"isAstNode"),ze(Ut,"isReference"),ze(Wt,"isMultiReference"),ze(Bt,"isAstNodeDescription"),ze(Vt,"isLinkingError");var Ht=class{static{ze(this,"AbstractAstReflection")}constructor(){this.subtypes={},this.allSubtypes={}}getAllTypes(){return Object.keys(this.types)}getReferenceType(e){const t=this.types[e.container.$type];if(!t)throw new Error(`Type ${e.container.$type||"undefined"} not found.`);const r=t.properties[e.property]?.referenceType;if(!r)throw new Error(`Property ${e.property||"undefined"} of type ${e.container.$type} is not a reference.`);return r}getTypeMetaData(e){const t=this.types[e];return t||{name:e,properties:{},superTypes:[]}}isInstance(e,t){return qt(e)&&this.isSubtype(e.$type,t)}isSubtype(e,t){if(e===t)return!0;let r=this.subtypes[e];r||(r=this.subtypes[e]={});const n=r[t];if(void 0!==n)return n;{const n=this.types[e],i=!!n&&n.superTypes.some(e=>this.isSubtype(e,t));return r[t]=i,i}}getAllSubTypes(e){const t=this.allSubtypes[e];if(t)return t;{const t=this.getAllTypes(),r=[];for(const n of t)this.isSubtype(n,e)&&r.push(n);return this.allSubtypes[e]=r,r}}};function Yt(e){return"object"==typeof e&&null!==e&&Array.isArray(e.content)}function Jt(e){return"object"==typeof e&&null!==e&&"object"==typeof e.tokenType}function Xt(e){return Yt(e)&&"string"==typeof e.fullText}ze(Yt,"isCompositeCstNode"),ze(Jt,"isLeafCstNode"),ze(Xt,"isRootCstNode");var Qt=class e{static{ze(this,"StreamImpl")}constructor(e,t){this.startFn=e,this.nextFn=t}iterator(){const e={state:this.startFn(),next:ze(()=>this.nextFn(e.state),"next"),[Symbol.iterator]:()=>e};return e}[Symbol.iterator](){return this.iterator()}isEmpty(){const e=this.iterator();return Boolean(e.next().done)}count(){const e=this.iterator();let t=0,r=e.next();for(;!r.done;)t++,r=e.next();return t}toArray(){const e=[],t=this.iterator();let r;do{r=t.next(),void 0!==r.value&&e.push(r.value)}while(!r.done);return e}toSet(){return new Set(this)}toMap(e,t){const r=this.map(r=>[e?e(r):r,t?t(r):r]);return new Map(r)}toString(){return this.join()}concat(t){return new e(()=>({first:this.startFn(),firstDone:!1,iterator:t[Symbol.iterator]()}),e=>{let t;if(!e.firstDone){do{if(t=this.nextFn(e.first),!t.done)return t}while(!t.done);e.firstDone=!0}do{if(t=e.iterator.next(),!t.done)return t}while(!t.done);return rr})}join(e=","){const t=this.iterator();let r,n="",i=!1;do{r=t.next(),r.done||(i&&(n+=e),n+=Zt(r.value)),i=!0}while(!r.done);return n}indexOf(e,t=0){const r=this.iterator();let n=0,i=r.next();for(;!i.done;){if(n>=t&&i.value===e)return n;i=r.next(),n++}return-1}every(e){const t=this.iterator();let r=t.next();for(;!r.done;){if(!e(r.value))return!1;r=t.next()}return!0}some(e){const t=this.iterator();let r=t.next();for(;!r.done;){if(e(r.value))return!0;r=t.next()}return!1}forEach(e){const t=this.iterator();let r=0,n=t.next();for(;!n.done;)e(n.value,r),n=t.next(),r++}map(t){return new e(this.startFn,e=>{const{done:r,value:n}=this.nextFn(e);return r?rr:{done:!1,value:t(n)}})}filter(t){return new e(this.startFn,e=>{let r;do{if(r=this.nextFn(e),!r.done&&t(r.value))return r}while(!r.done);return rr})}nonNullable(){return this.filter(e=>null!=e)}reduce(e,t){const r=this.iterator();let n=t,i=r.next();for(;!i.done;)n=void 0===n?i.value:e(n,i.value),i=r.next();return n}reduceRight(e,t){return this.recursiveReduce(this.iterator(),e,t)}recursiveReduce(e,t,r){const n=e.next();if(n.done)return r;const i=this.recursiveReduce(e,t,r);return void 0===i?n.value:t(i,n.value)}find(e){const t=this.iterator();let r=t.next();for(;!r.done;){if(e(r.value))return r.value;r=t.next()}}findIndex(e){const t=this.iterator();let r=0,n=t.next();for(;!n.done;){if(e(n.value))return r;n=t.next(),r++}return-1}includes(e){const t=this.iterator();let r=t.next();for(;!r.done;){if(r.value===e)return!0;r=t.next()}return!1}flatMap(t){return new e(()=>({this:this.startFn()}),e=>{do{if(e.iterator){const t=e.iterator.next();if(!t.done)return t;e.iterator=void 0}const{done:r,value:n}=this.nextFn(e.this);if(!r){const r=t(n);if(!er(r))return{done:!1,value:r};e.iterator=r[Symbol.iterator]()}}while(e.iterator);return rr})}flat(t){if(void 0===t&&(t=1),t<=0)return this;const r=t>1?this.flat(t-1):this;return new e(()=>({this:r.startFn()}),e=>{do{if(e.iterator){const t=e.iterator.next();if(!t.done)return t;e.iterator=void 0}const{done:t,value:n}=r.nextFn(e.this);if(!t){if(!er(n))return{done:!1,value:n};e.iterator=n[Symbol.iterator]()}}while(e.iterator);return rr})}head(){const e=this.iterator().next();if(!e.done)return e.value}tail(t=1){return new e(()=>{const e=this.startFn();for(let r=0;r<t;r++){if(this.nextFn(e).done)return e}return e},this.nextFn)}limit(t){return new e(()=>({size:0,state:this.startFn()}),e=>(e.size++,e.size>t?rr:this.nextFn(e.state)))}distinct(t){return new e(()=>({set:new Set,internalState:this.startFn()}),e=>{let r;do{if(r=this.nextFn(e.internalState),!r.done){const n=t?t(r.value):r.value;if(!e.set.has(n))return e.set.add(n),r}}while(!r.done);return rr})}exclude(e,t){const r=new Set;for(const n of e){const e=t?t(n):n;r.add(e)}return this.filter(e=>{const n=t?t(e):e;return!r.has(n)})}};function Zt(e){return"string"==typeof e?e:void 0===e?"undefined":"function"==typeof e.toString?e.toString():Object.prototype.toString.call(e)}function er(e){return!!e&&"function"==typeof e[Symbol.iterator]}ze(Zt,"toString"),ze(er,"isIterable");var tr=new Qt(()=>{},()=>rr),rr=Object.freeze({done:!0,value:void 0});function nr(...e){if(1===e.length){const t=e[0];if(t instanceof Qt)return t;if(er(t))return new Qt(()=>t[Symbol.iterator](),e=>e.next());if("number"==typeof t.length)return new Qt(()=>({index:0}),e=>e.index<t.length?{done:!1,value:t[e.index++]}:rr)}return e.length>1?new Qt(()=>({collIndex:0,arrIndex:0}),t=>{do{if(t.iterator){const e=t.iterator.next();if(!e.done)return e;t.iterator=void 0}if(t.array){if(t.arrIndex<t.array.length)return{done:!1,value:t.array[t.arrIndex++]};t.array=void 0,t.arrIndex=0}if(t.collIndex<e.length){const r=e[t.collIndex++];er(r)?t.iterator=r[Symbol.iterator]():r&&"number"==typeof r.length&&(t.array=r)}}while(t.iterator||t.array||t.collIndex<e.length);return rr}):tr}ze(nr,"stream");var ir,ar=class extends Qt{static{ze(this,"TreeStreamImpl")}constructor(e,t,r){super(()=>({iterators:r?.includeRoot?[[e][Symbol.iterator]()]:[t(e)[Symbol.iterator]()],pruned:!1}),e=>{for(e.pruned&&(e.iterators.pop(),e.pruned=!1);e.iterators.length>0;){const r=e.iterators[e.iterators.length-1].next();if(!r.done)return e.iterators.push(t(r.value)[Symbol.iterator]()),r;e.iterators.pop()}return rr})}iterator(){const e={state:this.startFn(),next:ze(()=>this.nextFn(e.state),"next"),prune:ze(()=>{e.state.pruned=!0},"prune"),[Symbol.iterator]:()=>e};return e}};!function(e){function t(e){return e.reduce((e,t)=>e+t,0)}function r(e){return e.reduce((e,t)=>e*t,0)}function n(e){return e.reduce((e,t)=>Math.min(e,t))}function i(e){return e.reduce((e,t)=>Math.max(e,t))}ze(t,"sum"),e.sum=t,ze(r,"product"),e.product=r,ze(n,"min"),e.min=n,ze(i,"max"),e.max=i}(ir||(ir={}));var sr={};function or(e,t={}){for(const[r,n]of Object.entries(e))r.startsWith("$")||(Array.isArray(n)?n.forEach((n,i)=>{qt(n)&&(n.$container=e,n.$containerProperty=r,n.$containerIndex=i,t.deep&&or(n,t))}):qt(n)&&(n.$container=e,n.$containerProperty=r,t.deep&&or(n,t)))}function lr(e,t){let r=e;for(;r;){if(t(r))return r;r=r.$container}}function cr(e,t){let r=e;for(;r;){if(t(r))return!0;r=r.$container}return!1}function ur(e){const t=dr(e).$document;if(!t)throw new Error("AST node has no document.");return t}function dr(e){for(;e.$container;)e=e.$container;return e}function pr(e){return Ut(e)?e.ref?[e.ref]:[]:Wt(e)?e.items.map(e=>e.ref):[]}function fr(e,t){if(!e)throw new Error("Node must be an AstNode.");const r=t?.range;return new Qt(()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0}),t=>{for(;t.keyIndex<t.keys.length;){const n=t.keys[t.keyIndex];if(!n.startsWith("$")){const i=e[n];if(qt(i)){if(t.keyIndex++,gr(i,r))return{done:!1,value:i}}else if(Array.isArray(i)){for(;t.arrayIndex<i.length;){const e=i[t.arrayIndex++];if(qt(e)&&gr(e,r))return{done:!1,value:e}}t.arrayIndex=0}}t.keyIndex++}return rr})}function hr(e,t){if(!e)throw new Error("Root node must be an AstNode.");return new ar(e,e=>fr(e,t))}function mr(e,t){if(!e)throw new Error("Root node must be an AstNode.");return t?.range&&!gr(e,t.range)?new ar(e,()=>[]):new ar(e,e=>fr(e,t),{includeRoot:!0})}function gr(e,t){if(!t)return!0;const r=e.$cstNode?.range;return!!r&&xi(r,t)}function yr(e){return new Qt(()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0}),t=>{for(;t.keyIndex<t.keys.length;){const r=t.keys[t.keyIndex];if(!r.startsWith("$")){const n=e[r];if(Ut(n)||Wt(n))return t.keyIndex++,{done:!1,value:{reference:n,container:e,property:r}};if(Array.isArray(n)){for(;t.arrayIndex<n.length;){const i=t.arrayIndex++,a=n[i];if(Ut(a)||Wt(n))return{done:!1,value:{reference:a,container:e,property:r,index:i}}}t.arrayIndex=0}}t.keyIndex++}return rr})}function vr(e,t){const r=e.getTypeMetaData(t.$type),n=t;for(const i of Object.values(r.properties))void 0!==i.defaultValue&&void 0===n[i.name]&&(n[i.name]=Tr(i.defaultValue))}function Tr(e){return Array.isArray(e)?[...e.map(Tr)]:e}function Rr(e,t,r){const n={$type:e.$type};r&&(r.set(e,n),r.set(n,e));for(const[i,a]of Object.entries(e))if(!i.startsWith("$"))if(qt(a))n[i]=Rr(a,t,r);else if(Ut(a))n[i]=t(n,i,a.$refNode,a.$refText,a);else if(Array.isArray(a)){const e=[];for(const s of a)qt(s)?e.push(Rr(s,t,r)):Ut(s)?e.push(t(n,i,s.$refNode,s.$refText,s)):e.push(s);n[i]=e}else n[i]=a;return or(n,{deep:!0}),n}Ge(sr,{assignMandatoryProperties:()=>vr,copyAstNode:()=>Rr,findRootNode:()=>dr,getContainerOfType:()=>lr,getDocument:()=>ur,getReferenceNodes:()=>pr,hasContainerOfType:()=>cr,linkContentToContainer:()=>or,streamAllContents:()=>hr,streamAst:()=>mr,streamContents:()=>fr,streamReferences:()=>yr}),ze(or,"linkContentToContainer"),ze(lr,"getContainerOfType"),ze(cr,"hasContainerOfType"),ze(ur,"getDocument"),ze(dr,"findRootNode"),ze(pr,"getReferenceNodes"),ze(fr,"streamContents"),ze(hr,"streamAllContents"),ze(mr,"streamAst"),ze(gr,"isAstNodeInRange"),ze(yr,"streamReferences"),ze(vr,"assignMandatoryProperties"),ze(Tr,"copyDefaultValue"),ze(Rr,"copyAstNode");var $r={};Ge($r,{AbstractElement:()=>Er,AbstractParserRule:()=>Ar,AbstractRule:()=>Sr,AbstractType:()=>xr,Action:()=>Ir,Alternatives:()=>Pr,ArrayLiteral:()=>Or,ArrayType:()=>Mr,Assignment:()=>Fr,BooleanLiteral:()=>Kr,CharacterRange:()=>qr,Condition:()=>Wr,Conjunction:()=>Vr,CrossReference:()=>Yr,Disjunction:()=>Xr,EndOfFile:()=>Zr,Grammar:()=>tn,GrammarImport:()=>nn,Group:()=>sn,InferredType:()=>ln,InfixRule:()=>un,InfixRuleOperatorList:()=>pn,InfixRuleOperators:()=>hn,Interface:()=>gn,Keyword:()=>vn,LangiumGrammarAstReflection:()=>Ri,LangiumGrammarTerminals:()=>br,NamedArgument:()=>Rn,NegatedToken:()=>bn,Negation:()=>Cn,NumberLiteral:()=>kn,Parameter:()=>wn,ParameterReference:()=>Nn,ParserRule:()=>_n,ReferenceType:()=>Dn,RegexToken:()=>Ln,ReturnType:()=>jn,RuleCall:()=>zn,SimpleType:()=>Gn,StringLiteral:()=>Un,TerminalAlternatives:()=>Bn,TerminalElement:()=>Hn,TerminalGroup:()=>Jn,TerminalRule:()=>Qn,TerminalRuleCall:()=>ei,Type:()=>ri,TypeAttribute:()=>ii,TypeDefinition:()=>si,UnionType:()=>li,UnorderedGroup:()=>ui,UntilToken:()=>pi,ValueLiteral:()=>hi,Wildcard:()=>gi,isAbstractElement:()=>Cr,isAbstractParserRule:()=>kr,isAbstractRule:()=>wr,isAbstractType:()=>Nr,isAction:()=>_r,isAlternatives:()=>Dr,isArrayLiteral:()=>Lr,isArrayType:()=>jr,isAssignment:()=>zr,isBooleanLiteral:()=>Gr,isCharacterRange:()=>Ur,isCondition:()=>Br,isConjunction:()=>Hr,isCrossReference:()=>Jr,isDisjunction:()=>Qr,isEndOfFile:()=>en,isGrammar:()=>rn,isGrammarImport:()=>an,isGroup:()=>on,isInferredType:()=>cn,isInfixRule:()=>dn,isInfixRuleOperatorList:()=>fn,isInfixRuleOperators:()=>mn,isInterface:()=>yn,isKeyword:()=>Tn,isNamedArgument:()=>$n,isNegatedToken:()=>En,isNegation:()=>An,isNumberLiteral:()=>Sn,isParameter:()=>xn,isParameterReference:()=>In,isParserRule:()=>Pn,isReferenceType:()=>On,isRegexToken:()=>Mn,isReturnType:()=>Fn,isRuleCall:()=>Kn,isSimpleType:()=>qn,isStringLiteral:()=>Wn,isTerminalAlternatives:()=>Vn,isTerminalElement:()=>Yn,isTerminalGroup:()=>Xn,isTerminalRule:()=>Zn,isTerminalRuleCall:()=>ti,isType:()=>ni,isTypeAttribute:()=>ai,isTypeDefinition:()=>oi,isUnionType:()=>ci,isUnorderedGroup:()=>di,isUntilToken:()=>fi,isValueLiteral:()=>mi,isWildcard:()=>yi,reflection:()=>$i});var br={ID:/\^?[_a-zA-Z][\w_]*/,STRING:/"(\\.|[^"\\])*"|'(\\.|[^'\\])*'/,NUMBER:/NaN|-?((\d*\.\d+|\d+)([Ee][+-]?\d+)?|Infinity)/,RegexLiteral:/\/(?![*+?])(?:[^\r\n\[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*\])+\/[a-z]*/,WS:/\s+/,ML_COMMENT:/\/\*[\s\S]*?\*\//,SL_COMMENT:/\/\/[^\n\r]*/},Er={$type:"AbstractElement",cardinality:"cardinality"};function Cr(e){return $i.isInstance(e,Er.$type)}ze(Cr,"isAbstractElement");var Ar={$type:"AbstractParserRule"};function kr(e){return $i.isInstance(e,Ar.$type)}ze(kr,"isAbstractParserRule");var Sr={$type:"AbstractRule"};function wr(e){return $i.isInstance(e,Sr.$type)}ze(wr,"isAbstractRule");var xr={$type:"AbstractType"};function Nr(e){return $i.isInstance(e,xr.$type)}ze(Nr,"isAbstractType");var Ir={$type:"Action",cardinality:"cardinality",feature:"feature",inferredType:"inferredType",operator:"operator",type:"type"};function _r(e){return $i.isInstance(e,Ir.$type)}ze(_r,"isAction");var Pr={$type:"Alternatives",cardinality:"cardinality",elements:"elements"};function Dr(e){return $i.isInstance(e,Pr.$type)}ze(Dr,"isAlternatives");var Or={$type:"ArrayLiteral",elements:"elements"};function Lr(e){return $i.isInstance(e,Or.$type)}ze(Lr,"isArrayLiteral");var Mr={$type:"ArrayType",elementType:"elementType"};function jr(e){return $i.isInstance(e,Mr.$type)}ze(jr,"isArrayType");var Fr={$type:"Assignment",cardinality:"cardinality",feature:"feature",operator:"operator",predicate:"predicate",terminal:"terminal"};function zr(e){return $i.isInstance(e,Fr.$type)}ze(zr,"isAssignment");var Kr={$type:"BooleanLiteral",true:"true"};function Gr(e){return $i.isInstance(e,Kr.$type)}ze(Gr,"isBooleanLiteral");var qr={$type:"CharacterRange",cardinality:"cardinality",left:"left",lookahead:"lookahead",parenthesized:"parenthesized",right:"right"};function Ur(e){return $i.isInstance(e,qr.$type)}ze(Ur,"isCharacterRange");var Wr={$type:"Condition"};function Br(e){return $i.isInstance(e,Wr.$type)}ze(Br,"isCondition");var Vr={$type:"Conjunction",left:"left",right:"right"};function Hr(e){return $i.isInstance(e,Vr.$type)}ze(Hr,"isConjunction");var Yr={$type:"CrossReference",cardinality:"cardinality",deprecatedSyntax:"deprecatedSyntax",isMulti:"isMulti",terminal:"terminal",type:"type"};function Jr(e){return $i.isInstance(e,Yr.$type)}ze(Jr,"isCrossReference");var Xr={$type:"Disjunction",left:"left",right:"right"};function Qr(e){return $i.isInstance(e,Xr.$type)}ze(Qr,"isDisjunction");var Zr={$type:"EndOfFile",cardinality:"cardinality"};function en(e){return $i.isInstance(e,Zr.$type)}ze(en,"isEndOfFile");var tn={$type:"Grammar",imports:"imports",interfaces:"interfaces",isDeclared:"isDeclared",name:"name",rules:"rules",types:"types"};function rn(e){return $i.isInstance(e,tn.$type)}ze(rn,"isGrammar");var nn={$type:"GrammarImport",path:"path"};function an(e){return $i.isInstance(e,nn.$type)}ze(an,"isGrammarImport");var sn={$type:"Group",cardinality:"cardinality",elements:"elements",guardCondition:"guardCondition",predicate:"predicate"};function on(e){return $i.isInstance(e,sn.$type)}ze(on,"isGroup");var ln={$type:"InferredType",name:"name"};function cn(e){return $i.isInstance(e,ln.$type)}ze(cn,"isInferredType");var un={$type:"InfixRule",call:"call",dataType:"dataType",inferredType:"inferredType",name:"name",operators:"operators",parameters:"parameters",returnType:"returnType"};function dn(e){return $i.isInstance(e,un.$type)}ze(dn,"isInfixRule");var pn={$type:"InfixRuleOperatorList",associativity:"associativity",operators:"operators"};function fn(e){return $i.isInstance(e,pn.$type)}ze(fn,"isInfixRuleOperatorList");var hn={$type:"InfixRuleOperators",precedences:"precedences"};function mn(e){return $i.isInstance(e,hn.$type)}ze(mn,"isInfixRuleOperators");var gn={$type:"Interface",attributes:"attributes",name:"name",superTypes:"superTypes"};function yn(e){return $i.isInstance(e,gn.$type)}ze(yn,"isInterface");var vn={$type:"Keyword",cardinality:"cardinality",predicate:"predicate",value:"value"};function Tn(e){return $i.isInstance(e,vn.$type)}ze(Tn,"isKeyword");var Rn={$type:"NamedArgument",calledByName:"calledByName",parameter:"parameter",value:"value"};function $n(e){return $i.isInstance(e,Rn.$type)}ze($n,"isNamedArgument");var bn={$type:"NegatedToken",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",terminal:"terminal"};function En(e){return $i.isInstance(e,bn.$type)}ze(En,"isNegatedToken");var Cn={$type:"Negation",value:"value"};function An(e){return $i.isInstance(e,Cn.$type)}ze(An,"isNegation");var kn={$type:"NumberLiteral",value:"value"};function Sn(e){return $i.isInstance(e,kn.$type)}ze(Sn,"isNumberLiteral");var wn={$type:"Parameter",name:"name"};function xn(e){return $i.isInstance(e,wn.$type)}ze(xn,"isParameter");var Nn={$type:"ParameterReference",parameter:"parameter"};function In(e){return $i.isInstance(e,Nn.$type)}ze(In,"isParameterReference");var _n={$type:"ParserRule",dataType:"dataType",definition:"definition",entry:"entry",fragment:"fragment",inferredType:"inferredType",name:"name",parameters:"parameters",returnType:"returnType"};function Pn(e){return $i.isInstance(e,_n.$type)}ze(Pn,"isParserRule");var Dn={$type:"ReferenceType",isMulti:"isMulti",referenceType:"referenceType"};function On(e){return $i.isInstance(e,Dn.$type)}ze(On,"isReferenceType");var Ln={$type:"RegexToken",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",regex:"regex"};function Mn(e){return $i.isInstance(e,Ln.$type)}ze(Mn,"isRegexToken");var jn={$type:"ReturnType",name:"name"};function Fn(e){return $i.isInstance(e,jn.$type)}ze(Fn,"isReturnType");var zn={$type:"RuleCall",arguments:"arguments",cardinality:"cardinality",predicate:"predicate",rule:"rule"};function Kn(e){return $i.isInstance(e,zn.$type)}ze(Kn,"isRuleCall");var Gn={$type:"SimpleType",primitiveType:"primitiveType",stringType:"stringType",typeRef:"typeRef"};function qn(e){return $i.isInstance(e,Gn.$type)}ze(qn,"isSimpleType");var Un={$type:"StringLiteral",value:"value"};function Wn(e){return $i.isInstance(e,Un.$type)}ze(Wn,"isStringLiteral");var Bn={$type:"TerminalAlternatives",cardinality:"cardinality",elements:"elements",lookahead:"lookahead",parenthesized:"parenthesized"};function Vn(e){return $i.isInstance(e,Bn.$type)}ze(Vn,"isTerminalAlternatives");var Hn={$type:"TerminalElement",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized"};function Yn(e){return $i.isInstance(e,Hn.$type)}ze(Yn,"isTerminalElement");var Jn={$type:"TerminalGroup",cardinality:"cardinality",elements:"elements",lookahead:"lookahead",parenthesized:"parenthesized"};function Xn(e){return $i.isInstance(e,Jn.$type)}ze(Xn,"isTerminalGroup");var Qn={$type:"TerminalRule",definition:"definition",fragment:"fragment",hidden:"hidden",name:"name",type:"type"};function Zn(e){return $i.isInstance(e,Qn.$type)}ze(Zn,"isTerminalRule");var ei={$type:"TerminalRuleCall",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",rule:"rule"};function ti(e){return $i.isInstance(e,ei.$type)}ze(ti,"isTerminalRuleCall");var ri={$type:"Type",name:"name",type:"type"};function ni(e){return $i.isInstance(e,ri.$type)}ze(ni,"isType");var ii={$type:"TypeAttribute",defaultValue:"defaultValue",isOptional:"isOptional",name:"name",type:"type"};function ai(e){return $i.isInstance(e,ii.$type)}ze(ai,"isTypeAttribute");var si={$type:"TypeDefinition"};function oi(e){return $i.isInstance(e,si.$type)}ze(oi,"isTypeDefinition");var li={$type:"UnionType",types:"types"};function ci(e){return $i.isInstance(e,li.$type)}ze(ci,"isUnionType");var ui={$type:"UnorderedGroup",cardinality:"cardinality",elements:"elements"};function di(e){return $i.isInstance(e,ui.$type)}ze(di,"isUnorderedGroup");var pi={$type:"UntilToken",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",terminal:"terminal"};function fi(e){return $i.isInstance(e,pi.$type)}ze(fi,"isUntilToken");var hi={$type:"ValueLiteral"};function mi(e){return $i.isInstance(e,hi.$type)}ze(mi,"isValueLiteral");var gi={$type:"Wildcard",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized"};function yi(e){return $i.isInstance(e,gi.$type)}ze(yi,"isWildcard");var vi,Ti,Ri=class extends Ht{static{ze(this,"LangiumGrammarAstReflection")}constructor(){super(...arguments),this.types={AbstractElement:{name:Er.$type,properties:{cardinality:{name:Er.cardinality}},superTypes:[]},AbstractParserRule:{name:Ar.$type,properties:{},superTypes:[Sr.$type,xr.$type]},AbstractRule:{name:Sr.$type,properties:{},superTypes:[]},AbstractType:{name:xr.$type,properties:{},superTypes:[]},Action:{name:Ir.$type,properties:{cardinality:{name:Ir.cardinality},feature:{name:Ir.feature},inferredType:{name:Ir.inferredType},operator:{name:Ir.operator},type:{name:Ir.type,referenceType:xr.$type}},superTypes:[Er.$type]},Alternatives:{name:Pr.$type,properties:{cardinality:{name:Pr.cardinality},elements:{name:Pr.elements,defaultValue:[]}},superTypes:[Er.$type]},ArrayLiteral:{name:Or.$type,properties:{elements:{name:Or.elements,defaultValue:[]}},superTypes:[hi.$type]},ArrayType:{name:Mr.$type,properties:{elementType:{name:Mr.elementType}},superTypes:[si.$type]},Assignment:{name:Fr.$type,properties:{cardinality:{name:Fr.cardinality},feature:{name:Fr.feature},operator:{name:Fr.operator},predicate:{name:Fr.predicate},terminal:{name:Fr.terminal}},superTypes:[Er.$type]},BooleanLiteral:{name:Kr.$type,properties:{true:{name:Kr.true,defaultValue:!1}},superTypes:[Wr.$type,hi.$type]},CharacterRange:{name:qr.$type,properties:{cardinality:{name:qr.cardinality},left:{name:qr.left},lookahead:{name:qr.lookahead},parenthesized:{name:qr.parenthesized,defaultValue:!1},right:{name:qr.right}},superTypes:[Hn.$type]},Condition:{name:Wr.$type,properties:{},superTypes:[]},Conjunction:{name:Vr.$type,properties:{left:{name:Vr.left},right:{name:Vr.right}},superTypes:[Wr.$type]},CrossReference:{name:Yr.$type,properties:{cardinality:{name:Yr.cardinality},deprecatedSyntax:{name:Yr.deprecatedSyntax,defaultValue:!1},isMulti:{name:Yr.isMulti,defaultValue:!1},terminal:{name:Yr.terminal},type:{name:Yr.type,referenceType:xr.$type}},superTypes:[Er.$type]},Disjunction:{name:Xr.$type,properties:{left:{name:Xr.left},right:{name:Xr.right}},superTypes:[Wr.$type]},EndOfFile:{name:Zr.$type,properties:{cardinality:{name:Zr.cardinality}},superTypes:[Er.$type]},Grammar:{name:tn.$type,properties:{imports:{name:tn.imports,defaultValue:[]},interfaces:{name:tn.interfaces,defaultValue:[]},isDeclared:{name:tn.isDeclared,defaultValue:!1},name:{name:tn.name},rules:{name:tn.rules,defaultValue:[]},types:{name:tn.types,defaultValue:[]}},superTypes:[]},GrammarImport:{name:nn.$type,properties:{path:{name:nn.path}},superTypes:[]},Group:{name:sn.$type,properties:{cardinality:{name:sn.cardinality},elements:{name:sn.elements,defaultValue:[]},guardCondition:{name:sn.guardCondition},predicate:{name:sn.predicate}},superTypes:[Er.$type]},InferredType:{name:ln.$type,properties:{name:{name:ln.name}},superTypes:[xr.$type]},InfixRule:{name:un.$type,properties:{call:{name:un.call},dataType:{name:un.dataType},inferredType:{name:un.inferredType},name:{name:un.name},operators:{name:un.operators},parameters:{name:un.parameters,defaultValue:[]},returnType:{name:un.returnType,referenceType:xr.$type}},superTypes:[Ar.$type]},InfixRuleOperatorList:{name:pn.$type,properties:{associativity:{name:pn.associativity},operators:{name:pn.operators,defaultValue:[]}},superTypes:[]},InfixRuleOperators:{name:hn.$type,properties:{precedences:{name:hn.precedences,defaultValue:[]}},superTypes:[]},Interface:{name:gn.$type,properties:{attributes:{name:gn.attributes,defaultValue:[]},name:{name:gn.name},superTypes:{name:gn.superTypes,defaultValue:[],referenceType:xr.$type}},superTypes:[xr.$type]},Keyword:{name:vn.$type,properties:{cardinality:{name:vn.cardinality},predicate:{name:vn.predicate},value:{name:vn.value}},superTypes:[Er.$type]},NamedArgument:{name:Rn.$type,properties:{calledByName:{name:Rn.calledByName,defaultValue:!1},parameter:{name:Rn.parameter,referenceType:wn.$type},value:{name:Rn.value}},superTypes:[]},NegatedToken:{name:bn.$type,properties:{cardinality:{name:bn.cardinality},lookahead:{name:bn.lookahead},parenthesized:{name:bn.parenthesized,defaultValue:!1},terminal:{name:bn.terminal}},superTypes:[Hn.$type]},Negation:{name:Cn.$type,properties:{value:{name:Cn.value}},superTypes:[Wr.$type]},NumberLiteral:{name:kn.$type,properties:{value:{name:kn.value}},superTypes:[hi.$type]},Parameter:{name:wn.$type,properties:{name:{name:wn.name}},superTypes:[]},ParameterReference:{name:Nn.$type,properties:{parameter:{name:Nn.parameter,referenceType:wn.$type}},superTypes:[Wr.$type]},ParserRule:{name:_n.$type,properties:{dataType:{name:_n.dataType},definition:{name:_n.definition},entry:{name:_n.entry,defaultValue:!1},fragment:{name:_n.fragment,defaultValue:!1},inferredType:{name:_n.inferredType},name:{name:_n.name},parameters:{name:_n.parameters,defaultValue:[]},returnType:{name:_n.returnType,referenceType:xr.$type}},superTypes:[Ar.$type]},ReferenceType:{name:Dn.$type,properties:{isMulti:{name:Dn.isMulti,defaultValue:!1},referenceType:{name:Dn.referenceType}},superTypes:[si.$type]},RegexToken:{name:Ln.$type,properties:{cardinality:{name:Ln.cardinality},lookahead:{name:Ln.lookahead},parenthesized:{name:Ln.parenthesized,defaultValue:!1},regex:{name:Ln.regex}},superTypes:[Hn.$type]},ReturnType:{name:jn.$type,properties:{name:{name:jn.name}},superTypes:[]},RuleCall:{name:zn.$type,properties:{arguments:{name:zn.arguments,defaultValue:[]},cardinality:{name:zn.cardinality},predicate:{name:zn.predicate},rule:{name:zn.rule,referenceType:Sr.$type}},superTypes:[Er.$type]},SimpleType:{name:Gn.$type,properties:{primitiveType:{name:Gn.primitiveType},stringType:{name:Gn.stringType},typeRef:{name:Gn.typeRef,referenceType:xr.$type}},superTypes:[si.$type]},StringLiteral:{name:Un.$type,properties:{value:{name:Un.value}},superTypes:[hi.$type]},TerminalAlternatives:{name:Bn.$type,properties:{cardinality:{name:Bn.cardinality},elements:{name:Bn.elements,defaultValue:[]},lookahead:{name:Bn.lookahead},parenthesized:{name:Bn.parenthesized,defaultValue:!1}},superTypes:[Hn.$type]},TerminalElement:{name:Hn.$type,properties:{cardinality:{name:Hn.cardinality},lookahead:{name:Hn.lookahead},parenthesized:{name:Hn.parenthesized,defaultValue:!1}},superTypes:[Er.$type]},TerminalGroup:{name:Jn.$type,properties:{cardinality:{name:Jn.cardinality},elements:{name:Jn.elements,defaultValue:[]},lookahead:{name:Jn.lookahead},parenthesized:{name:Jn.parenthesized,defaultValue:!1}},superTypes:[Hn.$type]},TerminalRule:{name:Qn.$type,properties:{definition:{name:Qn.definition},fragment:{name:Qn.fragment,defaultValue:!1},hidden:{name:Qn.hidden,defaultValue:!1},name:{name:Qn.name},type:{name:Qn.type}},superTypes:[Sr.$type]},TerminalRuleCall:{name:ei.$type,properties:{cardinality:{name:ei.cardinality},lookahead:{name:ei.lookahead},parenthesized:{name:ei.parenthesized,defaultValue:!1},rule:{name:ei.rule,referenceType:Qn.$type}},superTypes:[Hn.$type]},Type:{name:ri.$type,properties:{name:{name:ri.name},type:{name:ri.type}},superTypes:[xr.$type]},TypeAttribute:{name:ii.$type,properties:{defaultValue:{name:ii.defaultValue},isOptional:{name:ii.isOptional,defaultValue:!1},name:{name:ii.name},type:{name:ii.type}},superTypes:[]},TypeDefinition:{name:si.$type,properties:{},superTypes:[]},UnionType:{name:li.$type,properties:{types:{name:li.types,defaultValue:[]}},superTypes:[si.$type]},UnorderedGroup:{name:ui.$type,properties:{cardinality:{name:ui.cardinality},elements:{name:ui.elements,defaultValue:[]}},superTypes:[Er.$type]},UntilToken:{name:pi.$type,properties:{cardinality:{name:pi.cardinality},lookahead:{name:pi.lookahead},parenthesized:{name:pi.parenthesized,defaultValue:!1},terminal:{name:pi.terminal}},superTypes:[Hn.$type]},ValueLiteral:{name:hi.$type,properties:{},superTypes:[]},Wildcard:{name:gi.$type,properties:{cardinality:{name:gi.cardinality},lookahead:{name:gi.lookahead},parenthesized:{name:gi.parenthesized,defaultValue:!1}},superTypes:[Hn.$type]}}}},$i=new Ri;function bi(e){let t=e,r=!1;for(;t;){const e=lr(t.grammarSource,Pn);if(!e||!e.dataType)return r?t:void 0;t=t.container,r=!0}}function Ei(e){return new ar(e,e=>Yt(e)?e.content:[],{includeRoot:!0})}function Ci(e){return Ei(e).filter(Jt)}function Ai(e,t){for(;e.container;)if((e=e.container)===t)return!0;return!1}function ki(e){return{start:{character:e.startColumn-1,line:e.startLine-1},end:{character:e.endColumn,line:e.endLine-1}}}function Si(e){if(!e)return;const{offset:t,end:r,range:n}=e;return{range:n,offset:t,end:r,length:r-t}}function wi(e,t){if(e.end.line<t.start.line||e.end.line===t.start.line&&e.end.character<=t.start.character)return vi.Before;if(e.start.line>t.end.line||e.start.line===t.end.line&&e.start.character>=t.end.character)return vi.After;const r=e.start.line>t.start.line||e.start.line===t.start.line&&e.start.character>=t.start.character,n=e.end.line<t.end.line||e.end.line===t.end.line&&e.end.character<=t.end.character;return r&&n?vi.Inside:r?vi.OverlapBack:n?vi.OverlapFront:vi.Outside}function xi(e,t){return wi(e,t)>vi.After}ze(bi,"getDatatypeNode"),ze(Ei,"streamCst"),ze(Ci,"flattenCst"),ze(Ai,"isChildNode"),ze(ki,"tokenToRange"),ze(Si,"toDocumentSegment"),(Ti=vi||(vi={}))[Ti.Before=0]="Before",Ti[Ti.After=1]="After",Ti[Ti.OverlapFront=2]="OverlapFront",Ti[Ti.OverlapBack=3]="OverlapBack",Ti[Ti.Inside=4]="Inside",Ti[Ti.Outside=5]="Outside",ze(wi,"compareRange"),ze(xi,"inRange");var Ni=/^[\w\p{L}]$/u;function Ii(e,t,r=Ni){if(e){if(t>0){const n=t-e.offset,i=e.text.charAt(n);r.test(i)||t--}return Di(e,t)}}function _i(e,t){if(e){const r=Mi(e,!0);if(r&&Pi(r,t))return r;if(Xt(e)){for(let r=e.content.findIndex(e=>!e.hidden)-1;r>=0;r--){const n=e.content[r];if(Pi(n,t))return n}}}}function Pi(e,t){return Jt(e)&&t.includes(e.tokenType.name)}function Di(e,t){if(Jt(e))return e;if(Yt(e)){const r=Li(e,t,!1);if(r)return Di(r,t)}}function Oi(e,t){if(Jt(e))return e;if(Yt(e)){const r=Li(e,t,!0);if(r)return Oi(r,t)}}function Li(e,t,r){let n,i=0,a=e.content.length-1;for(;i<=a;){const s=Math.floor((i+a)/2),o=e.content[s];if(o.offset<=t&&o.end>t)return o;o.end<=t?(n=r?o:void 0,i=s+1):a=s-1}return n}function Mi(e,t=!0){for(;e.container;){const r=e.container;let n=r.content.indexOf(e);for(;n>0;){n--;const e=r.content[n];if(t||!e.hidden)return e}e=r}}function ji(e,t=!0){for(;e.container;){const r=e.container;let n=r.content.indexOf(e);const i=r.content.length-1;for(;n<i;){n++;const e=r.content[n];if(t||!e.hidden)return e}e=r}}function Fi(e){if(0===e.range.start.character)return e;const t=e.range.start.line;let r,n=e;for(;e.container;){const i=e.container,a=r??i.content.indexOf(e);if(0===a?(e=i,r=void 0):(r=a-1,e=i.content[r]),e.range.start.line!==t)break;n=e}return n}function zi(e,t){const r=Ki(e,t);return r?r.parent.content.slice(r.a+1,r.b):[]}function Ki(e,t){const r=Gi(e),n=Gi(t);let i;for(let a=0;a<r.length&&a<n.length;a++){const e=r[a],t=n[a];if(e.parent!==t.parent)break;i={parent:e.parent,a:e.index,b:t.index}}return i}function Gi(e){const t=[];for(;e.container;){const r=e.container,n=r.content.indexOf(e);t.push({parent:r,index:n}),e=r}return t.reverse()}ze(Ii,"findDeclarationNodeAtOffset"),ze(_i,"findCommentNode"),ze(Pi,"isCommentNode"),ze(Di,"findLeafNodeAtOffset"),ze(Oi,"findLeafNodeBeforeOffset"),ze(Li,"binarySearch"),ze(Mi,"getPreviousNode"),ze(ji,"getNextNode"),ze(Fi,"getStartlineNode"),ze(zi,"getInteriorNodes"),ze(Ki,"getCommonParent"),ze(Gi,"getParentChain");var qi={};Ge(qi,{findAssignment:()=>_a,findNameAssignment:()=>Pa,findNodeForKeyword:()=>Na,findNodeForProperty:()=>Sa,findNodesForKeyword:()=>xa,findNodesForKeywordInternal:()=>Ia,findNodesForProperty:()=>ka,getActionAtElement:()=>Oa,getActionType:()=>Wa,getAllReachableRules:()=>$a,getAllRulesUsedForCrossReferences:()=>Ea,getCrossReferenceTerminal:()=>Ca,getEntryRule:()=>Ta,getExplicitRuleType:()=>qa,getHiddenRules:()=>Ra,getRuleType:()=>Va,getRuleTypeName:()=>Ba,getTypeName:()=>Ua,isArrayCardinality:()=>Ma,isArrayOperator:()=>ja,isCommentTerminal:()=>Aa,isDataType:()=>Ka,isDataTypeRule:()=>Fa,isOptionalCardinality:()=>La,terminalRegex:()=>Ha});var Ui=class extends Error{static{ze(this,"ErrorWithLocation")}constructor(e,t){super(e?`${t} at ${e.range.start.line}:${e.range.start.character}`:t)}};function Wi(e,t="Error: Got unexpected value."){throw new Error(t)}function Bi(e,t="Error: Condition is violated."){if(!e)throw new Error(t)}ze(Wi,"assertUnreachable"),ze(Bi,"assertCondition");var Vi={};function Hi(e){return e.charCodeAt(0)}function Yi(e,t){Array.isArray(e)?e.forEach(function(e){t.push(e)}):t.push(e)}function Ji(e,t){if(!0===e[t])throw"duplicate flag "+t;e[t];e[t]=!0}function Xi(e){if(void 0===e)throw Error("Internal Error - Should never get here!");return!0}function Qi(){throw Error("Internal Error - Should never get here!")}function Zi(e){return"Character"===e.type}Ge(Vi,{NEWLINE_REGEXP:()=>la,escapeRegExp:()=>ga,getTerminalParts:()=>pa,isMultilineComment:()=>fa,isWhitespace:()=>ma,partialMatches:()=>ya,partialRegExp:()=>va,whitespaceCharacters:()=>ha}),ze(Hi,"cc"),ze(Yi,"insertToSet"),ze(Ji,"addFlag"),ze(Xi,"ASSERT_EXISTS"),ze(Qi,"ASSERT_NEVER_REACH_HERE"),ze(Zi,"isCharacter");var ea=[];for(let $L=Hi("0");$L<=Hi("9");$L++)ea.push($L);var ta=[Hi("_")].concat(ea);for(let $L=Hi("a");$L<=Hi("z");$L++)ta.push($L);for(let $L=Hi("A");$L<=Hi("Z");$L++)ta.push($L);var ra=[Hi(" "),Hi("\f"),Hi("\n"),Hi("\r"),Hi("\t"),Hi("\v"),Hi("\t"),Hi("\xa0"),Hi("\u1680"),Hi("\u2000"),Hi("\u2001"),Hi("\u2002"),Hi("\u2003"),Hi("\u2004"),Hi("\u2005"),Hi("\u2006"),Hi("\u2007"),Hi("\u2008"),Hi("\u2009"),Hi("\u200a"),Hi("\u2028"),Hi("\u2029"),Hi("\u202f"),Hi("\u205f"),Hi("\u3000"),Hi("\ufeff")],na=/[0-9a-fA-F]/,ia=/[0-9]/,aa=/[1-9]/,sa=class{static{ze(this,"RegExpParser")}constructor(){this.idx=0,this.input="",this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(e){this.idx=e.idx,this.input=e.input,this.groupIdx=e.groupIdx}pattern(e){this.idx=0,this.input=e,this.groupIdx=0,this.consumeChar("/");const t=this.disjunction();this.consumeChar("/");const r={type:"Flags",loc:{begin:this.idx,end:e.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case"g":Ji(r,"global");break;case"i":Ji(r,"ignoreCase");break;case"m":Ji(r,"multiLine");break;case"u":Ji(r,"unicode");break;case"y":Ji(r,"sticky")}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:r,value:t,loc:this.loc(0)}}disjunction(){const e=[],t=this.idx;for(e.push(this.alternative());"|"===this.peekChar();)this.consumeChar("|"),e.push(this.alternative());return{type:"Disjunction",value:e,loc:this.loc(t)}}alternative(){const e=[],t=this.idx;for(;this.isTerm();)e.push(this.term());return{type:"Alternative",value:e,loc:this.loc(t)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){const e=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(e)};case"$":return{type:"EndAnchor",loc:this.loc(e)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(e)};case"B":return{type:"NonWordBoundary",loc:this.loc(e)}}throw Error("Invalid Assertion Escape");case"(":let t;switch(this.consumeChar("?"),this.popChar()){case"=":t="Lookahead";break;case"!":t="NegativeLookahead";break;case"<":switch(this.popChar()){case"=":t="Lookbehind";break;case"!":t="NegativeLookbehind"}}Xi(t);const r=this.disjunction();return this.consumeChar(")"),{type:t,value:r,loc:this.loc(e)}}return Qi()}quantifier(e=!1){let t;const r=this.idx;switch(this.popChar()){case"*":t={atLeast:0,atMost:1/0};break;case"+":t={atLeast:1,atMost:1/0};break;case"?":t={atLeast:0,atMost:1};break;case"{":const r=this.integerIncludingZero();switch(this.popChar()){case"}":t={atLeast:r,atMost:r};break;case",":let e;this.isDigit()?(e=this.integerIncludingZero(),t={atLeast:r,atMost:e}):t={atLeast:r,atMost:1/0},this.consumeChar("}")}if(!0===e&&void 0===t)return;Xi(t)}if(!0!==e||void 0!==t)return Xi(t)?("?"===this.peekChar(0)?(this.consumeChar("?"),t.greedy=!1):t.greedy=!0,t.type="Quantifier",t.loc=this.loc(r),t):void 0}atom(){let e;const t=this.idx;switch(this.peekChar()){case".":e=this.dotAll();break;case"\\":e=this.atomEscape();break;case"[":e=this.characterClass();break;case"(":e=this.group()}return void 0===e&&this.isPatternCharacter()&&(e=this.patternCharacter()),Xi(e)?(e.loc=this.loc(t),this.isQuantifier()&&(e.quantifier=this.quantifier()),e):Qi()}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[Hi("\n"),Hi("\r"),Hi("\u2028"),Hi("\u2029")]}}atomEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}decimalEscapeAtom(){return{type:"GroupBackReference",value:this.positiveInteger()}}characterClassEscape(){let e,t=!1;switch(this.popChar()){case"d":e=ea;break;case"D":e=ea,t=!0;break;case"s":e=ra;break;case"S":e=ra,t=!0;break;case"w":e=ta;break;case"W":e=ta,t=!0}return Xi(e)?{type:"Set",value:e,complement:t}:Qi()}controlEscapeAtom(){let e;switch(this.popChar()){case"f":e=Hi("\f");break;case"n":e=Hi("\n");break;case"r":e=Hi("\r");break;case"t":e=Hi("\t");break;case"v":e=Hi("\v")}return Xi(e)?{type:"Character",value:e}:Qi()}controlLetterEscapeAtom(){this.consumeChar("c");const e=this.popChar();if(!1===/[a-zA-Z]/.test(e))throw Error("Invalid ");return{type:"Character",value:e.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar("0"),{type:"Character",value:Hi("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){return{type:"Character",value:Hi(this.popChar())}}classPatternCharacterAtom(){switch(this.peekChar()){case"\n":case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:return{type:"Character",value:Hi(this.popChar())}}}characterClass(){const e=[];let t=!1;for(this.consumeChar("["),"^"===this.peekChar(0)&&(this.consumeChar("^"),t=!0);this.isClassAtom();){const t=this.classAtom();t.type;if(Zi(t)&&this.isRangeDash()){this.consumeChar("-");const r=this.classAtom();r.type;if(Zi(r)){if(r.value<t.value)throw Error("Range out of order in character class");e.push({from:t.value,to:r.value})}else Yi(t.value,e),e.push(Hi("-")),Yi(r.value,e)}else Yi(t.value,e)}return this.consumeChar("]"),{type:"Set",complement:t,value:e}}classAtom(){switch(this.peekChar()){case"]":case"\n":case"\r":case"\u2028":case"\u2029":throw Error("TBD");case"\\":return this.classEscape();default:return this.classPatternCharacterAtom()}}classEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"b":return this.consumeChar("b"),{type:"Character",value:Hi("\b")};case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}group(){let e=!0;if(this.consumeChar("("),"?"===this.peekChar(0))this.consumeChar("?"),this.consumeChar(":"),e=!1;else this.groupIdx++;const t=this.disjunction();this.consumeChar(")");const r={type:"Group",capturing:e,value:t};return e&&(r.idx=this.groupIdx),r}positiveInteger(){let e=this.popChar();if(!1===aa.test(e))throw Error("Expecting a positive integer");for(;ia.test(this.peekChar(0));)e+=this.popChar();return parseInt(e,10)}integerIncludingZero(){let e=this.popChar();if(!1===ia.test(e))throw Error("Expecting an integer");for(;ia.test(this.peekChar(0));)e+=this.popChar();return parseInt(e,10)}patternCharacter(){const e=this.popChar();switch(e){case"\n":case"\r":case"\u2028":case"\u2029":case"^":case"$":case"\\":case".":case"*":case"+":case"?":case"(":case")":case"[":case"|":throw Error("TBD");default:return{type:"Character",value:Hi(e)}}}isRegExpFlag(){switch(this.peekChar(0)){case"g":case"i":case"m":case"u":case"y":return!0;default:return!1}}isRangeDash(){return"-"===this.peekChar()&&this.isClassAtom(1)}isDigit(){return ia.test(this.peekChar(0))}isClassAtom(e=0){switch(this.peekChar(e)){case"]":case"\n":case"\r":case"\u2028":case"\u2029":return!1;default:return!0}}isTerm(){return this.isAtom()||this.isAssertion()}isAtom(){if(this.isPatternCharacter())return!0;switch(this.peekChar(0)){case".":case"\\":case"[":case"(":return!0;default:return!1}}isAssertion(){switch(this.peekChar(0)){case"^":case"$":return!0;case"\\":switch(this.peekChar(1)){case"b":case"B":return!0;default:return!1}case"(":return"?"===this.peekChar(1)&&("="===this.peekChar(2)||"!"===this.peekChar(2)||"<"===this.peekChar(2)&&("="===this.peekChar(3)||"!"===this.peekChar(3)));default:return!1}}isQuantifier(){const e=this.saveState();try{return void 0!==this.quantifier(!0)}catch(t){return!1}finally{this.restoreState(e)}}isPatternCharacter(){switch(this.peekChar()){case"^":case"$":case"\\":case".":case"*":case"+":case"?":case"(":case")":case"[":case"|":case"/":case"\n":case"\r":case"\u2028":case"\u2029":return!1;default:return!0}}parseHexDigits(e){let t="";for(let r=0;r<e;r++){const e=this.popChar();if(!1===na.test(e))throw Error("Expecting a HexDecimal digits");t+=e}return{type:"Character",value:parseInt(t,16)}}peekChar(e=0){return this.input[this.idx+e]}popChar(){const e=this.peekChar(0);return this.consumeChar(void 0),e}consumeChar(e){if(void 0!==e&&this.input[this.idx]!==e)throw Error("Expected: '"+e+"' but found: '"+this.input[this.idx]+"' at offset: "+this.idx);if(this.idx>=this.input.length)throw Error("Unexpected end of input");this.idx++}loc(e){return{begin:e,end:this.idx}}},oa=class{static{ze(this,"BaseRegExpVisitor")}visitChildren(e){for(const t in e){const r=e[t];e.hasOwnProperty(t)&&(void 0!==r.type?this.visit(r):Array.isArray(r)&&r.forEach(e=>{this.visit(e)},this))}}visit(e){switch(e.type){case"Pattern":this.visitPattern(e);break;case"Flags":this.visitFlags(e);break;case"Disjunction":this.visitDisjunction(e);break;case"Alternative":this.visitAlternative(e);break;case"StartAnchor":this.visitStartAnchor(e);break;case"EndAnchor":this.visitEndAnchor(e);break;case"WordBoundary":this.visitWordBoundary(e);break;case"NonWordBoundary":this.visitNonWordBoundary(e);break;case"Lookahead":this.visitLookahead(e);break;case"NegativeLookahead":this.visitNegativeLookahead(e);break;case"Lookbehind":this.visitLookbehind(e);break;case"NegativeLookbehind":this.visitNegativeLookbehind(e);break;case"Character":this.visitCharacter(e);break;case"Set":this.visitSet(e);break;case"Group":this.visitGroup(e);break;case"GroupBackReference":this.visitGroupBackReference(e);break;case"Quantifier":this.visitQuantifier(e)}this.visitChildren(e)}visitPattern(e){}visitFlags(e){}visitDisjunction(e){}visitAlternative(e){}visitStartAnchor(e){}visitEndAnchor(e){}visitWordBoundary(e){}visitNonWordBoundary(e){}visitLookahead(e){}visitNegativeLookahead(e){}visitLookbehind(e){}visitNegativeLookbehind(e){}visitCharacter(e){}visitSet(e){}visitGroup(e){}visitGroupBackReference(e){}visitQuantifier(e){}},la=/\r?\n/gm,ca=new sa,ua=class extends oa{static{ze(this,"TerminalRegExpVisitor")}constructor(){super(...arguments),this.isStarting=!0,this.endRegexpStack=[],this.multiline=!1}get endRegex(){return this.endRegexpStack.join("")}reset(e){this.multiline=!1,this.regex=e,this.startRegexp="",this.isStarting=!0,this.endRegexpStack=[]}visitGroup(e){e.quantifier&&(this.isStarting=!1,this.endRegexpStack=[])}visitCharacter(e){const t=String.fromCharCode(e.value);if(this.multiline||"\n"!==t||(this.multiline=!0),e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{const e=ga(t);this.endRegexpStack.push(e),this.isStarting&&(this.startRegexp+=e)}}visitSet(e){if(!this.multiline){const t=this.regex.substring(e.loc.begin,e.loc.end),r=new RegExp(t);this.multiline=Boolean("\n".match(r))}if(e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{const t=this.regex.substring(e.loc.begin,e.loc.end);this.endRegexpStack.push(t),this.isStarting&&(this.startRegexp+=t)}}visitChildren(e){if("Group"===e.type){if(e.quantifier)return}super.visitChildren(e)}},da=new ua;function pa(e){try{"string"!=typeof e&&(e=e.source),e=`/${e}/`;const t=ca.pattern(e),r=[];for(const n of t.value.value)da.reset(e),da.visit(n),r.push({start:da.startRegexp,end:da.endRegex});return r}catch{return[]}}function fa(e){try{return"string"==typeof e&&(e=new RegExp(e)),e=e.toString(),da.reset(e),da.visit(ca.pattern(e)),da.multiline}catch{return!1}}ze(pa,"getTerminalParts"),ze(fa,"isMultilineComment");var ha="\f\n\r\t\v \xa0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000\ufeff".split("");function ma(e){const t="string"==typeof e?new RegExp(e):e;return ha.some(e=>t.test(e))}function ga(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ya(e,t){const r=va(e),n=t.match(r);return!!n&&n[0].length>0}function va(e){"string"==typeof e&&(e=new RegExp(e));const t=e,r=e.source;let n=0;function i(){let e,a="";function s(e){a+=r.substr(n,e),n+=e}function o(e){a+="(?:"+r.substr(n,e)+"|$)",n+=e}for(ze(s,"appendRaw"),ze(o,"appendOptional");n<r.length;)switch(r[n]){case"\\":switch(r[n+1]){case"c":o(3);break;case"x":o(4);break;case"u":t.unicode?"{"===r[n+2]?o(r.indexOf("}",n)-n+1):o(6):o(2);break;case"p":case"P":t.unicode?o(r.indexOf("}",n)-n+1):o(2);break;case"k":o(r.indexOf(">",n)-n+1);break;default:o(2)}break;case"[":e=/\[(?:\\.|.)*?\]/g,e.lastIndex=n,e=e.exec(r)||[],o(e[0].length);break;case"|":case"^":case"$":case"*":case"+":case"?":s(1);break;case"{":e=/\{\d+,?\d*\}/g,e.lastIndex=n,e=e.exec(r),e?s(e[0].length):o(1);break;case"(":if("?"===r[n+1])switch(r[n+2]){case":":a+="(?:",n+=3,a+=i()+"|$)";break;case"=":a+="(?=",n+=3,a+=i()+")";break;case"!":e=n,n+=3,i(),a+=r.substr(e,n-e);break;case"<":switch(r[n+3]){case"=":case"!":e=n,n+=4,i(),a+=r.substr(e,n-e);break;default:s(r.indexOf(">",n)-n+1),a+=i()+"|$)"}}else s(1),a+=i()+"|$)";break;case")":return++n,a;default:o(1)}return a}return ze(i,"process"),new RegExp(i(),e.flags)}function Ta(e){return e.rules.find(e=>Pn(e)&&e.entry)}function Ra(e){return e.rules.filter(e=>Zn(e)&&e.hidden)}function $a(e,t){const r=new Set,n=Ta(e);if(!n)return new Set(e.rules);const i=[n].concat(Ra(e));for(const s of i)ba(s,r,t);const a=new Set;for(const s of e.rules)(r.has(s.name)||Zn(s)&&s.hidden)&&a.add(s);return a}function ba(e,t,r){t.add(e.name),hr(e).forEach(e=>{if(Kn(e)||r&&ti(e)){const n=e.rule.ref;n&&!t.has(n.name)&&ba(n,t,r)}})}function Ea(e){const t=new Set;return hr(e).forEach(e=>{Jr(e)&&(Pn(e.type.ref)&&t.add(e.type.ref),cn(e.type.ref)&&Pn(e.type.ref.$container)&&t.add(e.type.ref.$container))}),t}function Ca(e){if(e.terminal)return e.terminal;if(e.type.ref){const t=Pa(e.type.ref);return t?.terminal}}function Aa(e){return e.hidden&&!ma(Ha(e))}function ka(e,t){return e&&t?wa(e,t,e.astNode,!0):[]}function Sa(e,t,r){if(!e||!t)return;const n=wa(e,t,e.astNode,!0);return 0!==n.length?n[r=void 0!==r?Math.max(0,Math.min(r,n.length-1)):0]:void 0}function wa(e,t,r,n){if(!n){const r=lr(e.grammarSource,zr);if(r&&r.feature===t)return[e]}return Yt(e)&&e.astNode===r?e.content.flatMap(e=>wa(e,t,r,!1)):[]}function xa(e,t){return e?Ia(e,t,e?.astNode):[]}function Na(e,t,r){if(!e)return;const n=Ia(e,t,e?.astNode);return 0!==n.length?n[r=void 0!==r?Math.max(0,Math.min(r,n.length-1)):0]:void 0}function Ia(e,t,r){if(e.astNode!==r)return[];if(Tn(e.grammarSource)&&e.grammarSource.value===t)return[e];const n=Ei(e).iterator();let i;const a=[];do{if(i=n.next(),!i.done){const e=i.value;e.astNode===r?Tn(e.grammarSource)&&e.grammarSource.value===t&&a.push(e):n.prune()}}while(!i.done);return a}function _a(e){const t=e.astNode;for(;t===e.container?.astNode;){const t=lr(e.grammarSource,zr);if(t)return t;e=e.container}}function Pa(e){let t=e;return cn(t)&&(_r(t.$container)?t=t.$container.$container:kr(t.$container)?t=t.$container:Wi(t.$container)),Da(e,t,new Map)}function Da(e,t,r){function n(t,n){let i;return lr(t,zr)||(i=Da(n,n,r)),r.set(e,i),i}if(ze(n,"go"),r.has(e))return r.get(e);r.set(e,void 0);for(const i of hr(t)){if(zr(i)&&"name"===i.feature.toLowerCase())return r.set(e,i),i;if(Kn(i)&&Pn(i.rule.ref))return n(i,i.rule.ref);if(qn(i)&&i.typeRef?.ref)return n(i,i.typeRef.ref)}}function Oa(e){const t=e.$container;if(on(t)){const r=t.elements;for(let t=r.indexOf(e)-1;t>=0;t--){const e=r[t];if(_r(e))return e;{const e=hr(r[t]).find(_r);if(e)return e}}}return Cr(t)?Oa(t):void 0}function La(e,t){return"?"===e||"*"===e||on(t)&&Boolean(t.guardCondition)}function Ma(e){return"*"===e||"+"===e}function ja(e){return"+="===e}function Fa(e){return za(e,new Set)}function za(e,t){if(t.has(e))return!0;t.add(e);for(const r of hr(e))if(Kn(r)){if(!r.rule.ref)return!1;if(Pn(r.rule.ref)&&!za(r.rule.ref,t))return!1;if(dn(r.rule.ref))return!1}else{if(zr(r))return!1;if(_r(r))return!1}return Boolean(e.definition)}function Ka(e){return Ga(e.type,new Set)}function Ga(e,t){if(t.has(e))return!0;if(t.add(e),jr(e))return!1;if(On(e))return!1;if(ci(e))return e.types.every(e=>Ga(e,t));if(qn(e)){if(void 0!==e.primitiveType)return!0;if(void 0!==e.stringType)return!0;if(void 0!==e.typeRef){const r=e.typeRef.ref;return!!ni(r)&&Ga(r.type,t)}return!1}return!1}function qa(e){if(!Zn(e)){if(e.inferredType)return e.inferredType.name;if(e.dataType)return e.dataType;if(e.returnType){const t=e.returnType.ref;if(t)return t.name}}}function Ua(e){if(kr(e))return Pn(e)&&Fa(e)?e.name:qa(e)??e.name;if(yn(e)||ni(e)||Fn(e))return e.name;if(_r(e)){const t=Wa(e);if(t)return t}else if(cn(e))return e.name;throw new Error("Cannot get name of Unknown Type")}function Wa(e){return e.inferredType?e.inferredType.name:e.type?.ref?Ua(e.type.ref):void 0}function Ba(e){return Zn(e)?e.type?.name??"string":Pn(e)&&Fa(e)?e.name:qa(e)??e.name}function Va(e){return Zn(e)?e.type?.name??"string":qa(e)??e.name}function Ha(e){const t={s:!1,i:!1,u:!1},r=Ja(e.definition,t),n=Object.entries(t).filter(([,e])=>e).map(([e])=>e).join("");return new RegExp(r,n)}ze(ma,"isWhitespace"),ze(ga,"escapeRegExp"),ze(ya,"partialMatches"),ze(va,"partialRegExp"),ze(Ta,"getEntryRule"),ze(Ra,"getHiddenRules"),ze($a,"getAllReachableRules"),ze(ba,"ruleDfs"),ze(Ea,"getAllRulesUsedForCrossReferences"),ze(Ca,"getCrossReferenceTerminal"),ze(Aa,"isCommentTerminal"),ze(ka,"findNodesForProperty"),ze(Sa,"findNodeForProperty"),ze(wa,"findNodesForPropertyInternal"),ze(xa,"findNodesForKeyword"),ze(Na,"findNodeForKeyword"),ze(Ia,"findNodesForKeywordInternal"),ze(_a,"findAssignment"),ze(Pa,"findNameAssignment"),ze(Da,"findNameAssignmentInternal"),ze(Oa,"getActionAtElement"),ze(La,"isOptionalCardinality"),ze(Ma,"isArrayCardinality"),ze(ja,"isArrayOperator"),ze(Fa,"isDataTypeRule"),ze(za,"isDataTypeRuleInternal"),ze(Ka,"isDataType"),ze(Ga,"isDataTypeInternal"),ze(qa,"getExplicitRuleType"),ze(Ua,"getTypeName"),ze(Wa,"getActionType"),ze(Ba,"getRuleTypeName"),ze(Va,"getRuleType"),ze(Ha,"terminalRegex");var Ya=/[\s\S]/.source;function Ja(e,t){if(Vn(e))return Xa(e);if(Xn(e))return Qa(e);if(Ur(e))return ts(e);if(ti(e)){const t=e.rule.ref;if(!t)throw new Error("Missing rule reference.");return ns(Ja(t.definition),{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized})}if(En(e))return es(e);if(fi(e))return Za(e);if(Mn(e)){const r=e.regex.lastIndexOf("/"),n=e.regex.substring(1,r),i=e.regex.substring(r+1);return t&&(t.i=i.includes("i"),t.s=i.includes("s"),t.u=i.includes("u")),ns(n,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1})}if(yi(e))return ns(Ya,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized});throw new Error(`Invalid terminal element: ${e?.$type}, ${e?.$cstNode?.text}`)}function Xa(e){return ns(e.elements.map(e=>Ja(e)).join("|"),{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1})}function Qa(e){return ns(e.elements.map(e=>Ja(e)).join(""),{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1})}function Za(e){return ns(`${Ya}*?${Ja(e.terminal)}`,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized})}function es(e){return ns(`(?!${Ja(e.terminal)})${Ya}*?`,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized})}function ts(e){return e.right?ns(`[${rs(e.left)}-${rs(e.right)}]`,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1}):ns(rs(e.left),{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1})}function rs(e){return ga(e.value)}function ns(e,t){if(t.parenthesized||t.lookahead||!1!==t.wrap){e=`(${t.lookahead??(t.parenthesized?"":"?:")}${e})`}return t.cardinality?`${e}${t.cardinality}`:e}function is(e){const t=[],r=e.Grammar;for(const n of r.rules)Zn(n)&&Aa(n)&&fa(Ha(n))&&t.push(n.name);return{multilineCommentRules:t,nameRegexp:Ni}}ze(Ja,"abstractElementToRegex"),ze(Xa,"terminalAlternativesToRegex"),ze(Qa,"terminalGroupToRegex"),ze(Za,"untilTokenToRegex"),ze(es,"negateTokenToRegex"),ze(ts,"characterRangeToRegex"),ze(rs,"keywordToRegex"),ze(ns,"withCardinality"),ze(is,"createGrammarConfig");var as="object"==typeof globalThis&&globalThis&&globalThis.Object===Object&&globalThis,ss="object"==typeof self&&self&&self.Object===Object&&self,os=as||ss||Function("return this")(),ls=os.Symbol,cs=Object.prototype,us=cs.hasOwnProperty,ds=cs.toString,ps=ls?ls.toStringTag:void 0;function fs(e){var t=us.call(e,ps),r=e[ps];try{e[ps]=void 0;var n=!0}catch(a){}var i=ds.call(e);return n&&(t?e[ps]=r:delete e[ps]),i}ze(fs,"getRawTag");var hs=fs,ms=Object.prototype.toString;function gs(e){return ms.call(e)}ze(gs,"objectToString");var ys=gs,vs=ls?ls.toStringTag:void 0;function Ts(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":vs&&vs in Object(e)?hs(e):ys(e)}ze(Ts,"baseGetTag");var Rs=Ts;function $s(e){return null!=e&&"object"==typeof e}ze($s,"isObjectLike");var bs=$s;function Es(e){return"symbol"==typeof e||bs(e)&&"[object Symbol]"==Rs(e)}ze(Es,"isSymbol");var Cs=Es;function As(e,t){for(var r=-1,n=null==e?0:e.length,i=Array(n);++r<n;)i[r]=t(e[r],r,e);return i}ze(As,"arrayMap");var ks=As,Ss=Array.isArray,ws=ls?ls.prototype:void 0,xs=ws?ws.toString:void 0;function Ns(e){if("string"==typeof e)return e;if(Ss(e))return ks(e,Ns)+"";if(Cs(e))return xs?xs.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}ze(Ns,"baseToString");var Is=Ns,_s=/\s/;function Ps(e){for(var t=e.length;t--&&_s.test(e.charAt(t)););return t}ze(Ps,"trimmedEndIndex");var Ds=Ps,Os=/^\s+/;function Ls(e){return e?e.slice(0,Ds(e)+1).replace(Os,""):e}ze(Ls,"baseTrim");var Ms=Ls;function js(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}ze(js,"isObject");var Fs=js,zs=/^[-+]0x[0-9a-f]+$/i,Ks=/^0b[01]+$/i,Gs=/^0o[0-7]+$/i,qs=parseInt;function Us(e){if("number"==typeof e)return e;if(Cs(e))return NaN;if(Fs(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Fs(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=Ms(e);var r=Ks.test(e);return r||Gs.test(e)?qs(e.slice(2),r?2:8):zs.test(e)?NaN:+e}ze(Us,"toNumber");var Ws=Us,Bs=1/0;function Vs(e){return e?(e=Ws(e))===Bs||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}ze(Vs,"toFinite");var Hs=Vs;function Ys(e){var t=Hs(e),r=t%1;return t==t?r?t-r:t:0}ze(Ys,"toInteger");var Js=Ys;function Xs(e){return e}ze(Xs,"identity");var Qs=Xs;function Zs(e){if(!Fs(e))return!1;var t=Rs(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}ze(Zs,"isFunction");var eo,to=Zs,ro=os["__core-js_shared__"],no=(eo=/[^.]+$/.exec(ro&&ro.keys&&ro.keys.IE_PROTO||""))?"Symbol(src)_1."+eo:"";function io(e){return!!no&&no in e}ze(io,"isMasked");var ao=io,so=Function.prototype.toString;function oo(e){if(null!=e){try{return so.call(e)}catch(t){}try{return e+""}catch(t){}}return""}ze(oo,"toSource");var lo=oo,co=/^\[object .+?Constructor\]$/,uo=Function.prototype,po=Object.prototype,fo=uo.toString,ho=po.hasOwnProperty,mo=RegExp("^"+fo.call(ho).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function go(e){return!(!Fs(e)||ao(e))&&(to(e)?mo:co).test(lo(e))}ze(go,"baseIsNative");var yo=go;function vo(e,t){return null==e?void 0:e[t]}ze(vo,"getValue");var To=vo;function Ro(e,t){var r=To(e,t);return yo(r)?r:void 0}ze(Ro,"getNative");var $o=Ro,bo=$o(os,"WeakMap"),Eo=Object.create,Co=function(){function e(){}return ze(e,"object"),function(t){if(!Fs(t))return{};if(Eo)return Eo(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();function Ao(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}ze(Ao,"apply");var ko=Ao;function So(){}ze(So,"noop");var wo=So;function xo(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}ze(xo,"copyArray");var No=xo,Io=Date.now;function _o(e){var t=0,r=0;return function(){var n=Io(),i=16-(n-r);if(r=n,i>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}ze(_o,"shortOut");var Po=_o;function Do(e){return function(){return e}}ze(Do,"constant");var Oo=Do,Lo=function(){try{var e=$o(Object,"defineProperty");return e({},"",{}),e}catch(t){}}(),Mo=Po(Lo?function(e,t){return Lo(e,"toString",{configurable:!0,enumerable:!1,value:Oo(t),writable:!0})}:Qs);function jo(e,t){for(var r=-1,n=null==e?0:e.length;++r<n&&!1!==t(e[r],r,e););return e}ze(jo,"arrayEach");var Fo=jo;function zo(e,t,r,n){for(var i=e.length,a=r+(n?1:-1);n?a--:++a<i;)if(t(e[a],a,e))return a;return-1}ze(zo,"baseFindIndex");var Ko=zo;function Go(e){return e!=e}ze(Go,"baseIsNaN");var qo=Go;function Uo(e,t,r){for(var n=r-1,i=e.length;++n<i;)if(e[n]===t)return n;return-1}ze(Uo,"strictIndexOf");var Wo=Uo;function Bo(e,t,r){return t==t?Wo(e,t,r):Ko(e,qo,r)}ze(Bo,"baseIndexOf");var Vo=Bo;function Ho(e,t){return!!(null==e?0:e.length)&&Vo(e,t,0)>-1}ze(Ho,"arrayIncludes");var Yo=Ho,Jo=/^(?:0|[1-9]\d*)$/;function Xo(e,t){var r=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==r||"symbol"!=r&&Jo.test(e))&&e>-1&&e%1==0&&e<t}ze(Xo,"isIndex");var Qo=Xo;function Zo(e,t,r){"__proto__"==t&&Lo?Lo(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}ze(Zo,"baseAssignValue");var el=Zo;function tl(e,t){return e===t||e!=e&&t!=t}ze(tl,"eq");var rl=tl,nl=Object.prototype.hasOwnProperty;function il(e,t,r){var n=e[t];nl.call(e,t)&&rl(n,r)&&(void 0!==r||t in e)||el(e,t,r)}ze(il,"assignValue");var al=il;function sl(e,t,r,n){var i=!r;r||(r={});for(var a=-1,s=t.length;++a<s;){var o=t[a],l=n?n(r[o],e[o],o,r,e):void 0;void 0===l&&(l=e[o]),i?el(r,o,l):al(r,o,l)}return r}ze(sl,"copyObject");var ol=sl,ll=Math.max;function cl(e,t,r){return t=ll(void 0===t?e.length-1:t,0),function(){for(var n=arguments,i=-1,a=ll(n.length-t,0),s=Array(a);++i<a;)s[i]=n[t+i];i=-1;for(var o=Array(t+1);++i<t;)o[i]=n[i];return o[t]=r(s),ko(e,this,o)}}ze(cl,"overRest");var ul=cl;function dl(e,t){return Mo(ul(e,t,Qs),e+"")}ze(dl,"baseRest");var pl=dl;function fl(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}ze(fl,"isLength");var hl=fl;function ml(e){return null!=e&&hl(e.length)&&!to(e)}ze(ml,"isArrayLike");var gl=ml;function yl(e,t,r){if(!Fs(r))return!1;var n=typeof t;return!!("number"==n?gl(r)&&Qo(t,r.length):"string"==n&&t in r)&&rl(r[t],e)}ze(yl,"isIterateeCall");var vl=yl;function Tl(e){return pl(function(t,r){var n=-1,i=r.length,a=i>1?r[i-1]:void 0,s=i>2?r[2]:void 0;for(a=e.length>3&&"function"==typeof a?(i--,a):void 0,s&&vl(r[0],r[1],s)&&(a=i<3?void 0:a,i=1),t=Object(t);++n<i;){var o=r[n];o&&e(t,o,n,a)}return t})}ze(Tl,"createAssigner");var Rl=Tl,$l=Object.prototype;function bl(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||$l)}ze(bl,"isPrototype");var El=bl;function Cl(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}ze(Cl,"baseTimes");var Al=Cl;function kl(e){return bs(e)&&"[object Arguments]"==Rs(e)}ze(kl,"baseIsArguments");var Sl=kl,wl=Object.prototype,xl=wl.hasOwnProperty,Nl=wl.propertyIsEnumerable,Il=Sl(function(){return arguments}())?Sl:function(e){return bs(e)&&xl.call(e,"callee")&&!Nl.call(e,"callee")},_l=Il;function Pl(){return!1}ze(Pl,"stubFalse");var Dl=Pl,Ol="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ll=Ol&&"object"==typeof module&&module&&!module.nodeType&&module,Ml=Ll&&Ll.exports===Ol?os.Buffer:void 0,jl=(Ml?Ml.isBuffer:void 0)||Dl,Fl={};function zl(e){return bs(e)&&hl(e.length)&&!!Fl[Rs(e)]}Fl["[object Float32Array]"]=Fl["[object Float64Array]"]=Fl["[object Int8Array]"]=Fl["[object Int16Array]"]=Fl["[object Int32Array]"]=Fl["[object Uint8Array]"]=Fl["[object Uint8ClampedArray]"]=Fl["[object Uint16Array]"]=Fl["[object Uint32Array]"]=!0,Fl["[object Arguments]"]=Fl["[object Array]"]=Fl["[object ArrayBuffer]"]=Fl["[object Boolean]"]=Fl["[object DataView]"]=Fl["[object Date]"]=Fl["[object Error]"]=Fl["[object Function]"]=Fl["[object Map]"]=Fl["[object Number]"]=Fl["[object Object]"]=Fl["[object RegExp]"]=Fl["[object Set]"]=Fl["[object String]"]=Fl["[object WeakMap]"]=!1,ze(zl,"baseIsTypedArray");var Kl=zl;function Gl(e){return function(t){return e(t)}}ze(Gl,"baseUnary");var ql=Gl,Ul="object"==typeof exports&&exports&&!exports.nodeType&&exports,Wl=Ul&&"object"==typeof module&&module&&!module.nodeType&&module,Bl=Wl&&Wl.exports===Ul&&as.process,Vl=function(){try{var e=Wl&&Wl.require&&Wl.require("util").types;return e||Bl&&Bl.binding&&Bl.binding("util")}catch(t){}}(),Hl=Vl&&Vl.isTypedArray,Yl=Hl?ql(Hl):Kl,Jl=Object.prototype.hasOwnProperty;function Xl(e,t){var r=Ss(e),n=!r&&_l(e),i=!r&&!n&&jl(e),a=!r&&!n&&!i&&Yl(e),s=r||n||i||a,o=s?Al(e.length,String):[],l=o.length;for(var c in e)!t&&!Jl.call(e,c)||s&&("length"==c||i&&("offset"==c||"parent"==c)||a&&("buffer"==c||"byteLength"==c||"byteOffset"==c)||Qo(c,l))||o.push(c);return o}ze(Xl,"arrayLikeKeys");var Ql=Xl;function Zl(e,t){return function(r){return e(t(r))}}ze(Zl,"overArg");var ec=Zl,tc=ec(Object.keys,Object),rc=Object.prototype.hasOwnProperty;function nc(e){if(!El(e))return tc(e);var t=[];for(var r in Object(e))rc.call(e,r)&&"constructor"!=r&&t.push(r);return t}ze(nc,"baseKeys");var ic=nc;function ac(e){return gl(e)?Ql(e):ic(e)}ze(ac,"keys");var sc=ac,oc=Object.prototype.hasOwnProperty,lc=Rl(function(e,t){if(El(t)||gl(t))ol(t,sc(t),e);else for(var r in t)oc.call(t,r)&&al(e,r,t[r])});function cc(e){var t=[];if(null!=e)for(var r in Object(e))t.push(r);return t}ze(cc,"nativeKeysIn");var uc=cc,dc=Object.prototype.hasOwnProperty;function pc(e){if(!Fs(e))return uc(e);var t=El(e),r=[];for(var n in e)("constructor"!=n||!t&&dc.call(e,n))&&r.push(n);return r}ze(pc,"baseKeysIn");var fc=pc;function hc(e){return gl(e)?Ql(e,!0):fc(e)}ze(hc,"keysIn");var mc=hc,gc=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,yc=/^\w*$/;function vc(e,t){if(Ss(e))return!1;var r=typeof e;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=e&&!Cs(e))||(yc.test(e)||!gc.test(e)||null!=t&&e in Object(t))}ze(vc,"isKey");var Tc=vc,Rc=$o(Object,"create");function $c(){this.__data__=Rc?Rc(null):{},this.size=0}ze($c,"hashClear");var bc=$c;function Ec(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}ze(Ec,"hashDelete");var Cc=Ec,Ac=Object.prototype.hasOwnProperty;function kc(e){var t=this.__data__;if(Rc){var r=t[e];return"__lodash_hash_undefined__"===r?void 0:r}return Ac.call(t,e)?t[e]:void 0}ze(kc,"hashGet");var Sc=kc,wc=Object.prototype.hasOwnProperty;function xc(e){var t=this.__data__;return Rc?void 0!==t[e]:wc.call(t,e)}ze(xc,"hashHas");var Nc=xc;function Ic(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Rc&&void 0===t?"__lodash_hash_undefined__":t,this}ze(Ic,"hashSet");var _c=Ic;function Pc(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}ze(Pc,"Hash"),Pc.prototype.clear=bc,Pc.prototype.delete=Cc,Pc.prototype.get=Sc,Pc.prototype.has=Nc,Pc.prototype.set=_c;var Dc=Pc;function Oc(){this.__data__=[],this.size=0}ze(Oc,"listCacheClear");var Lc=Oc;function Mc(e,t){for(var r=e.length;r--;)if(rl(e[r][0],t))return r;return-1}ze(Mc,"assocIndexOf");var jc=Mc,Fc=Array.prototype.splice;function zc(e){var t=this.__data__,r=jc(t,e);return!(r<0)&&(r==t.length-1?t.pop():Fc.call(t,r,1),--this.size,!0)}ze(zc,"listCacheDelete");var Kc=zc;function Gc(e){var t=this.__data__,r=jc(t,e);return r<0?void 0:t[r][1]}ze(Gc,"listCacheGet");var qc=Gc;function Uc(e){return jc(this.__data__,e)>-1}ze(Uc,"listCacheHas");var Wc=Uc;function Bc(e,t){var r=this.__data__,n=jc(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}ze(Bc,"listCacheSet");var Vc=Bc;function Hc(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}ze(Hc,"ListCache"),Hc.prototype.clear=Lc,Hc.prototype.delete=Kc,Hc.prototype.get=qc,Hc.prototype.has=Wc,Hc.prototype.set=Vc;var Yc=Hc,Jc=$o(os,"Map");function Xc(){this.size=0,this.__data__={hash:new Dc,map:new(Jc||Yc),string:new Dc}}ze(Xc,"mapCacheClear");var Qc=Xc;function Zc(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}ze(Zc,"isKeyable");var eu=Zc;function tu(e,t){var r=e.__data__;return eu(t)?r["string"==typeof t?"string":"hash"]:r.map}ze(tu,"getMapData");var ru=tu;function nu(e){var t=ru(this,e).delete(e);return this.size-=t?1:0,t}ze(nu,"mapCacheDelete");var iu=nu;function au(e){return ru(this,e).get(e)}ze(au,"mapCacheGet");var su=au;function ou(e){return ru(this,e).has(e)}ze(ou,"mapCacheHas");var lu=ou;function cu(e,t){var r=ru(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}ze(cu,"mapCacheSet");var uu=cu;function du(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}ze(du,"MapCache"),du.prototype.clear=Qc,du.prototype.delete=iu,du.prototype.get=su,du.prototype.has=lu,du.prototype.set=uu;var pu=du;function fu(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var r=ze(function(){var n=arguments,i=t?t.apply(this,n):n[0],a=r.cache;if(a.has(i))return a.get(i);var s=e.apply(this,n);return r.cache=a.set(i,s)||a,s},"memoized");return r.cache=new(fu.Cache||pu),r}ze(fu,"memoize"),fu.Cache=pu;var hu=fu;function mu(e){var t=hu(e,function(e){return 500===r.size&&r.clear(),e}),r=t.cache;return t}ze(mu,"memoizeCapped");var gu=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,yu=/\\(\\)?/g,vu=mu(function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(gu,function(e,r,n,i){t.push(n?i.replace(yu,"$1"):r||e)}),t});function Tu(e){return null==e?"":Is(e)}ze(Tu,"toString");var Ru=Tu;function $u(e,t){return Ss(e)?e:Tc(e,t)?[e]:vu(Ru(e))}ze($u,"castPath");var bu=$u;function Eu(e){if("string"==typeof e||Cs(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}ze(Eu,"toKey");var Cu=Eu;function Au(e,t){for(var r=0,n=(t=bu(t,e)).length;null!=e&&r<n;)e=e[Cu(t[r++])];return r&&r==n?e:void 0}ze(Au,"baseGet");var ku=Au;function Su(e,t,r){var n=null==e?void 0:ku(e,t);return void 0===n?r:n}ze(Su,"get");var wu=Su;function xu(e,t){for(var r=-1,n=t.length,i=e.length;++r<n;)e[i+r]=t[r];return e}ze(xu,"arrayPush");var Nu=xu,Iu=ls?ls.isConcatSpreadable:void 0;function _u(e){return Ss(e)||_l(e)||!!(Iu&&e&&e[Iu])}ze(_u,"isFlattenable");var Pu=_u;function Du(e,t,r,n,i){var a=-1,s=e.length;for(r||(r=Pu),i||(i=[]);++a<s;){var o=e[a];t>0&&r(o)?t>1?Du(o,t-1,r,n,i):Nu(i,o):n||(i[i.length]=o)}return i}ze(Du,"baseFlatten");var Ou=Du;function Lu(e){return(null==e?0:e.length)?Ou(e,1):[]}ze(Lu,"flatten");var Mu=Lu,ju=ec(Object.getPrototypeOf,Object);function Fu(e,t,r){var n=-1,i=e.length;t<0&&(t=-t>i?0:i+t),(r=r>i?i:r)<0&&(r+=i),i=t>r?0:r-t>>>0,t>>>=0;for(var a=Array(i);++n<i;)a[n]=e[n+t];return a}ze(Fu,"baseSlice");var zu=Fu;function Ku(e,t,r,n){var i=-1,a=null==e?0:e.length;for(n&&a&&(r=e[++i]);++i<a;)r=t(r,e[i],i,e);return r}ze(Ku,"arrayReduce");var Gu=Ku;function qu(){this.__data__=new Yc,this.size=0}ze(qu,"stackClear");var Uu=qu;function Wu(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}ze(Wu,"stackDelete");var Bu=Wu;function Vu(e){return this.__data__.get(e)}ze(Vu,"stackGet");var Hu=Vu;function Yu(e){return this.__data__.has(e)}ze(Yu,"stackHas");var Ju=Yu;function Xu(e,t){var r=this.__data__;if(r instanceof Yc){var n=r.__data__;if(!Jc||n.length<199)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new pu(n)}return r.set(e,t),this.size=r.size,this}ze(Xu,"stackSet");var Qu=Xu;function Zu(e){var t=this.__data__=new Yc(e);this.size=t.size}ze(Zu,"Stack"),Zu.prototype.clear=Uu,Zu.prototype.delete=Bu,Zu.prototype.get=Hu,Zu.prototype.has=Ju,Zu.prototype.set=Qu;var ed=Zu;function td(e,t){return e&&ol(t,sc(t),e)}ze(td,"baseAssign");var rd=td;function nd(e,t){return e&&ol(t,mc(t),e)}ze(nd,"baseAssignIn");var id=nd,ad="object"==typeof exports&&exports&&!exports.nodeType&&exports,sd=ad&&"object"==typeof module&&module&&!module.nodeType&&module,od=sd&&sd.exports===ad?os.Buffer:void 0,ld=od?od.allocUnsafe:void 0;function cd(e,t){if(t)return e.slice();var r=e.length,n=ld?ld(r):new e.constructor(r);return e.copy(n),n}ze(cd,"cloneBuffer");var ud=cd;function dd(e,t){for(var r=-1,n=null==e?0:e.length,i=0,a=[];++r<n;){var s=e[r];t(s,r,e)&&(a[i++]=s)}return a}ze(dd,"arrayFilter");var pd=dd;function fd(){return[]}ze(fd,"stubArray");var hd=fd,md=Object.prototype.propertyIsEnumerable,gd=Object.getOwnPropertySymbols,yd=gd?function(e){return null==e?[]:(e=Object(e),pd(gd(e),function(t){return md.call(e,t)}))}:hd;function vd(e,t){return ol(e,yd(e),t)}ze(vd,"copySymbols");var Td=vd,Rd=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)Nu(t,yd(e)),e=ju(e);return t}:hd;function $d(e,t){return ol(e,Rd(e),t)}ze($d,"copySymbolsIn");var bd=$d;function Ed(e,t,r){var n=t(e);return Ss(e)?n:Nu(n,r(e))}ze(Ed,"baseGetAllKeys");var Cd=Ed;function Ad(e){return Cd(e,sc,yd)}ze(Ad,"getAllKeys");var kd=Ad;function Sd(e){return Cd(e,mc,Rd)}ze(Sd,"getAllKeysIn");var wd=Sd,xd=$o(os,"DataView"),Nd=$o(os,"Promise"),Id=$o(os,"Set"),_d="[object Map]",Pd="[object Promise]",Dd="[object Set]",Od="[object WeakMap]",Ld="[object DataView]",Md=lo(xd),jd=lo(Jc),Fd=lo(Nd),zd=lo(Id),Kd=lo(bo),Gd=Rs;(xd&&Gd(new xd(new ArrayBuffer(1)))!=Ld||Jc&&Gd(new Jc)!=_d||Nd&&Gd(Nd.resolve())!=Pd||Id&&Gd(new Id)!=Dd||bo&&Gd(new bo)!=Od)&&(Gd=ze(function(e){var t=Rs(e),r="[object Object]"==t?e.constructor:void 0,n=r?lo(r):"";if(n)switch(n){case Md:return Ld;case jd:return _d;case Fd:return Pd;case zd:return Dd;case Kd:return Od}return t},"getTag"));var qd=Gd,Ud=Object.prototype.hasOwnProperty;function Wd(e){var t=e.length,r=new e.constructor(t);return t&&"string"==typeof e[0]&&Ud.call(e,"index")&&(r.index=e.index,r.input=e.input),r}ze(Wd,"initCloneArray");var Bd=Wd,Vd=os.Uint8Array;function Hd(e){var t=new e.constructor(e.byteLength);return new Vd(t).set(new Vd(e)),t}ze(Hd,"cloneArrayBuffer");var Yd=Hd;function Jd(e,t){var r=t?Yd(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}ze(Jd,"cloneDataView");var Xd=Jd,Qd=/\w*$/;function Zd(e){var t=new e.constructor(e.source,Qd.exec(e));return t.lastIndex=e.lastIndex,t}ze(Zd,"cloneRegExp");var ep=Zd,tp=ls?ls.prototype:void 0,rp=tp?tp.valueOf:void 0;function np(e){return rp?Object(rp.call(e)):{}}ze(np,"cloneSymbol");var ip=np;function ap(e,t){var r=t?Yd(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}ze(ap,"cloneTypedArray");var sp=ap;function op(e,t,r){var n=e.constructor;switch(t){case"[object ArrayBuffer]":return Yd(e);case"[object Boolean]":case"[object Date]":return new n(+e);case"[object DataView]":return Xd(e,r);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return sp(e,r);case"[object Map]":case"[object Set]":return new n;case"[object Number]":case"[object String]":return new n(e);case"[object RegExp]":return ep(e);case"[object Symbol]":return ip(e)}}ze(op,"initCloneByTag");var lp=op;function cp(e){return"function"!=typeof e.constructor||El(e)?{}:Co(ju(e))}ze(cp,"initCloneObject");var up=cp;function dp(e){return bs(e)&&"[object Map]"==qd(e)}ze(dp,"baseIsMap");var pp=dp,fp=Vl&&Vl.isMap,hp=fp?ql(fp):pp;function mp(e){return bs(e)&&"[object Set]"==qd(e)}ze(mp,"baseIsSet");var gp=mp,yp=Vl&&Vl.isSet,vp=yp?ql(yp):gp,Tp="[object Arguments]",Rp="[object Function]",$p="[object Object]",bp={};function Ep(e,t,r,n,i,a){var s,o=1&t,l=2&t,c=4&t;if(r&&(s=i?r(e,n,i,a):r(e)),void 0!==s)return s;if(!Fs(e))return e;var u=Ss(e);if(u){if(s=Bd(e),!o)return No(e,s)}else{var d=qd(e),p=d==Rp||"[object GeneratorFunction]"==d;if(jl(e))return ud(e,o);if(d==$p||d==Tp||p&&!i){if(s=l||p?{}:up(e),!o)return l?bd(e,id(s,e)):Td(e,rd(s,e))}else{if(!bp[d])return i?e:{};s=lp(e,d,o)}}a||(a=new ed);var f=a.get(e);if(f)return f;a.set(e,s),vp(e)?e.forEach(function(n){s.add(Ep(n,t,r,n,e,a))}):hp(e)&&e.forEach(function(n,i){s.set(i,Ep(n,t,r,i,e,a))});var h=u?void 0:(c?l?wd:kd:l?mc:sc)(e);return Fo(h||e,function(n,i){h&&(n=e[i=n]),al(s,i,Ep(n,t,r,i,e,a))}),s}bp[Tp]=bp["[object Array]"]=bp["[object ArrayBuffer]"]=bp["[object DataView]"]=bp["[object Boolean]"]=bp["[object Date]"]=bp["[object Float32Array]"]=bp["[object Float64Array]"]=bp["[object Int8Array]"]=bp["[object Int16Array]"]=bp["[object Int32Array]"]=bp["[object Map]"]=bp["[object Number]"]=bp[$p]=bp["[object RegExp]"]=bp["[object Set]"]=bp["[object String]"]=bp["[object Symbol]"]=bp["[object Uint8Array]"]=bp["[object Uint8ClampedArray]"]=bp["[object Uint16Array]"]=bp["[object Uint32Array]"]=!0,bp["[object Error]"]=bp[Rp]=bp["[object WeakMap]"]=!1,ze(Ep,"baseClone");var Cp=Ep;function Ap(e){return Cp(e,4)}ze(Ap,"clone");var kp=Ap;function Sp(e){for(var t=-1,r=null==e?0:e.length,n=0,i=[];++t<r;){var a=e[t];a&&(i[n++]=a)}return i}ze(Sp,"compact");var wp=Sp;function xp(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}ze(xp,"setCacheAdd");var Np=xp;function Ip(e){return this.__data__.has(e)}ze(Ip,"setCacheHas");var _p=Ip;function Pp(e){var t=-1,r=null==e?0:e.length;for(this.__data__=new pu;++t<r;)this.add(e[t])}ze(Pp,"SetCache"),Pp.prototype.add=Pp.prototype.push=Np,Pp.prototype.has=_p;var Dp=Pp;function Op(e,t){for(var r=-1,n=null==e?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}ze(Op,"arraySome");var Lp=Op;function Mp(e,t){return e.has(t)}ze(Mp,"cacheHas");var jp=Mp;function Fp(e,t,r,n,i,a){var s=1&r,o=e.length,l=t.length;if(o!=l&&!(s&&l>o))return!1;var c=a.get(e),u=a.get(t);if(c&&u)return c==t&&u==e;var d=-1,p=!0,f=2&r?new Dp:void 0;for(a.set(e,t),a.set(t,e);++d<o;){var h=e[d],m=t[d];if(n)var g=s?n(m,h,d,t,e,a):n(h,m,d,e,t,a);if(void 0!==g){if(g)continue;p=!1;break}if(f){if(!Lp(t,function(e,t){if(!jp(f,t)&&(h===e||i(h,e,r,n,a)))return f.push(t)})){p=!1;break}}else if(h!==m&&!i(h,m,r,n,a)){p=!1;break}}return a.delete(e),a.delete(t),p}ze(Fp,"equalArrays");var zp=Fp;function Kp(e){var t=-1,r=Array(e.size);return e.forEach(function(e,n){r[++t]=[n,e]}),r}ze(Kp,"mapToArray");var Gp=Kp;function qp(e){var t=-1,r=Array(e.size);return e.forEach(function(e){r[++t]=e}),r}ze(qp,"setToArray");var Up=qp,Wp=ls?ls.prototype:void 0,Bp=Wp?Wp.valueOf:void 0;function Vp(e,t,r,n,i,a,s){switch(r){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!a(new Vd(e),new Vd(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return rl(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var o=Gp;case"[object Set]":var l=1&n;if(o||(o=Up),e.size!=t.size&&!l)return!1;var c=s.get(e);if(c)return c==t;n|=2,s.set(e,t);var u=zp(o(e),o(t),n,i,a,s);return s.delete(e),u;case"[object Symbol]":if(Bp)return Bp.call(e)==Bp.call(t)}return!1}ze(Vp,"equalByTag");var Hp=Vp,Yp=Object.prototype.hasOwnProperty;function Jp(e,t,r,n,i,a){var s=1&r,o=kd(e),l=o.length;if(l!=kd(t).length&&!s)return!1;for(var c=l;c--;){var u=o[c];if(!(s?u in t:Yp.call(t,u)))return!1}var d=a.get(e),p=a.get(t);if(d&&p)return d==t&&p==e;var f=!0;a.set(e,t),a.set(t,e);for(var h=s;++c<l;){var m=e[u=o[c]],g=t[u];if(n)var y=s?n(g,m,u,t,e,a):n(m,g,u,e,t,a);if(!(void 0===y?m===g||i(m,g,r,n,a):y)){f=!1;break}h||(h="constructor"==u)}if(f&&!h){var v=e.constructor,T=t.constructor;v==T||!("constructor"in e)||!("constructor"in t)||"function"==typeof v&&v instanceof v&&"function"==typeof T&&T instanceof T||(f=!1)}return a.delete(e),a.delete(t),f}ze(Jp,"equalObjects");var Xp=Jp,Qp="[object Arguments]",Zp="[object Array]",ef="[object Object]",tf=Object.prototype.hasOwnProperty;function rf(e,t,r,n,i,a){var s=Ss(e),o=Ss(t),l=s?Zp:qd(e),c=o?Zp:qd(t),u=(l=l==Qp?ef:l)==ef,d=(c=c==Qp?ef:c)==ef,p=l==c;if(p&&jl(e)){if(!jl(t))return!1;s=!0,u=!1}if(p&&!u)return a||(a=new ed),s||Yl(e)?zp(e,t,r,n,i,a):Hp(e,t,l,r,n,i,a);if(!(1&r)){var f=u&&tf.call(e,"__wrapped__"),h=d&&tf.call(t,"__wrapped__");if(f||h){var m=f?e.value():e,g=h?t.value():t;return a||(a=new ed),i(m,g,r,n,a)}}return!!p&&(a||(a=new ed),Xp(e,t,r,n,i,a))}ze(rf,"baseIsEqualDeep");var nf=rf;function af(e,t,r,n,i){return e===t||(null==e||null==t||!bs(e)&&!bs(t)?e!=e&&t!=t:nf(e,t,r,n,af,i))}ze(af,"baseIsEqual");var sf=af;function of(e,t,r,n){var i=r.length,a=i,s=!n;if(null==e)return!a;for(e=Object(e);i--;){var o=r[i];if(s&&o[2]?o[1]!==e[o[0]]:!(o[0]in e))return!1}for(;++i<a;){var l=(o=r[i])[0],c=e[l],u=o[1];if(s&&o[2]){if(void 0===c&&!(l in e))return!1}else{var d=new ed;if(n)var p=n(c,u,l,e,t,d);if(!(void 0===p?sf(u,c,3,n,d):p))return!1}}return!0}ze(of,"baseIsMatch");var lf=of;function cf(e){return e==e&&!Fs(e)}ze(cf,"isStrictComparable");var uf=cf;function df(e){for(var t=sc(e),r=t.length;r--;){var n=t[r],i=e[n];t[r]=[n,i,uf(i)]}return t}ze(df,"getMatchData");var pf=df;function ff(e,t){return function(r){return null!=r&&(r[e]===t&&(void 0!==t||e in Object(r)))}}ze(ff,"matchesStrictComparable");var hf=ff;function mf(e){var t=pf(e);return 1==t.length&&t[0][2]?hf(t[0][0],t[0][1]):function(r){return r===e||lf(r,e,t)}}ze(mf,"baseMatches");var gf=mf;function yf(e,t){return null!=e&&t in Object(e)}ze(yf,"baseHasIn");var vf=yf;function Tf(e,t,r){for(var n=-1,i=(t=bu(t,e)).length,a=!1;++n<i;){var s=Cu(t[n]);if(!(a=null!=e&&r(e,s)))break;e=e[s]}return a||++n!=i?a:!!(i=null==e?0:e.length)&&hl(i)&&Qo(s,i)&&(Ss(e)||_l(e))}ze(Tf,"hasPath");var Rf=Tf;function $f(e,t){return null!=e&&Rf(e,t,vf)}ze($f,"hasIn");var bf=$f;function Ef(e,t){return Tc(e)&&uf(t)?hf(Cu(e),t):function(r){var n=wu(r,e);return void 0===n&&n===t?bf(r,e):sf(t,n,3)}}ze(Ef,"baseMatchesProperty");var Cf=Ef;function Af(e){return function(t){return null==t?void 0:t[e]}}ze(Af,"baseProperty");var kf=Af;function Sf(e){return function(t){return ku(t,e)}}ze(Sf,"basePropertyDeep");var wf=Sf;function xf(e){return Tc(e)?kf(Cu(e)):wf(e)}ze(xf,"property");var Nf=xf;function If(e){return"function"==typeof e?e:null==e?Qs:"object"==typeof e?Ss(e)?Cf(e[0],e[1]):gf(e):Nf(e)}ze(If,"baseIteratee");var _f=If;function Pf(e,t,r,n){for(var i=-1,a=null==e?0:e.length;++i<a;){var s=e[i];t(n,s,r(s),e)}return n}ze(Pf,"arrayAggregator");var Df=Pf;function Of(e){return function(t,r,n){for(var i=-1,a=Object(t),s=n(t),o=s.length;o--;){var l=s[e?o:++i];if(!1===r(a[l],l,a))break}return t}}ze(Of,"createBaseFor");var Lf=Of();function Mf(e,t){return e&&Lf(e,t,sc)}ze(Mf,"baseForOwn");var jf=Mf;function Ff(e,t){return function(r,n){if(null==r)return r;if(!gl(r))return e(r,n);for(var i=r.length,a=t?i:-1,s=Object(r);(t?a--:++a<i)&&!1!==n(s[a],a,s););return r}}ze(Ff,"createBaseEach");var zf=Ff(jf);function Kf(e,t,r,n){return zf(e,function(e,i,a){t(n,e,r(e),a)}),n}ze(Kf,"baseAggregator");var Gf=Kf;function qf(e,t){return function(r,n){var i=Ss(r)?Df:Gf,a=t?t():{};return i(r,e,_f(n,2),a)}}ze(qf,"createAggregator");var Uf=qf,Wf=Object.prototype,Bf=Wf.hasOwnProperty,Vf=pl(function(e,t){e=Object(e);var r=-1,n=t.length,i=n>2?t[2]:void 0;for(i&&vl(t[0],t[1],i)&&(n=1);++r<n;)for(var a=t[r],s=mc(a),o=-1,l=s.length;++o<l;){var c=s[o],u=e[c];(void 0===u||rl(u,Wf[c])&&!Bf.call(e,c))&&(e[c]=a[c])}return e});function Hf(e){return bs(e)&&gl(e)}ze(Hf,"isArrayLikeObject");var Yf=Hf;function Jf(e,t,r){for(var n=-1,i=null==e?0:e.length;++n<i;)if(r(t,e[n]))return!0;return!1}ze(Jf,"arrayIncludesWith");var Xf=Jf;function Qf(e,t,r,n){var i=-1,a=Yo,s=!0,o=e.length,l=[],c=t.length;if(!o)return l;r&&(t=ks(t,ql(r))),n?(a=Xf,s=!1):t.length>=200&&(a=jp,s=!1,t=new Dp(t));e:for(;++i<o;){var u=e[i],d=null==r?u:r(u);if(u=n||0!==u?u:0,s&&d==d){for(var p=c;p--;)if(t[p]===d)continue e;l.push(u)}else a(t,d,n)||l.push(u)}return l}ze(Qf,"baseDifference");var Zf=Qf,eh=pl(function(e,t){return Yf(e)?Zf(e,Ou(t,1,Yf,!0)):[]});function th(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}ze(th,"last");var rh=th;function nh(e,t,r){var n=null==e?0:e.length;return n?(t=r||void 0===t?1:Js(t),zu(e,t<0?0:t,n)):[]}ze(nh,"drop");var ih=nh;function ah(e,t,r){var n=null==e?0:e.length;return n?(t=r||void 0===t?1:Js(t),zu(e,0,(t=n-t)<0?0:t)):[]}ze(ah,"dropRight");var sh=ah;function oh(e){return"function"==typeof e?e:Qs}ze(oh,"castFunction");var lh=oh;function ch(e,t){return(Ss(e)?Fo:zf)(e,lh(t))}ze(ch,"forEach");var uh=ch;function dh(e,t){for(var r=-1,n=null==e?0:e.length;++r<n;)if(!t(e[r],r,e))return!1;return!0}ze(dh,"arrayEvery");var ph=dh;function fh(e,t){var r=!0;return zf(e,function(e,n,i){return r=!!t(e,n,i)}),r}ze(fh,"baseEvery");var hh=fh;function mh(e,t,r){var n=Ss(e)?ph:hh;return r&&vl(e,t,r)&&(t=void 0),n(e,_f(t,3))}ze(mh,"every");var gh=mh;function yh(e,t){var r=[];return zf(e,function(e,n,i){t(e,n,i)&&r.push(e)}),r}ze(yh,"baseFilter");var vh=yh;function Th(e,t){return(Ss(e)?pd:vh)(e,_f(t,3))}ze(Th,"filter");var Rh=Th;function $h(e){return function(t,r,n){var i=Object(t);if(!gl(t)){var a=_f(r,3);t=sc(t),r=ze(function(e){return a(i[e],e,i)},"predicate")}var s=e(t,r,n);return s>-1?i[a?t[s]:s]:void 0}}ze($h,"createFind");var bh=$h,Eh=Math.max;function Ch(e,t,r){var n=null==e?0:e.length;if(!n)return-1;var i=null==r?0:Js(r);return i<0&&(i=Eh(n+i,0)),Ko(e,_f(t,3),i)}ze(Ch,"findIndex");var Ah=bh(Ch);function kh(e){return e&&e.length?e[0]:void 0}ze(kh,"head");var Sh=kh;function wh(e,t){var r=-1,n=gl(e)?Array(e.length):[];return zf(e,function(e,i,a){n[++r]=t(e,i,a)}),n}ze(wh,"baseMap");var xh=wh;function Nh(e,t){return(Ss(e)?ks:xh)(e,_f(t,3))}ze(Nh,"map");var Ih=Nh;function _h(e,t){return Ou(Ih(e,t),1)}ze(_h,"flatMap");var Ph=_h,Dh=Object.prototype.hasOwnProperty,Oh=Uf(function(e,t,r){Dh.call(e,r)?e[r].push(t):el(e,r,[t])}),Lh=Object.prototype.hasOwnProperty;function Mh(e,t){return null!=e&&Lh.call(e,t)}ze(Mh,"baseHas");var jh=Mh;function Fh(e,t){return null!=e&&Rf(e,t,jh)}ze(Fh,"has");var zh=Fh;function Kh(e){return"string"==typeof e||!Ss(e)&&bs(e)&&"[object String]"==Rs(e)}ze(Kh,"isString");var Gh=Kh;function qh(e,t){return ks(t,function(t){return e[t]})}ze(qh,"baseValues");var Uh=qh;function Wh(e){return null==e?[]:Uh(e,sc(e))}ze(Wh,"values");var Bh=Wh,Vh=Math.max;function Hh(e,t,r,n){e=gl(e)?e:Bh(e),r=r&&!n?Js(r):0;var i=e.length;return r<0&&(r=Vh(i+r,0)),Gh(e)?r<=i&&e.indexOf(t,r)>-1:!!i&&Vo(e,t,r)>-1}ze(Hh,"includes");var Yh=Hh,Jh=Math.max;function Xh(e,t,r){var n=null==e?0:e.length;if(!n)return-1;var i=null==r?0:Js(r);return i<0&&(i=Jh(n+i,0)),Vo(e,t,i)}ze(Xh,"indexOf");var Qh=Xh,Zh=Object.prototype.hasOwnProperty;function em(e){if(null==e)return!0;if(gl(e)&&(Ss(e)||"string"==typeof e||"function"==typeof e.splice||jl(e)||Yl(e)||_l(e)))return!e.length;var t=qd(e);if("[object Map]"==t||"[object Set]"==t)return!e.size;if(El(e))return!ic(e).length;for(var r in e)if(Zh.call(e,r))return!1;return!0}ze(em,"isEmpty");var tm=em;function rm(e){return bs(e)&&"[object RegExp]"==Rs(e)}ze(rm,"baseIsRegExp");var nm=rm,im=Vl&&Vl.isRegExp,am=im?ql(im):nm;function sm(e){return void 0===e}ze(sm,"isUndefined");var om=sm;function lm(e){if("function"!=typeof e)throw new TypeError("Expected a function");return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}ze(lm,"negate");var cm=lm;function um(e,t,r,n){if(!Fs(e))return e;for(var i=-1,a=(t=bu(t,e)).length,s=a-1,o=e;null!=o&&++i<a;){var l=Cu(t[i]),c=r;if("__proto__"===l||"constructor"===l||"prototype"===l)return e;if(i!=s){var u=o[l];void 0===(c=n?n(u,l,o):void 0)&&(c=Fs(u)?u:Qo(t[i+1])?[]:{})}al(o,l,c),o=o[l]}return e}ze(um,"baseSet");var dm=um;function pm(e,t,r){for(var n=-1,i=t.length,a={};++n<i;){var s=t[n],o=ku(e,s);r(o,s)&&dm(a,bu(s,e),o)}return a}ze(pm,"basePickBy");var fm=pm;function hm(e,t){if(null==e)return{};var r=ks(wd(e),function(e){return[e]});return t=_f(t),fm(e,r,function(e,r){return t(e,r[0])})}ze(hm,"pickBy");var mm=hm;function gm(e,t,r,n,i){return i(e,function(e,i,a){r=n?(n=!1,e):t(r,e,i,a)}),r}ze(gm,"baseReduce");var ym=gm;function vm(e,t,r){var n=Ss(e)?Gu:ym,i=arguments.length<3;return n(e,_f(t,4),r,i,zf)}ze(vm,"reduce");var Tm=vm;function Rm(e,t){return(Ss(e)?pd:vh)(e,cm(_f(t,3)))}ze(Rm,"reject");var $m=Rm;function bm(e,t){var r;return zf(e,function(e,n,i){return!(r=t(e,n,i))}),!!r}ze(bm,"baseSome");var Em=bm;function Cm(e,t,r){var n=Ss(e)?Lp:Em;return r&&vl(e,t,r)&&(t=void 0),n(e,_f(t,3))}ze(Cm,"some");var Am=Cm,km=Id&&1/Up(new Id([,-0]))[1]==1/0?function(e){return new Id(e)}:wo;function Sm(e,t,r){var n=-1,i=Yo,a=e.length,s=!0,o=[],l=o;if(r)s=!1,i=Xf;else if(a>=200){var c=t?null:km(e);if(c)return Up(c);s=!1,i=jp,l=new Dp}else l=t?[]:o;e:for(;++n<a;){var u=e[n],d=t?t(u):u;if(u=r||0!==u?u:0,s&&d==d){for(var p=l.length;p--;)if(l[p]===d)continue e;t&&l.push(d),o.push(u)}else i(l,d,r)||(l!==o&&l.push(d),o.push(u))}return o}ze(Sm,"baseUniq");var wm=Sm;function xm(e){return e&&e.length?wm(e):[]}ze(xm,"uniq");var Nm=xm;function Im(e){console&&console.error&&console.error(`Error: ${e}`)}function _m(e){console&&console.warn&&console.warn(`Warning: ${e}`)}function Pm(e){const t=(new Date).getTime(),r=e();return{time:(new Date).getTime()-t,value:r}}function Dm(e){function t(){}ze(t,"FakeConstructor"),t.prototype=e;const r=new t;function n(){return typeof r.bar}return ze(n,"fakeAccess"),n(),n(),e}function Om(e){return Lm(e)?e.LABEL:e.name}function Lm(e){return Gh(e.LABEL)&&""!==e.LABEL}ze(Im,"PRINT_ERROR"),ze(_m,"PRINT_WARNING"),ze(Pm,"timer"),ze(Dm,"toFastProperties"),ze(Om,"tokenLabel"),ze(Lm,"hasTokenLabel");var Mm=class{static{ze(this,"AbstractProduction")}get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){this._definition=e}accept(e){e.visit(this),uh(this.definition,t=>{t.accept(e)})}},jm=class extends Mm{static{ze(this,"NonTerminal")}constructor(e){super([]),this.idx=1,lc(this,mm(e,e=>void 0!==e))}set definition(e){}get definition(){return void 0!==this.referencedRule?this.referencedRule.definition:[]}accept(e){e.visit(this)}},Fm=class extends Mm{static{ze(this,"Rule")}constructor(e){super(e.definition),this.orgText="",lc(this,mm(e,e=>void 0!==e))}},zm=class extends Mm{static{ze(this,"Alternative")}constructor(e){super(e.definition),this.ignoreAmbiguities=!1,lc(this,mm(e,e=>void 0!==e))}},Km=class extends Mm{static{ze(this,"Option")}constructor(e){super(e.definition),this.idx=1,lc(this,mm(e,e=>void 0!==e))}},Gm=class extends Mm{static{ze(this,"RepetitionMandatory")}constructor(e){super(e.definition),this.idx=1,lc(this,mm(e,e=>void 0!==e))}},qm=class extends Mm{static{ze(this,"RepetitionMandatoryWithSeparator")}constructor(e){super(e.definition),this.idx=1,lc(this,mm(e,e=>void 0!==e))}},Um=class extends Mm{static{ze(this,"Repetition")}constructor(e){super(e.definition),this.idx=1,lc(this,mm(e,e=>void 0!==e))}},Wm=class extends Mm{static{ze(this,"RepetitionWithSeparator")}constructor(e){super(e.definition),this.idx=1,lc(this,mm(e,e=>void 0!==e))}},Bm=class extends Mm{static{ze(this,"Alternation")}get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){super(e.definition),this.idx=1,this.ignoreAmbiguities=!1,this.hasPredicates=!1,lc(this,mm(e,e=>void 0!==e))}},Vm=class{static{ze(this,"Terminal")}constructor(e){this.idx=1,lc(this,mm(e,e=>void 0!==e))}accept(e){e.visit(this)}};function Hm(e){return Ih(e,Ym)}function Ym(e){function t(e){return Ih(e,Ym)}if(ze(t,"convertDefinition"),e instanceof jm){const t={type:"NonTerminal",name:e.nonTerminalName,idx:e.idx};return Gh(e.label)&&(t.label=e.label),t}if(e instanceof zm)return{type:"Alternative",definition:t(e.definition)};if(e instanceof Km)return{type:"Option",idx:e.idx,definition:t(e.definition)};if(e instanceof Gm)return{type:"RepetitionMandatory",idx:e.idx,definition:t(e.definition)};if(e instanceof qm)return{type:"RepetitionMandatoryWithSeparator",idx:e.idx,separator:Ym(new Vm({terminalType:e.separator})),definition:t(e.definition)};if(e instanceof Wm)return{type:"RepetitionWithSeparator",idx:e.idx,separator:Ym(new Vm({terminalType:e.separator})),definition:t(e.definition)};if(e instanceof Um)return{type:"Repetition",idx:e.idx,definition:t(e.definition)};if(e instanceof Bm)return{type:"Alternation",idx:e.idx,definition:t(e.definition)};if(e instanceof Vm){const t={type:"Terminal",name:e.terminalType.name,label:Om(e.terminalType),idx:e.idx};Gh(e.label)&&(t.terminalLabel=e.label);const r=e.terminalType.PATTERN;return e.terminalType.PATTERN&&(t.pattern=am(r)?r.source:r),t}if(e instanceof Fm)return{type:"Rule",name:e.name,orgText:e.orgText,definition:t(e.definition)};throw Error("non exhaustive match")}ze(Hm,"serializeGrammar"),ze(Ym,"serializeProduction");var Jm=class{static{ze(this,"GAstVisitor")}visit(e){const t=e;switch(t.constructor){case jm:return this.visitNonTerminal(t);case zm:return this.visitAlternative(t);case Km:return this.visitOption(t);case Gm:return this.visitRepetitionMandatory(t);case qm:return this.visitRepetitionMandatoryWithSeparator(t);case Wm:return this.visitRepetitionWithSeparator(t);case Um:return this.visitRepetition(t);case Bm:return this.visitAlternation(t);case Vm:return this.visitTerminal(t);case Fm:return this.visitRule(t);default:throw Error("non exhaustive match")}}visitNonTerminal(e){}visitAlternative(e){}visitOption(e){}visitRepetition(e){}visitRepetitionMandatory(e){}visitRepetitionMandatoryWithSeparator(e){}visitRepetitionWithSeparator(e){}visitAlternation(e){}visitTerminal(e){}visitRule(e){}};function Xm(e){return e instanceof zm||e instanceof Km||e instanceof Um||e instanceof Gm||e instanceof qm||e instanceof Wm||e instanceof Vm||e instanceof Fm}function Qm(e,t=[]){return!!(e instanceof Km||e instanceof Um||e instanceof Wm)||(e instanceof Bm?Am(e.definition,e=>Qm(e,t)):!(e instanceof jm&&Yh(t,e))&&(e instanceof Mm&&(e instanceof jm&&t.push(e),gh(e.definition,e=>Qm(e,t)))))}function Zm(e){return e instanceof Bm}function eg(e){if(e instanceof jm)return"SUBRULE";if(e instanceof Km)return"OPTION";if(e instanceof Bm)return"OR";if(e instanceof Gm)return"AT_LEAST_ONE";if(e instanceof qm)return"AT_LEAST_ONE_SEP";if(e instanceof Wm)return"MANY_SEP";if(e instanceof Um)return"MANY";if(e instanceof Vm)return"CONSUME";throw Error("non exhaustive match")}ze(Xm,"isSequenceProd"),ze(Qm,"isOptionalProd"),ze(Zm,"isBranchingProd"),ze(eg,"getProductionDslName");var tg=class{static{ze(this,"RestWalker")}walk(e,t=[]){uh(e.definition,(r,n)=>{const i=ih(e.definition,n+1);if(r instanceof jm)this.walkProdRef(r,i,t);else if(r instanceof Vm)this.walkTerminal(r,i,t);else if(r instanceof zm)this.walkFlat(r,i,t);else if(r instanceof Km)this.walkOption(r,i,t);else if(r instanceof Gm)this.walkAtLeastOne(r,i,t);else if(r instanceof qm)this.walkAtLeastOneSep(r,i,t);else if(r instanceof Wm)this.walkManySep(r,i,t);else if(r instanceof Um)this.walkMany(r,i,t);else{if(!(r instanceof Bm))throw Error("non exhaustive match");this.walkOr(r,i,t)}})}walkTerminal(e,t,r){}walkProdRef(e,t,r){}walkFlat(e,t,r){const n=t.concat(r);this.walk(e,n)}walkOption(e,t,r){const n=t.concat(r);this.walk(e,n)}walkAtLeastOne(e,t,r){const n=[new Km({definition:e.definition})].concat(t,r);this.walk(e,n)}walkAtLeastOneSep(e,t,r){const n=rg(e,t,r);this.walk(e,n)}walkMany(e,t,r){const n=[new Km({definition:e.definition})].concat(t,r);this.walk(e,n)}walkManySep(e,t,r){const n=rg(e,t,r);this.walk(e,n)}walkOr(e,t,r){const n=t.concat(r);uh(e.definition,e=>{const t=new zm({definition:[e]});this.walk(t,n)})}};function rg(e,t,r){return[new Km({definition:[new Vm({terminalType:e.separator})].concat(e.definition)})].concat(t,r)}function ng(e){if(e instanceof jm)return ng(e.referencedRule);if(e instanceof Vm)return sg(e);if(Xm(e))return ig(e);if(Zm(e))return ag(e);throw Error("non exhaustive match")}function ig(e){let t=[];const r=e.definition;let n,i=0,a=r.length>i,s=!0;for(;a&&s;)n=r[i],s=Qm(n),t=t.concat(ng(n)),i+=1,a=r.length>i;return Nm(t)}function ag(e){const t=Ih(e.definition,e=>ng(e));return Nm(Mu(t))}function sg(e){return[e.terminalType]}ze(rg,"restForRepetitionWithSeparator"),ze(ng,"first"),ze(ig,"firstForSequence"),ze(ag,"firstForBranching"),ze(sg,"firstForTerminal");var og="_~IN~_",lg=class extends tg{static{ze(this,"ResyncFollowsWalker")}constructor(e){super(),this.topProd=e,this.follows={}}startWalking(){return this.walk(this.topProd),this.follows}walkTerminal(e,t,r){}walkProdRef(e,t,r){const n=ug(e.referencedRule,e.idx)+this.topProd.name,i=t.concat(r),a=ng(new zm({definition:i}));this.follows[n]=a}};function cg(e){const t={};return uh(e,e=>{const r=new lg(e).startWalking();lc(t,r)}),t}function ug(e,t){return e.name+t+og}ze(cg,"computeAllProdsFollows"),ze(ug,"buildBetweenProdsFollowPrefix");var dg={},pg=new sa;function fg(e){const t=e.toString();if(dg.hasOwnProperty(t))return dg[t];{const e=pg.pattern(t);return dg[t]=e,e}}function hg(){dg={}}ze(fg,"getRegExpAst"),ze(hg,"clearRegExpParserCache");var mg="Complement Sets are not supported for first char optimization",gg='Unable to use "first char" lexer optimizations:\n';function yg(e,t=!1){try{const t=fg(e);return vg(t.value,{},t.flags.ignoreCase)}catch(r){if(r.message===mg)t&&_m(`${gg}\tUnable to optimize: < ${e.toString()} >\n\tComplement Sets cannot be automatically optimized.\n\tThis will disable the lexer's first char optimizations.\n\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{let r="";t&&(r="\n\tThis will disable the lexer's first char optimizations.\n\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details."),Im(`${gg}\n\tFailed parsing: < ${e.toString()} >\n\tUsing the @chevrotain/regexp-to-ast library\n\tPlease open an issue at: https://github.com/chevrotain/chevrotain/issues`+r)}}return[]}function vg(e,t,r){switch(e.type){case"Disjunction":for(let i=0;i<e.value.length;i++)vg(e.value[i],t,r);break;case"Alternative":const n=e.value;for(let e=0;e<n.length;e++){const i=n[e];switch(i.type){case"EndAnchor":case"GroupBackReference":case"Lookahead":case"NegativeLookahead":case"Lookbehind":case"NegativeLookbehind":case"StartAnchor":case"WordBoundary":case"NonWordBoundary":continue}const a=i;switch(a.type){case"Character":Tg(a.value,t,r);break;case"Set":if(!0===a.complement)throw Error(mg);uh(a.value,e=>{if("number"==typeof e)Tg(e,t,r);else{const n=e;if(!0===r)for(let e=n.from;e<=n.to;e++)Tg(e,t,r);else{for(let e=n.from;e<=n.to&&e<ay;e++)Tg(e,t,r);if(n.to>=ay){const e=n.from>=ay?n.from:ay,r=n.to,i=oy(e),a=oy(r);for(let n=i;n<=a;n++)t[n]=n}}}});break;case"Group":vg(a.value,t,r);break;default:throw Error("Non Exhaustive Match")}const s=void 0!==a.quantifier&&0===a.quantifier.atLeast;if("Group"===a.type&&!1===bg(a)||"Group"!==a.type&&!1===s)break}break;default:throw Error("non exhaustive match!")}return Bh(t)}function Tg(e,t,r){const n=oy(e);t[n]=n,!0===r&&Rg(e,t)}function Rg(e,t){const r=String.fromCharCode(e),n=r.toUpperCase();if(n!==r){const e=oy(n.charCodeAt(0));t[e]=e}else{const e=r.toLowerCase();if(e!==r){const r=oy(e.charCodeAt(0));t[r]=r}}}function $g(e,t){return Ah(e.value,e=>{if("number"==typeof e)return Yh(t,e);{const r=e;return void 0!==Ah(t,e=>r.from<=e&&e<=r.to)}})}function bg(e){const t=e.quantifier;return!(!t||0!==t.atLeast)||!!e.value&&(Ss(e.value)?gh(e.value,bg):bg(e.value))}ze(yg,"getOptimizedStartCodesIndices"),ze(vg,"firstCharOptimizedIndices"),ze(Tg,"addOptimizedIdxToResult"),ze(Rg,"handleIgnoreCase"),ze($g,"findCode"),ze(bg,"isWholeOptional");var Eg=class extends oa{static{ze(this,"CharCodeFinder")}constructor(e){super(),this.targetCharCodes=e,this.found=!1}visitChildren(e){if(!0!==this.found){switch(e.type){case"Lookahead":return void this.visitLookahead(e);case"NegativeLookahead":return void this.visitNegativeLookahead(e);case"Lookbehind":return void this.visitLookbehind(e);case"NegativeLookbehind":return void this.visitNegativeLookbehind(e)}super.visitChildren(e)}}visitCharacter(e){Yh(this.targetCharCodes,e.value)&&(this.found=!0)}visitSet(e){e.complement?void 0===$g(e,this.targetCharCodes)&&(this.found=!0):void 0!==$g(e,this.targetCharCodes)&&(this.found=!0)}};function Cg(e,t){if(t instanceof RegExp){const r=fg(t),n=new Eg(e);return n.visit(r),n.found}return void 0!==Ah(t,t=>Yh(e,t.charCodeAt(0)))}ze(Cg,"canMatchCharCode");var Ag="PATTERN",kg="defaultMode",Sg="modes",wg="boolean"==typeof new RegExp("(?:)").sticky;function xg(e,t){const r=(t=Vf(t,{useSticky:wg,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r","\n"],tracer:ze((e,t)=>t(),"tracer")})).tracer;let n;r("initCharCodeToOptimizedIndexMap",()=>{ly()}),r("Reject Lexer.NA",()=>{n=$m(e,e=>e[Ag]===wy.NA)});let i,a,s,o,l,c,u,d,p,f,h,m=!1;r("Transform Patterns",()=>{m=!1,i=Ih(n,e=>{const r=e[Ag];if(am(r)){const e=r.source;return 1!==e.length||"^"===e||"$"===e||"."===e||r.ignoreCase?2!==e.length||"\\"!==e[0]||Yh(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],e[1])?t.useSticky?Hg(r):Vg(r):e[1]:e}if(to(r))return m=!0,{exec:r};if("object"==typeof r)return m=!0,r;if("string"==typeof r){if(1===r.length)return r;{const e=r.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),n=new RegExp(e);return t.useSticky?Hg(n):Vg(n)}}throw Error("non exhaustive match")})}),r("misc mapping",()=>{a=Ih(n,e=>e.tokenTypeIdx),s=Ih(n,e=>{const t=e.GROUP;if(t!==wy.SKIPPED){if(Gh(t))return t;if(om(t))return!1;throw Error("non exhaustive match")}}),o=Ih(n,e=>{const t=e.LONGER_ALT;if(t){return Ss(t)?Ih(t,e=>Qh(n,e)):[Qh(n,t)]}}),l=Ih(n,e=>e.PUSH_MODE),c=Ih(n,e=>zh(e,"POP_MODE"))}),r("Line Terminator Handling",()=>{const e=ny(t.lineTerminatorCharacters);u=Ih(n,e=>!1),"onlyOffset"!==t.positionTracking&&(u=Ih(n,t=>zh(t,"LINE_BREAKS")?!!t.LINE_BREAKS:!1===ty(t,e)&&Cg(e,t.PATTERN)))}),r("Misc Mapping #2",()=>{d=Ih(n,Qg),p=Ih(i,Zg),f=Tm(n,(e,t)=>{const r=t.GROUP;return Gh(r)&&r!==wy.SKIPPED&&(e[r]=[]),e},{}),h=Ih(i,(e,t)=>({pattern:i[t],longerAlt:o[t],canLineTerminator:u[t],isCustom:d[t],short:p[t],group:s[t],push:l[t],pop:c[t],tokenTypeIdx:a[t],tokenType:n[t]}))});let g=!0,y=[];return t.safeMode||r("First Char Optimization",()=>{y=Tm(n,(e,r,n)=>{if("string"==typeof r.PATTERN){const t=oy(r.PATTERN.charCodeAt(0));iy(e,t,h[n])}else if(Ss(r.START_CHARS_HINT)){let t;uh(r.START_CHARS_HINT,r=>{const i=oy("string"==typeof r?r.charCodeAt(0):r);t!==i&&(t=i,iy(e,i,h[n]))})}else if(am(r.PATTERN))if(r.PATTERN.unicode)g=!1,t.ensureOptimizations&&Im(`${gg}\tUnable to analyze < ${r.PATTERN.toString()} > pattern.\n\tThe regexp unicode flag is not currently supported by the regexp-to-ast library.\n\tThis will disable the lexer's first char optimizations.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{const i=yg(r.PATTERN,t.ensureOptimizations);tm(i)&&(g=!1),uh(i,t=>{iy(e,t,h[n])})}else t.ensureOptimizations&&Im(`${gg}\tTokenType: <${r.name}> is using a custom token pattern without providing <start_chars_hint> parameter.\n\tThis will disable the lexer's first char optimizations.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),g=!1;return e},[])}),{emptyGroups:f,patternIdxToConfig:h,charCodeToPatternIdxToConfig:y,hasCustom:m,canBeOptimized:g}}function Ng(e,t){let r=[];const n=_g(e);r=r.concat(n.errors);const i=Pg(n.valid),a=i.valid;return r=r.concat(i.errors),r=r.concat(Ig(a)),r=r.concat(Kg(a)),r=r.concat(Gg(a,t)),r=r.concat(qg(a)),r}function Ig(e){let t=[];const r=Rh(e,e=>am(e[Ag]));return t=t.concat(Og(r)),t=t.concat(jg(r)),t=t.concat(Fg(r)),t=t.concat(zg(r)),t=t.concat(Lg(r)),t}function _g(e){const t=Rh(e,e=>!zh(e,Ag));return{errors:Ih(t,e=>({message:"Token Type: ->"+e.name+"<- missing static 'PATTERN' property",type:Cy.MISSING_PATTERN,tokenTypes:[e]})),valid:eh(e,t)}}function Pg(e){const t=Rh(e,e=>{const t=e[Ag];return!(am(t)||to(t)||zh(t,"exec")||Gh(t))});return{errors:Ih(t,e=>({message:"Token Type: ->"+e.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:Cy.INVALID_PATTERN,tokenTypes:[e]})),valid:eh(e,t)}}ze(xg,"analyzeTokenTypes"),ze(Ng,"validatePatterns"),ze(Ig,"validateRegExpPattern"),ze(_g,"findMissingPatterns"),ze(Pg,"findInvalidPatterns");var Dg=/[^\\][$]/;function Og(e){class t extends oa{static{ze(this,"EndAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitEndAnchor(e){this.found=!0}}const r=Rh(e,e=>{const r=e.PATTERN;try{const e=fg(r),n=new t;return n.visit(e),n.found}catch(n){return Dg.test(r.source)}});return Ih(r,e=>({message:"Unexpected RegExp Anchor Error:\n\tToken Type: ->"+e.name+"<- static 'PATTERN' cannot contain end of input anchor '$'\n\tSee chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\tfor details.",type:Cy.EOI_ANCHOR_FOUND,tokenTypes:[e]}))}function Lg(e){const t=Rh(e,e=>e.PATTERN.test(""));return Ih(t,e=>({message:"Token Type: ->"+e.name+"<- static 'PATTERN' must not match an empty string",type:Cy.EMPTY_MATCH_PATTERN,tokenTypes:[e]}))}ze(Og,"findEndOfInputAnchor"),ze(Lg,"findEmptyMatchRegExps");var Mg=/[^\\[][\^]|^\^/;function jg(e){class t extends oa{static{ze(this,"StartAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitStartAnchor(e){this.found=!0}}const r=Rh(e,e=>{const r=e.PATTERN;try{const e=fg(r),n=new t;return n.visit(e),n.found}catch(n){return Mg.test(r.source)}});return Ih(r,e=>({message:"Unexpected RegExp Anchor Error:\n\tToken Type: ->"+e.name+"<- static 'PATTERN' cannot contain start of input anchor '^'\n\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\tfor details.",type:Cy.SOI_ANCHOR_FOUND,tokenTypes:[e]}))}function Fg(e){const t=Rh(e,e=>{const t=e[Ag];return t instanceof RegExp&&(t.multiline||t.global)});return Ih(t,e=>({message:"Token Type: ->"+e.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:Cy.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[e]}))}function zg(e){const t=[];let r=Ih(e,r=>Tm(e,(e,n)=>(r.PATTERN.source!==n.PATTERN.source||Yh(t,n)||n.PATTERN===wy.NA||(t.push(n),e.push(n)),e),[]));r=wp(r);const n=Rh(r,e=>e.length>1);return Ih(n,e=>{const t=Ih(e,e=>e.name);return{message:`The same RegExp pattern ->${Sh(e).PATTERN}<-has been used in all of the following Token Types: ${t.join(", ")} <-`,type:Cy.DUPLICATE_PATTERNS_FOUND,tokenTypes:e}})}function Kg(e){const t=Rh(e,e=>{if(!zh(e,"GROUP"))return!1;const t=e.GROUP;return t!==wy.SKIPPED&&t!==wy.NA&&!Gh(t)});return Ih(t,e=>({message:"Token Type: ->"+e.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:Cy.INVALID_GROUP_TYPE_FOUND,tokenTypes:[e]}))}function Gg(e,t){const r=Rh(e,e=>void 0!==e.PUSH_MODE&&!Yh(t,e.PUSH_MODE));return Ih(r,e=>({message:`Token Type: ->${e.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${e.PUSH_MODE}<-which does not exist`,type:Cy.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[e]}))}function qg(e){const t=[],r=Tm(e,(e,t,r)=>{const n=t.PATTERN;return n===wy.NA||(Gh(n)?e.push({str:n,idx:r,tokenType:t}):am(n)&&Wg(n)&&e.push({str:n.source,idx:r,tokenType:t})),e},[]);return uh(e,(e,n)=>{uh(r,({str:r,idx:i,tokenType:a})=>{if(n<i&&Ug(r,e.PATTERN)){const r=`Token: ->${a.name}<- can never be matched.\nBecause it appears AFTER the Token Type ->${e.name}<-in the lexer's definition.\nSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;t.push({message:r,type:Cy.UNREACHABLE_PATTERN,tokenTypes:[e,a]})}})}),t}function Ug(e,t){if(am(t)){if(Bg(t))return!1;const r=t.exec(e);return null!==r&&0===r.index}if(to(t))return t(e,0,[],{});if(zh(t,"exec"))return t.exec(e,0,[],{});if("string"==typeof t)return t===e;throw Error("non exhaustive match")}function Wg(e){return void 0===Ah([".","\\","[","]","|","^","$","(",")","?","*","+","{"],t=>-1!==e.source.indexOf(t))}function Bg(e){return/(\(\?=)|(\(\?!)|(\(\?<=)|(\(\?<!)/.test(e.source)}function Vg(e){const t=e.ignoreCase?"i":"";return new RegExp(`^(?:${e.source})`,t)}function Hg(e){const t=e.ignoreCase?"iy":"y";return new RegExp(`${e.source}`,t)}function Yg(e,t,r){const n=[];return zh(e,kg)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+kg+"> property in its definition\n",type:Cy.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),zh(e,Sg)||n.push({message:"A MultiMode Lexer cannot be initialized without a <modes> property in its definition\n",type:Cy.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),zh(e,Sg)&&zh(e,kg)&&!zh(e.modes,e.defaultMode)&&n.push({message:`A MultiMode Lexer cannot be initialized with a ${kg}: <${e.defaultMode}>which does not exist\n`,type:Cy.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),zh(e,Sg)&&uh(e.modes,(e,t)=>{uh(e,(r,i)=>{if(om(r))n.push({message:`A Lexer cannot be initialized using an undefined Token Type. Mode:<${t}> at index: <${i}>\n`,type:Cy.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED});else if(zh(r,"LONGER_ALT")){const i=Ss(r.LONGER_ALT)?r.LONGER_ALT:[r.LONGER_ALT];uh(i,i=>{om(i)||Yh(e,i)||n.push({message:`A MultiMode Lexer cannot be initialized with a longer_alt <${i.name}> on token <${r.name}> outside of mode <${t}>\n`,type:Cy.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE})})}})}),n}function Jg(e,t,r){const n=[];let i=!1;const a=wp(Mu(Bh(e.modes))),s=$m(a,e=>e[Ag]===wy.NA),o=ny(r);return t&&uh(s,e=>{const t=ty(e,o);if(!1!==t){const r={message:ry(e,t),type:t.issue,tokenType:e};n.push(r)}else zh(e,"LINE_BREAKS")?!0===e.LINE_BREAKS&&(i=!0):Cg(o,e.PATTERN)&&(i=!0)}),t&&!i&&n.push({message:"Warning: No LINE_BREAKS Found.\n\tThis Lexer has been defined to track line and column information,\n\tBut none of the Token Types can be identified as matching a line terminator.\n\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS \n\tfor details.",type:Cy.NO_LINE_BREAKS_FLAGS}),n}function Xg(e){const t={},r=sc(e);return uh(r,r=>{const n=e[r];if(!Ss(n))throw Error("non exhaustive match");t[r]=[]}),t}function Qg(e){const t=e.PATTERN;if(am(t))return!1;if(to(t))return!0;if(zh(t,"exec"))return!0;if(Gh(t))return!1;throw Error("non exhaustive match")}function Zg(e){return!(!Gh(e)||1!==e.length)&&e.charCodeAt(0)}ze(jg,"findStartOfInputAnchor"),ze(Fg,"findUnsupportedFlags"),ze(zg,"findDuplicatePatterns"),ze(Kg,"findInvalidGroupType"),ze(Gg,"findModesThatDoNotExist"),ze(qg,"findUnreachablePatterns"),ze(Ug,"tryToMatchStrToPattern"),ze(Wg,"noMetaChar"),ze(Bg,"usesLookAheadOrBehind"),ze(Vg,"addStartOfInput"),ze(Hg,"addStickyFlag"),ze(Yg,"performRuntimeChecks"),ze(Jg,"performWarningRuntimeChecks"),ze(Xg,"cloneEmptyGroups"),ze(Qg,"isCustomPattern"),ze(Zg,"isShortPattern");var ey={test:ze(function(e){const t=e.length;for(let r=this.lastIndex;r<t;r++){const t=e.charCodeAt(r);if(10===t)return this.lastIndex=r+1,!0;if(13===t)return 10===e.charCodeAt(r+1)?this.lastIndex=r+2:this.lastIndex=r+1,!0}return!1},"test"),lastIndex:0};function ty(e,t){if(zh(e,"LINE_BREAKS"))return!1;if(am(e.PATTERN)){try{Cg(t,e.PATTERN)}catch(r){return{issue:Cy.IDENTIFY_TERMINATOR,errMsg:r.message}}return!1}if(Gh(e.PATTERN))return!1;if(Qg(e))return{issue:Cy.CUSTOM_LINE_BREAK};throw Error("non exhaustive match")}function ry(e,t){if(t.issue===Cy.IDENTIFY_TERMINATOR)return`Warning: unable to identify line terminator usage in pattern.\n\tThe problem is in the <${e.name}> Token Type\n\t Root cause: ${t.errMsg}.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;if(t.issue===Cy.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the <line_breaks> option.\n\tThe problem is in the <${e.name}> Token Type\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;throw Error("non exhaustive match")}function ny(e){return Ih(e,e=>Gh(e)?e.charCodeAt(0):e)}function iy(e,t,r){void 0===e[t]?e[t]=[r]:e[t].push(r)}ze(ty,"checkLineBreaksIssues"),ze(ry,"buildLineBreakIssueMessage"),ze(ny,"getCharCodes"),ze(iy,"addToMapOfArrays");var ay=256,sy=[];function oy(e){return e<ay?e:sy[e]}function ly(){if(tm(sy)){sy=new Array(65536);for(let e=0;e<65536;e++)sy[e]=e>255?255+~~(e/255):e}}function cy(e,t){const r=e.tokenTypeIdx;return r===t.tokenTypeIdx||!0===t.isParent&&!0===t.categoryMatchesMap[r]}function uy(e,t){return e.tokenTypeIdx===t.tokenTypeIdx}ze(oy,"charCodeToOptimizedIndex"),ze(ly,"initCharCodeToOptimizedIndexMap"),ze(cy,"tokenStructuredMatcher"),ze(uy,"tokenStructuredMatcherNoCategories");var dy=1,py={};function fy(e){const t=hy(e);my(t),yy(t),gy(t),uh(t,e=>{e.isParent=e.categoryMatches.length>0})}function hy(e){let t=kp(e),r=e,n=!0;for(;n;){r=wp(Mu(Ih(r,e=>e.CATEGORIES)));const e=eh(r,t);t=t.concat(e),tm(e)?n=!1:r=e}return t}function my(e){uh(e,e=>{Ty(e)||(py[dy]=e,e.tokenTypeIdx=dy++),Ry(e)&&!Ss(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),Ry(e)||(e.CATEGORIES=[]),$y(e)||(e.categoryMatches=[]),by(e)||(e.categoryMatchesMap={})})}function gy(e){uh(e,e=>{e.categoryMatches=[],uh(e.categoryMatchesMap,(t,r)=>{e.categoryMatches.push(py[r].tokenTypeIdx)})})}function yy(e){uh(e,e=>{vy([],e)})}function vy(e,t){uh(e,e=>{t.categoryMatchesMap[e.tokenTypeIdx]=!0}),uh(t.CATEGORIES,r=>{const n=e.concat(t);Yh(n,r)||vy(n,r)})}function Ty(e){return zh(e,"tokenTypeIdx")}function Ry(e){return zh(e,"CATEGORIES")}function $y(e){return zh(e,"categoryMatches")}function by(e){return zh(e,"categoryMatchesMap")}function Ey(e){return zh(e,"tokenTypeIdx")}ze(fy,"augmentTokenTypes"),ze(hy,"expandCategories"),ze(my,"assignTokenDefaultProps"),ze(gy,"assignCategoriesTokensProp"),ze(yy,"assignCategoriesMapProp"),ze(vy,"singleAssignCategoriesToksMap"),ze(Ty,"hasShortKeyProperty"),ze(Ry,"hasCategoriesProperty"),ze($y,"hasExtendingTokensTypesProperty"),ze(by,"hasExtendingTokensTypesMapProperty"),ze(Ey,"isTokenType");var Cy,Ay,ky={buildUnableToPopLexerModeMessage:e=>`Unable to pop Lexer Mode after encountering Token ->${e.image}<- The Mode Stack is empty`,buildUnexpectedCharactersMessage:(e,t,r,n,i,a)=>`unexpected character: ->${e.charAt(t)}<- at offset: ${t}, skipped ${r} characters.`};(Ay=Cy||(Cy={}))[Ay.MISSING_PATTERN=0]="MISSING_PATTERN",Ay[Ay.INVALID_PATTERN=1]="INVALID_PATTERN",Ay[Ay.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",Ay[Ay.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",Ay[Ay.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",Ay[Ay.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",Ay[Ay.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",Ay[Ay.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",Ay[Ay.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",Ay[Ay.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",Ay[Ay.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",Ay[Ay.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",Ay[Ay.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",Ay[Ay.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",Ay[Ay.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",Ay[Ay.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",Ay[Ay.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK",Ay[Ay.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE=17]="MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE";var Sy={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:["\n","\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:ky,traceInitPerf:!1,skipValidations:!1,recoveryEnabled:!0};Object.freeze(Sy);var wy=class{static{ze(this,"Lexer")}constructor(e,t=Sy){if(this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},this.TRACE_INIT=(e,t)=>{if(!0===this.traceInitPerf){this.traceInitIndent++;const r=new Array(this.traceInitIndent+1).join("\t");this.traceInitIndent<this.traceInitMaxIdent&&console.log(`${r}--\x3e <${e}>`);const{time:n,value:i}=Pm(t),a=n>10?console.warn:console.log;return this.traceInitIndent<this.traceInitMaxIdent&&a(`${r}<-- <${e}> time: ${n}ms`),this.traceInitIndent--,i}return t()},"boolean"==typeof t)throw Error("The second argument to the Lexer constructor is now an ILexerConfig Object.\na boolean 2nd argument is no longer supported");this.config=lc({},Sy,t);const r=this.config.traceInitPerf;!0===r?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):"number"==typeof r&&(this.traceInitMaxIdent=r,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",()=>{let r,n=!0;this.TRACE_INIT("Lexer Config handling",()=>{if(this.config.lineTerminatorsPattern===Sy.lineTerminatorsPattern)this.config.lineTerminatorsPattern=ey;else if(this.config.lineTerminatorCharacters===Sy.lineTerminatorCharacters)throw Error("Error: Missing <lineTerminatorCharacters> property on the Lexer config.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS");if(t.safeMode&&t.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');this.trackStartLines=/full|onlyStart/i.test(this.config.positionTracking),this.trackEndLines=/full/i.test(this.config.positionTracking),Ss(e)?r={modes:{defaultMode:kp(e)},defaultMode:kg}:(n=!1,r=kp(e))}),!1===this.config.skipValidations&&(this.TRACE_INIT("performRuntimeChecks",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(Yg(r,this.trackStartLines,this.config.lineTerminatorCharacters))}),this.TRACE_INIT("performWarningRuntimeChecks",()=>{this.lexerDefinitionWarning=this.lexerDefinitionWarning.concat(Jg(r,this.trackStartLines,this.config.lineTerminatorCharacters))})),r.modes=r.modes?r.modes:{},uh(r.modes,(e,t)=>{r.modes[t]=$m(e,e=>om(e))});const i=sc(r.modes);if(uh(r.modes,(e,r)=>{this.TRACE_INIT(`Mode: <${r}> processing`,()=>{if(this.modes.push(r),!1===this.config.skipValidations&&this.TRACE_INIT("validatePatterns",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(Ng(e,i))}),tm(this.lexerDefinitionErrors)){let n;fy(e),this.TRACE_INIT("analyzeTokenTypes",()=>{n=xg(e,{lineTerminatorCharacters:this.config.lineTerminatorCharacters,positionTracking:t.positionTracking,ensureOptimizations:t.ensureOptimizations,safeMode:t.safeMode,tracer:this.TRACE_INIT})}),this.patternIdxToConfig[r]=n.patternIdxToConfig,this.charCodeToPatternIdxToConfig[r]=n.charCodeToPatternIdxToConfig,this.emptyGroups=lc({},this.emptyGroups,n.emptyGroups),this.hasCustom=n.hasCustom||this.hasCustom,this.canModeBeOptimized[r]=n.canBeOptimized}})}),this.defaultMode=r.defaultMode,!tm(this.lexerDefinitionErrors)&&!this.config.deferDefinitionErrorsHandling){const e=Ih(this.lexerDefinitionErrors,e=>e.message).join("-----------------------\n");throw new Error("Errors detected in definition of Lexer:\n"+e)}uh(this.lexerDefinitionWarning,e=>{_m(e.message)}),this.TRACE_INIT("Choosing sub-methods implementations",()=>{if(wg?(this.chopInput=Qs,this.match=this.matchWithTest):(this.updateLastIndex=wo,this.match=this.matchWithExec),n&&(this.handleModes=wo),!1===this.trackStartLines&&(this.computeNewColumn=Qs),!1===this.trackEndLines&&(this.updateTokenEndLineColumnLocation=wo),/full/i.test(this.config.positionTracking))this.createTokenInstance=this.createFullToken;else if(/onlyStart/i.test(this.config.positionTracking))this.createTokenInstance=this.createStartOnlyToken;else{if(!/onlyOffset/i.test(this.config.positionTracking))throw Error(`Invalid <positionTracking> config option: "${this.config.positionTracking}"`);this.createTokenInstance=this.createOffsetOnlyToken}this.hasCustom?(this.addToken=this.addTokenUsingPush,this.handlePayload=this.handlePayloadWithCustom):(this.addToken=this.addTokenUsingMemberAccess,this.handlePayload=this.handlePayloadNoCustom)}),this.TRACE_INIT("Failed Optimization Warnings",()=>{const e=Tm(this.canModeBeOptimized,(e,t,r)=>(!1===t&&e.push(r),e),[]);if(t.ensureOptimizations&&!tm(e))throw Error(`Lexer Modes: < ${e.join(", ")} > cannot be optimized.\n\t Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode.\n\t Or inspect the console log for details on how to resolve these issues.`)}),this.TRACE_INIT("clearRegExpParserCache",()=>{hg()}),this.TRACE_INIT("toFastProperties",()=>{Dm(this)})})}tokenize(e,t=this.defaultMode){if(!tm(this.lexerDefinitionErrors)){const e=Ih(this.lexerDefinitionErrors,e=>e.message).join("-----------------------\n");throw new Error("Unable to Tokenize because Errors detected in definition of Lexer:\n"+e)}return this.tokenizeInternal(e,t)}tokenizeInternal(e,t){let r,n,i,a,s,o,l,c,u,d,p,f,h,m,g;const y=e,v=y.length;let T=0,R=0;const $=this.hasCustom?0:Math.floor(e.length/10),b=new Array($),E=[];let C=this.trackStartLines?1:void 0,A=this.trackStartLines?1:void 0;const k=Xg(this.emptyGroups),S=this.trackStartLines,w=this.config.lineTerminatorsPattern;let x=0,N=[],I=[];const _=[],P=[];let D;function O(){return N}function L(e){const t=oy(e),r=I[t];return void 0===r?P:r}Object.freeze(P),ze(O,"getPossiblePatternsSlow"),ze(L,"getPossiblePatternsOptimized");const M=ze(e=>{if(1===_.length&&void 0===e.tokenType.PUSH_MODE){const t=this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(e);E.push({offset:e.startOffset,line:e.startLine,column:e.startColumn,length:e.image.length,message:t})}else{_.pop();const e=rh(_);N=this.patternIdxToConfig[e],I=this.charCodeToPatternIdxToConfig[e],x=N.length;const t=this.canModeBeOptimized[e]&&!1===this.config.safeMode;D=I&&t?L:O}},"pop_mode");function j(e){_.push(e),I=this.charCodeToPatternIdxToConfig[e],N=this.patternIdxToConfig[e],x=N.length,x=N.length;const t=this.canModeBeOptimized[e]&&!1===this.config.safeMode;D=I&&t?L:O}let F;ze(j,"push_mode"),j.call(this,t);const z=this.config.recoveryEnabled;for(;T<v;){o=null;const t=y.charCodeAt(T),$=D(t),I=$.length;for(r=0;r<I;r++){F=$[r];const n=F.pattern;l=null;const u=F.short;if(!1!==u?t===u&&(o=n):!0===F.isCustom?(g=n.exec(y,T,b,k),null!==g?(o=g[0],void 0!==g.payload&&(l=g.payload)):o=null):(this.updateLastIndex(n,T),o=this.match(n,e,T)),null!==o){if(s=F.longerAlt,void 0!==s){const t=s.length;for(i=0;i<t;i++){const t=N[s[i]],r=t.pattern;if(c=null,!0===t.isCustom?(g=r.exec(y,T,b,k),null!==g?(a=g[0],void 0!==g.payload&&(c=g.payload)):a=null):(this.updateLastIndex(r,T),a=this.match(r,e,T)),a&&a.length>o.length){o=a,l=c,F=t;break}}}break}}if(null!==o){if(u=o.length,d=F.group,void 0!==d&&(p=F.tokenTypeIdx,f=this.createTokenInstance(o,T,p,F.tokenType,C,A,u),this.handlePayload(f,l),!1===d?R=this.addToken(b,R,f):k[d].push(f)),e=this.chopInput(e,u),T+=u,A=this.computeNewColumn(A,u),!0===S&&!0===F.canLineTerminator){let e,t,r=0;w.lastIndex=0;do{e=w.test(o),!0===e&&(t=w.lastIndex-1,r++)}while(!0===e);0!==r&&(C+=r,A=u-t,this.updateTokenEndLineColumnLocation(f,d,t,r,C,A,u))}this.handleModes(F,M,j,f)}else{const t=T,r=C,i=A;let a=!1===z;for(;!1===a&&T<v;)for(e=this.chopInput(e,1),T++,n=0;n<x;n++){const t=N[n],r=t.pattern,i=t.short;if(!1!==i?y.charCodeAt(T)===i&&(a=!0):!0===t.isCustom?a=null!==r.exec(y,T,b,k):(this.updateLastIndex(r,T),a=null!==r.exec(e)),!0===a)break}if(h=T-t,A=this.computeNewColumn(A,h),m=this.config.errorMessageProvider.buildUnexpectedCharactersMessage(y,t,h,r,i,rh(_)),E.push({offset:t,line:r,column:i,length:h,message:m}),!1===z)break}}return this.hasCustom||(b.length=R),{tokens:b,groups:k,errors:E}}handleModes(e,t,r,n){if(!0===e.pop){const i=e.push;t(n),void 0!==i&&r.call(this,i)}else void 0!==e.push&&r.call(this,e.push)}chopInput(e,t){return e.substring(t)}updateLastIndex(e,t){e.lastIndex=t}updateTokenEndLineColumnLocation(e,t,r,n,i,a,s){let o,l;void 0!==t&&(o=r===s-1,l=o?-1:0,1===n&&!0===o||(e.endLine=i+l,e.endColumn=a-1-l))}computeNewColumn(e,t){return e+t}createOffsetOnlyToken(e,t,r,n){return{image:e,startOffset:t,tokenTypeIdx:r,tokenType:n}}createStartOnlyToken(e,t,r,n,i,a){return{image:e,startOffset:t,startLine:i,startColumn:a,tokenTypeIdx:r,tokenType:n}}createFullToken(e,t,r,n,i,a,s){return{image:e,startOffset:t,endOffset:t+s-1,startLine:i,endLine:i,startColumn:a,endColumn:a+s-1,tokenTypeIdx:r,tokenType:n}}addTokenUsingPush(e,t,r){return e.push(r),t}addTokenUsingMemberAccess(e,t,r){return e[t]=r,++t}handlePayloadNoCustom(e,t){}handlePayloadWithCustom(e,t){null!==t&&(e.payload=t)}matchWithTest(e,t,r){return!0===e.test(t)?t.substring(r,e.lastIndex):null}matchWithExec(e,t){const r=e.exec(t);return null!==r?r[0]:null}};function xy(e){return Ny(e)?e.LABEL:e.name}function Ny(e){return Gh(e.LABEL)&&""!==e.LABEL}wy.SKIPPED="This marks a skipped Token pattern, this means each token identified by it will be consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",wy.NA=/NOT_APPLICABLE/,ze(xy,"tokenLabel"),ze(Ny,"hasTokenLabel");var Iy="categories",_y="label",Py="group",Dy="push_mode",Oy="pop_mode",Ly="longer_alt",My="line_breaks",jy="start_chars_hint";function Fy(e){return zy(e)}function zy(e){const t=e.pattern,r={};if(r.name=e.name,om(t)||(r.PATTERN=t),zh(e,"parent"))throw"The parent property is no longer supported.\nSee: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.";return zh(e,Iy)&&(r.CATEGORIES=e[Iy]),fy([r]),zh(e,_y)&&(r.LABEL=e[_y]),zh(e,Py)&&(r.GROUP=e[Py]),zh(e,Oy)&&(r.POP_MODE=e[Oy]),zh(e,Dy)&&(r.PUSH_MODE=e[Dy]),zh(e,Ly)&&(r.LONGER_ALT=e[Ly]),zh(e,My)&&(r.LINE_BREAKS=e[My]),zh(e,jy)&&(r.START_CHARS_HINT=e[jy]),r}ze(Fy,"createToken"),ze(zy,"createTokenInternal");var Ky=Fy({name:"EOF",pattern:wy.NA});function Gy(e,t,r,n,i,a,s,o){return{image:t,startOffset:r,endOffset:n,startLine:i,endLine:a,startColumn:s,endColumn:o,tokenTypeIdx:e.tokenTypeIdx,tokenType:e}}function qy(e,t){return cy(e,t)}fy([Ky]),ze(Gy,"createTokenInstance"),ze(qy,"tokenMatcher");var Uy={buildMismatchTokenMessage:({expected:e,actual:t,previous:r,ruleName:n})=>`Expecting ${Ny(e)?`--\x3e ${xy(e)} <--`:`token of type --\x3e ${e.name} <--`} but found --\x3e '${t.image}' <--`,buildNotAllInputParsedMessage:({firstRedundant:e,ruleName:t})=>"Redundant input, expecting EOF but found: "+e.image,buildNoViableAltMessage({expectedPathsPerAlt:e,actual:t,previous:r,customUserDescription:n,ruleName:i}){const a="Expecting: ",s="\nbut found: '"+Sh(t).image+"'";if(n)return a+n+s;{const t=Tm(e,(e,t)=>e.concat(t),[]),r=Ih(t,e=>`[${Ih(e,e=>xy(e)).join(", ")}]`);return a+`one of these possible Token sequences:\n${Ih(r,(e,t)=>` ${t+1}. ${e}`).join("\n")}`+s}},buildEarlyExitMessage({expectedIterationPaths:e,actual:t,customUserDescription:r,ruleName:n}){const i="Expecting: ",a="\nbut found: '"+Sh(t).image+"'";if(r)return i+r+a;return i+`expecting at least one iteration which starts with one of these possible Token sequences::\n <${Ih(e,e=>`[${Ih(e,e=>xy(e)).join(",")}]`).join(" ,")}>`+a}};Object.freeze(Uy);var Wy={buildRuleNotFoundError:(e,t)=>"Invalid grammar, reference to a rule which is not defined: ->"+t.nonTerminalName+"<-\ninside top level rule: ->"+e.name+"<-"},By={buildDuplicateFoundError(e,t){function r(e){return e instanceof Vm?e.terminalType.name:e instanceof jm?e.nonTerminalName:""}ze(r,"getExtraProductionArgument");const n=e.name,i=Sh(t),a=i.idx,s=eg(i),o=r(i);let l=`->${s}${a>0?a:""}<- ${o?`with argument: ->${o}<-`:""}\n appears more than once (${t.length} times) in the top level rule: ->${n}<-. \n For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES \n `;return l=l.replace(/[ \t]+/g," "),l=l.replace(/\s\s+/g,"\n"),l},buildNamespaceConflictError:e=>`Namespace conflict found in grammar.\nThe grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${e.name}>.\nTo resolve this make sure each Terminal and Non-Terminal names are unique\nThis is easy to accomplish by using the convention that Terminal names start with an uppercase letter\nand Non-Terminal names start with a lower case letter.`,buildAlternationPrefixAmbiguityError(e){const t=Ih(e.prefixPath,e=>xy(e)).join(", "),r=0===e.alternation.idx?"":e.alternation.idx;return`Ambiguous alternatives: <${e.ambiguityIndices.join(" ,")}> due to common lookahead prefix\nin <OR${r}> inside <${e.topLevelRule.name}> Rule,\n<${t}> may appears as a prefix path in all these alternatives.\nSee: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX\nFor Further details.`},buildAlternationAmbiguityError(e){const t=Ih(e.prefixPath,e=>xy(e)).join(", "),r=0===e.alternation.idx?"":e.alternation.idx;let n=`Ambiguous Alternatives Detected: <${e.ambiguityIndices.join(" ,")}> in <OR${r}> inside <${e.topLevelRule.name}> Rule,\n<${t}> may appears as a prefix path in all these alternatives.\n`;return n+="See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES\nFor Further details.",n},buildEmptyRepetitionError(e){let t=eg(e.repetition);0!==e.repetition.idx&&(t+=e.repetition.idx);return`The repetition <${t}> within Rule <${e.topLevelRule.name}> can never consume any tokens.\nThis could lead to an infinite loop.`},buildTokenNameError:e=>"deprecated",buildEmptyAlternationError:e=>`Ambiguous empty alternative: <${e.emptyChoiceIdx+1}> in <OR${e.alternation.idx}> inside <${e.topLevelRule.name}> Rule.\nOnly the last alternative may be an empty alternative.`,buildTooManyAlternativesError:e=>`An Alternation cannot have more than 256 alternatives:\n<OR${e.alternation.idx}> inside <${e.topLevelRule.name}> Rule.\n has ${e.alternation.definition.length+1} alternatives.`,buildLeftRecursionError(e){const t=e.topLevelRule.name;return`Left Recursion found in grammar.\nrule: <${t}> can be invoked from itself (directly or indirectly)\nwithout consuming any Tokens. The grammar path that causes this is: \n ${`${t} --\x3e ${Ih(e.leftRecursionPath,e=>e.name).concat([t]).join(" --\x3e ")}`}\n To fix this refactor your grammar to remove the left recursion.\nsee: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`},buildInvalidRuleNameError:e=>"deprecated",buildDuplicateRuleNameError(e){let t;t=e.topLevelRule instanceof Fm?e.topLevelRule.name:e.topLevelRule;return`Duplicate definition, rule: ->${t}<- is already defined in the grammar: ->${e.grammarName}<-`}};function Vy(e,t){const r=new Jy(e,t);return r.resolveRefs(),r.errors}ze(Vy,"resolveGrammar");var Hy,Yy,Jy=class extends Jm{static{ze(this,"GastRefResolverVisitor")}constructor(e,t){super(),this.nameToTopRule=e,this.errMsgProvider=t,this.errors=[]}resolveRefs(){uh(Bh(this.nameToTopRule),e=>{this.currTopLevel=e,e.accept(this)})}visitNonTerminal(e){const t=this.nameToTopRule[e.nonTerminalName];if(t)e.referencedRule=t;else{const t=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,e);this.errors.push({message:t,type:HT.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:e.nonTerminalName})}}},Xy=class extends tg{static{ze(this,"AbstractNextPossibleTokensWalker")}constructor(e,t){super(),this.topProd=e,this.path=t,this.possibleTokTypes=[],this.nextProductionName="",this.nextProductionOccurrence=0,this.found=!1,this.isAtEndOfPath=!1}startWalking(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=kp(this.path.ruleStack).reverse(),this.occurrenceStack=kp(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes}walk(e,t=[]){this.found||super.walk(e,t)}walkProdRef(e,t,r){if(e.referencedRule.name===this.nextProductionName&&e.idx===this.nextProductionOccurrence){const n=t.concat(r);this.updateExpectedNext(),this.walk(e.referencedRule,n)}}updateExpectedNext(){tm(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())}},Qy=class extends Xy{static{ze(this,"NextAfterTokenWalker")}constructor(e,t){super(e,t),this.path=t,this.nextTerminalName="",this.nextTerminalOccurrence=0,this.nextTerminalName=this.path.lastTok.name,this.nextTerminalOccurrence=this.path.lastTokOccurrence}walkTerminal(e,t,r){if(this.isAtEndOfPath&&e.terminalType.name===this.nextTerminalName&&e.idx===this.nextTerminalOccurrence&&!this.found){const e=t.concat(r),n=new zm({definition:e});this.possibleTokTypes=ng(n),this.found=!0}}},Zy=class extends tg{static{ze(this,"AbstractNextTerminalAfterProductionWalker")}constructor(e,t){super(),this.topRule=e,this.occurrence=t,this.result={token:void 0,occurrence:void 0,isEndOfRule:void 0}}startWalking(){return this.walk(this.topRule),this.result}},ev=class extends Zy{static{ze(this,"NextTerminalAfterManyWalker")}walkMany(e,t,r){if(e.idx===this.occurrence){const e=Sh(t.concat(r));this.result.isEndOfRule=void 0===e,e instanceof Vm&&(this.result.token=e.terminalType,this.result.occurrence=e.idx)}else super.walkMany(e,t,r)}},tv=class extends Zy{static{ze(this,"NextTerminalAfterManySepWalker")}walkManySep(e,t,r){if(e.idx===this.occurrence){const e=Sh(t.concat(r));this.result.isEndOfRule=void 0===e,e instanceof Vm&&(this.result.token=e.terminalType,this.result.occurrence=e.idx)}else super.walkManySep(e,t,r)}},rv=class extends Zy{static{ze(this,"NextTerminalAfterAtLeastOneWalker")}walkAtLeastOne(e,t,r){if(e.idx===this.occurrence){const e=Sh(t.concat(r));this.result.isEndOfRule=void 0===e,e instanceof Vm&&(this.result.token=e.terminalType,this.result.occurrence=e.idx)}else super.walkAtLeastOne(e,t,r)}},nv=class extends Zy{static{ze(this,"NextTerminalAfterAtLeastOneSepWalker")}walkAtLeastOneSep(e,t,r){if(e.idx===this.occurrence){const e=Sh(t.concat(r));this.result.isEndOfRule=void 0===e,e instanceof Vm&&(this.result.token=e.terminalType,this.result.occurrence=e.idx)}else super.walkAtLeastOneSep(e,t,r)}};function iv(e,t,r=[]){r=kp(r);let n=[],i=0;function a(t){return t.concat(ih(e,i+1))}function s(e){const i=iv(a(e),t,r);return n.concat(i)}for(ze(a,"remainingPathWith"),ze(s,"getAlternativesForProd");r.length<t&&i<e.length;){const t=e[i];if(t instanceof zm)return s(t.definition);if(t instanceof jm)return s(t.definition);if(t instanceof Km)n=s(t.definition);else{if(t instanceof Gm){return s(t.definition.concat([new Um({definition:t.definition})]))}if(t instanceof qm){return s([new zm({definition:t.definition}),new Um({definition:[new Vm({terminalType:t.separator})].concat(t.definition)})])}if(t instanceof Wm){const e=t.definition.concat([new Um({definition:[new Vm({terminalType:t.separator})].concat(t.definition)})]);n=s(e)}else if(t instanceof Um){const e=t.definition.concat([new Um({definition:t.definition})]);n=s(e)}else{if(t instanceof Bm)return uh(t.definition,e=>{!1===tm(e.definition)&&(n=s(e.definition))}),n;if(!(t instanceof Vm))throw Error("non exhaustive match");r.push(t.terminalType)}}i++}return n.push({partialPath:r,suffixDef:ih(e,i)}),n}function av(e,t,r,n){const i="EXIT_NONE_TERMINAL",a=[i],s="EXIT_ALTERNATIVE";let o=!1;const l=t.length,c=l-n-1,u=[],d=[];for(d.push({idx:-1,def:e,ruleStack:[],occurrenceStack:[]});!tm(d);){const e=d.pop();if(e===s){o&&rh(d).idx<=c&&d.pop();continue}const n=e.def,p=e.idx,f=e.ruleStack,h=e.occurrenceStack;if(tm(n))continue;const m=n[0];if(m===i){const e={idx:p,def:ih(n),ruleStack:sh(f),occurrenceStack:sh(h)};d.push(e)}else if(m instanceof Vm)if(p<l-1){const e=p+1;if(r(t[e],m.terminalType)){const t={idx:e,def:ih(n),ruleStack:f,occurrenceStack:h};d.push(t)}}else{if(p!==l-1)throw Error("non exhaustive match");u.push({nextTokenType:m.terminalType,nextTokenOccurrence:m.idx,ruleStack:f,occurrenceStack:h}),o=!0}else if(m instanceof jm){const e=kp(f);e.push(m.nonTerminalName);const t=kp(h);t.push(m.idx);const r={idx:p,def:m.definition.concat(a,ih(n)),ruleStack:e,occurrenceStack:t};d.push(r)}else if(m instanceof Km){const e={idx:p,def:ih(n),ruleStack:f,occurrenceStack:h};d.push(e),d.push(s);const t={idx:p,def:m.definition.concat(ih(n)),ruleStack:f,occurrenceStack:h};d.push(t)}else if(m instanceof Gm){const e=new Um({definition:m.definition,idx:m.idx}),t={idx:p,def:m.definition.concat([e],ih(n)),ruleStack:f,occurrenceStack:h};d.push(t)}else if(m instanceof qm){const e=new Vm({terminalType:m.separator}),t=new Um({definition:[e].concat(m.definition),idx:m.idx}),r={idx:p,def:m.definition.concat([t],ih(n)),ruleStack:f,occurrenceStack:h};d.push(r)}else if(m instanceof Wm){const e={idx:p,def:ih(n),ruleStack:f,occurrenceStack:h};d.push(e),d.push(s);const t=new Vm({terminalType:m.separator}),r=new Um({definition:[t].concat(m.definition),idx:m.idx}),i={idx:p,def:m.definition.concat([r],ih(n)),ruleStack:f,occurrenceStack:h};d.push(i)}else if(m instanceof Um){const e={idx:p,def:ih(n),ruleStack:f,occurrenceStack:h};d.push(e),d.push(s);const t=new Um({definition:m.definition,idx:m.idx}),r={idx:p,def:m.definition.concat([t],ih(n)),ruleStack:f,occurrenceStack:h};d.push(r)}else if(m instanceof Bm)for(let t=m.definition.length-1;t>=0;t--){const e={idx:p,def:m.definition[t].definition.concat(ih(n)),ruleStack:f,occurrenceStack:h};d.push(e),d.push(s)}else if(m instanceof zm)d.push({idx:p,def:m.definition.concat(ih(n)),ruleStack:f,occurrenceStack:h});else{if(!(m instanceof Fm))throw Error("non exhaustive match");d.push(sv(m,p,f,h))}}return u}function sv(e,t,r,n){const i=kp(r);i.push(e.name);const a=kp(n);return a.push(1),{idx:t,def:e.definition,ruleStack:i,occurrenceStack:a}}function ov(e){if(e instanceof Km||"Option"===e)return Hy.OPTION;if(e instanceof Um||"Repetition"===e)return Hy.REPETITION;if(e instanceof Gm||"RepetitionMandatory"===e)return Hy.REPETITION_MANDATORY;if(e instanceof qm||"RepetitionMandatoryWithSeparator"===e)return Hy.REPETITION_MANDATORY_WITH_SEPARATOR;if(e instanceof Wm||"RepetitionWithSeparator"===e)return Hy.REPETITION_WITH_SEPARATOR;if(e instanceof Bm||"Alternation"===e)return Hy.ALTERNATION;throw Error("non exhaustive match")}function lv(e){const{occurrence:t,rule:r,prodType:n,maxLookahead:i}=e,a=ov(n);return a===Hy.ALTERNATION?Tv(t,r,i):Rv(t,r,a,i)}function cv(e,t,r,n,i,a){const s=Tv(e,t,r);return a(s,n,Ev(s)?uy:cy,i)}function uv(e,t,r,n,i,a){const s=Rv(e,t,i,r),o=Ev(s)?uy:cy;return a(s[0],o,n)}function dv(e,t,r,n){const i=e.length,a=gh(e,e=>gh(e,e=>1===e.length));if(t)return function(t){const n=Ih(t,e=>e.GATE);for(let a=0;a<i;a++){const t=e[a],i=t.length,s=n[a];if(void 0===s||!1!==s.call(this))e:for(let e=0;e<i;e++){const n=t[e],i=n.length;for(let e=0;e<i;e++){const t=this.LA(e+1);if(!1===r(t,n[e]))continue e}return a}}};if(a&&!n){const t=Ih(e,e=>Mu(e)),r=Tm(t,(e,t,r)=>(uh(t,t=>{zh(e,t.tokenTypeIdx)||(e[t.tokenTypeIdx]=r),uh(t.categoryMatches,t=>{zh(e,t)||(e[t]=r)})}),e),{});return function(){const e=this.LA(1);return r[e.tokenTypeIdx]}}return function(){for(let t=0;t<i;t++){const n=e[t],i=n.length;e:for(let e=0;e<i;e++){const i=n[e],a=i.length;for(let e=0;e<a;e++){const t=this.LA(e+1);if(!1===r(t,i[e]))continue e}return t}}}}function pv(e,t,r){const n=gh(e,e=>1===e.length),i=e.length;if(n&&!r){const t=Mu(e);if(1===t.length&&tm(t[0].categoryMatches)){const e=t[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===e}}{const e=Tm(t,(e,t,r)=>(e[t.tokenTypeIdx]=!0,uh(t.categoryMatches,t=>{e[t]=!0}),e),[]);return function(){const t=this.LA(1);return!0===e[t.tokenTypeIdx]}}}return function(){e:for(let r=0;r<i;r++){const n=e[r],i=n.length;for(let e=0;e<i;e++){const r=this.LA(e+1);if(!1===t(r,n[e]))continue e}return!0}return!1}}ze(iv,"possiblePathsFrom"),ze(av,"nextPossibleTokensAfter"),ze(sv,"expandTopLevelRule"),(Yy=Hy||(Hy={}))[Yy.OPTION=0]="OPTION",Yy[Yy.REPETITION=1]="REPETITION",Yy[Yy.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",Yy[Yy.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",Yy[Yy.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",Yy[Yy.ALTERNATION=5]="ALTERNATION",ze(ov,"getProdType"),ze(lv,"getLookaheadPaths"),ze(cv,"buildLookaheadFuncForOr"),ze(uv,"buildLookaheadFuncForOptionalProd"),ze(dv,"buildAlternativesLookAheadFunc"),ze(pv,"buildSingleAlternativeLookaheadFunction");var fv=class extends tg{static{ze(this,"RestDefinitionFinderWalker")}constructor(e,t,r){super(),this.topProd=e,this.targetOccurrence=t,this.targetProdType=r}startWalking(){return this.walk(this.topProd),this.restDef}checkIsTarget(e,t,r,n){return e.idx===this.targetOccurrence&&this.targetProdType===t&&(this.restDef=r.concat(n),!0)}walkOption(e,t,r){this.checkIsTarget(e,Hy.OPTION,t,r)||super.walkOption(e,t,r)}walkAtLeastOne(e,t,r){this.checkIsTarget(e,Hy.REPETITION_MANDATORY,t,r)||super.walkOption(e,t,r)}walkAtLeastOneSep(e,t,r){this.checkIsTarget(e,Hy.REPETITION_MANDATORY_WITH_SEPARATOR,t,r)||super.walkOption(e,t,r)}walkMany(e,t,r){this.checkIsTarget(e,Hy.REPETITION,t,r)||super.walkOption(e,t,r)}walkManySep(e,t,r){this.checkIsTarget(e,Hy.REPETITION_WITH_SEPARATOR,t,r)||super.walkOption(e,t,r)}},hv=class extends Jm{static{ze(this,"InsideDefinitionFinderVisitor")}constructor(e,t,r){super(),this.targetOccurrence=e,this.targetProdType=t,this.targetRef=r,this.result=[]}checkIsTarget(e,t){e.idx!==this.targetOccurrence||this.targetProdType!==t||void 0!==this.targetRef&&e!==this.targetRef||(this.result=e.definition)}visitOption(e){this.checkIsTarget(e,Hy.OPTION)}visitRepetition(e){this.checkIsTarget(e,Hy.REPETITION)}visitRepetitionMandatory(e){this.checkIsTarget(e,Hy.REPETITION_MANDATORY)}visitRepetitionMandatoryWithSeparator(e){this.checkIsTarget(e,Hy.REPETITION_MANDATORY_WITH_SEPARATOR)}visitRepetitionWithSeparator(e){this.checkIsTarget(e,Hy.REPETITION_WITH_SEPARATOR)}visitAlternation(e){this.checkIsTarget(e,Hy.ALTERNATION)}};function mv(e){const t=new Array(e);for(let r=0;r<e;r++)t[r]=[];return t}function gv(e){let t=[""];for(let r=0;r<e.length;r++){const n=e[r],i=[];for(let e=0;e<t.length;e++){const r=t[e];i.push(r+"_"+n.tokenTypeIdx);for(let e=0;e<n.categoryMatches.length;e++){const t="_"+n.categoryMatches[e];i.push(r+t)}}t=i}return t}function yv(e,t,r){for(let n=0;n<e.length;n++){if(n===r)continue;const i=e[n];for(let e=0;e<t.length;e++){if(!0===i[t[e]])return!1}}return!0}function vv(e,t){const r=Ih(e,e=>iv([e],1)),n=mv(r.length),i=Ih(r,e=>{const t={};return uh(e,e=>{const r=gv(e.partialPath);uh(r,e=>{t[e]=!0})}),t});let a=r;for(let s=1;s<=t;s++){const e=a;a=mv(e.length);for(let r=0;r<e.length;r++){const o=e[r];for(let e=0;e<o.length;e++){const l=o[e].partialPath,c=o[e].suffixDef,u=gv(l);if(yv(i,u,r)||tm(c)||l.length===t){const e=n[r];if(!1===$v(e,l)){e.push(l);for(let e=0;e<u.length;e++){const t=u[e];i[r][t]=!0}}}else{const e=iv(c,s+1,l);a[r]=a[r].concat(e),uh(e,e=>{const t=gv(e.partialPath);uh(t,e=>{i[r][e]=!0})})}}}}return n}function Tv(e,t,r,n){const i=new hv(e,Hy.ALTERNATION,n);return t.accept(i),vv(i.result,r)}function Rv(e,t,r,n){const i=new hv(e,r);t.accept(i);const a=i.result,s=new fv(t,e,r).startWalking();return vv([new zm({definition:a}),new zm({definition:s})],n)}function $v(e,t){e:for(let r=0;r<e.length;r++){const n=e[r];if(n.length===t.length){for(let e=0;e<n.length;e++){const r=t[e],i=n[e];if(!1===(r===i||void 0!==i.categoryMatchesMap[r.tokenTypeIdx]))continue e}return!0}}return!1}function bv(e,t){return e.length<t.length&&gh(e,(e,r)=>{const n=t[r];return e===n||n.categoryMatchesMap[e.tokenTypeIdx]})}function Ev(e){return gh(e,e=>gh(e,e=>gh(e,e=>tm(e.categoryMatches))))}function Cv(e){const t=e.lookaheadStrategy.validate({rules:e.rules,tokenTypes:e.tokenTypes,grammarName:e.grammarName});return Ih(t,e=>Object.assign({type:HT.CUSTOM_LOOKAHEAD_VALIDATION},e))}function Av(e,t,r,n){const i=Ph(e,e=>kv(e,r)),a=Gv(e,t,r),s=Ph(e,e=>jv(e,r)),o=Ph(e,t=>Nv(t,e,n,r));return i.concat(a,s,o)}function kv(e,t){const r=new xv;e.accept(r);const n=r.allProductions,i=Oh(n,Sv),a=mm(i,e=>e.length>1);return Ih(Bh(a),r=>{const n=Sh(r),i=t.buildDuplicateFoundError(e,r),a=eg(n),s={message:i,type:HT.DUPLICATE_PRODUCTIONS,ruleName:e.name,dslName:a,occurrence:n.idx},o=wv(n);return o&&(s.parameter=o),s})}function Sv(e){return`${eg(e)}_#_${e.idx}_#_${wv(e)}`}function wv(e){return e instanceof Vm?e.terminalType.name:e instanceof jm?e.nonTerminalName:""}ze(mv,"initializeArrayOfArrays"),ze(gv,"pathToHashKeys"),ze(yv,"isUniquePrefixHash"),ze(vv,"lookAheadSequenceFromAlternatives"),ze(Tv,"getLookaheadPathsForOr"),ze(Rv,"getLookaheadPathsForOptionalProd"),ze($v,"containsPath"),ze(bv,"isStrictPrefixOfPath"),ze(Ev,"areTokenCategoriesNotUsed"),ze(Cv,"validateLookahead"),ze(Av,"validateGrammar"),ze(kv,"validateDuplicateProductions"),ze(Sv,"identifyProductionForDuplicates"),ze(wv,"getExtraProductionArgument");var xv=class extends Jm{static{ze(this,"OccurrenceValidationCollector")}constructor(){super(...arguments),this.allProductions=[]}visitNonTerminal(e){this.allProductions.push(e)}visitOption(e){this.allProductions.push(e)}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}visitAlternation(e){this.allProductions.push(e)}visitTerminal(e){this.allProductions.push(e)}};function Nv(e,t,r,n){const i=[];if(Tm(t,(t,r)=>r.name===e.name?t+1:t,0)>1){const t=n.buildDuplicateRuleNameError({topLevelRule:e,grammarName:r});i.push({message:t,type:HT.DUPLICATE_RULE_NAME,ruleName:e.name})}return i}function Iv(e,t,r){const n=[];let i;return Yh(t,e)||(i=`Invalid rule override, rule: ->${e}<- cannot be overridden in the grammar: ->${r}<-as it is not defined in any of the super grammars `,n.push({message:i,type:HT.INVALID_RULE_OVERRIDE,ruleName:e})),n}function _v(e,t,r,n=[]){const i=[],a=Pv(t.definition);if(tm(a))return[];{const t=e.name;Yh(a,e)&&i.push({message:r.buildLeftRecursionError({topLevelRule:e,leftRecursionPath:n}),type:HT.LEFT_RECURSION,ruleName:t});const s=eh(a,n.concat([e])),o=Ph(s,t=>{const i=kp(n);return i.push(t),_v(e,t,r,i)});return i.concat(o)}}function Pv(e){let t=[];if(tm(e))return t;const r=Sh(e);if(r instanceof jm)t.push(r.referencedRule);else if(r instanceof zm||r instanceof Km||r instanceof Gm||r instanceof qm||r instanceof Wm||r instanceof Um)t=t.concat(Pv(r.definition));else if(r instanceof Bm)t=Mu(Ih(r.definition,e=>Pv(e.definition)));else if(!(r instanceof Vm))throw Error("non exhaustive match");const n=Qm(r),i=e.length>1;if(n&&i){const r=ih(e);return t.concat(Pv(r))}return t}ze(Nv,"validateRuleDoesNotAlreadyExist"),ze(Iv,"validateRuleIsOverridden"),ze(_v,"validateNoLeftRecursion"),ze(Pv,"getFirstNoneTerminal");var Dv=class extends Jm{static{ze(this,"OrCollector")}constructor(){super(...arguments),this.alternations=[]}visitAlternation(e){this.alternations.push(e)}};function Ov(e,t){const r=new Dv;e.accept(r);const n=r.alternations;return Ph(n,r=>{const n=sh(r.definition);return Ph(n,(n,i)=>{const a=av([n],[],cy,1);return tm(a)?[{message:t.buildEmptyAlternationError({topLevelRule:e,alternation:r,emptyChoiceIdx:i}),type:HT.NONE_LAST_EMPTY_ALT,ruleName:e.name,occurrence:r.idx,alternative:i+1}]:[]})})}function Lv(e,t,r){const n=new Dv;e.accept(n);let i=n.alternations;i=$m(i,e=>!0===e.ignoreAmbiguities);return Ph(i,n=>{const i=n.idx,a=n.maxLookahead||t,s=Tv(i,e,a,n),o=zv(s,n,e,r),l=Kv(s,n,e,r);return o.concat(l)})}ze(Ov,"validateEmptyOrAlternative"),ze(Lv,"validateAmbiguousAlternationAlternatives");var Mv=class extends Jm{static{ze(this,"RepetitionCollector")}constructor(){super(...arguments),this.allProductions=[]}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}};function jv(e,t){const r=new Dv;e.accept(r);const n=r.alternations;return Ph(n,r=>r.definition.length>255?[{message:t.buildTooManyAlternativesError({topLevelRule:e,alternation:r}),type:HT.TOO_MANY_ALTS,ruleName:e.name,occurrence:r.idx}]:[])}function Fv(e,t,r){const n=[];return uh(e,e=>{const i=new Mv;e.accept(i);const a=i.allProductions;uh(a,i=>{const a=ov(i),s=i.maxLookahead||t,o=Rv(i.idx,e,a,s)[0];if(tm(Mu(o))){const t=r.buildEmptyRepetitionError({topLevelRule:e,repetition:i});n.push({message:t,type:HT.NO_NON_EMPTY_LOOKAHEAD,ruleName:e.name})}})}),n}function zv(e,t,r,n){const i=[],a=Tm(e,(r,n,a)=>(!0===t.definition[a].ignoreAmbiguities||uh(n,n=>{const s=[a];uh(e,(e,r)=>{a!==r&&$v(e,n)&&!0!==t.definition[r].ignoreAmbiguities&&s.push(r)}),s.length>1&&!$v(i,n)&&(i.push(n),r.push({alts:s,path:n}))}),r),[]);return Ih(a,e=>{const i=Ih(e.alts,e=>e+1);return{message:n.buildAlternationAmbiguityError({topLevelRule:r,alternation:t,ambiguityIndices:i,prefixPath:e.path}),type:HT.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:t.idx,alternatives:e.alts}})}function Kv(e,t,r,n){const i=Tm(e,(e,t,r)=>{const n=Ih(t,e=>({idx:r,path:e}));return e.concat(n)},[]);return wp(Ph(i,e=>{if(!0===t.definition[e.idx].ignoreAmbiguities)return[];const a=e.idx,s=e.path,o=Rh(i,e=>!0!==t.definition[e.idx].ignoreAmbiguities&&e.idx<a&&bv(e.path,s));return Ih(o,e=>{const i=[e.idx+1,a+1],s=0===t.idx?"":t.idx;return{message:n.buildAlternationPrefixAmbiguityError({topLevelRule:r,alternation:t,ambiguityIndices:i,prefixPath:e.path}),type:HT.AMBIGUOUS_PREFIX_ALTS,ruleName:r.name,occurrence:s,alternatives:i}})}))}function Gv(e,t,r){const n=[],i=Ih(t,e=>e.name);return uh(e,e=>{const t=e.name;if(Yh(i,t)){const i=r.buildNamespaceConflictError(e);n.push({message:i,type:HT.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:t})}}),n}function qv(e){const t=Vf(e,{errMsgProvider:Wy}),r={};return uh(e.rules,e=>{r[e.name]=e}),Vy(r,t.errMsgProvider)}function Uv(e){return Av((e=Vf(e,{errMsgProvider:By})).rules,e.tokenTypes,e.errMsgProvider,e.grammarName)}ze(jv,"validateTooManyAlts"),ze(Fv,"validateSomeNonEmptyLookaheadPath"),ze(zv,"checkAlternativesAmbiguities"),ze(Kv,"checkPrefixAlternativesAmbiguities"),ze(Gv,"checkTerminalAndNoneTerminalsNameSpace"),ze(qv,"resolveGrammar"),ze(Uv,"validateGrammar");var Wv="MismatchedTokenException",Bv="NoViableAltException",Vv="EarlyExitException",Hv="NotAllInputParsedException",Yv=[Wv,Bv,Vv,Hv];function Jv(e){return Yh(Yv,e.name)}Object.freeze(Yv),ze(Jv,"isRecognitionException");var Xv=class extends Error{static{ze(this,"RecognitionException")}constructor(e,t){super(e),this.token=t,this.resyncedTokens=[],Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}},Qv=class extends Xv{static{ze(this,"MismatchedTokenException")}constructor(e,t,r){super(e,t),this.previousToken=r,this.name=Wv}},Zv=class extends Xv{static{ze(this,"NoViableAltException")}constructor(e,t,r){super(e,t),this.previousToken=r,this.name=Bv}},eT=class extends Xv{static{ze(this,"NotAllInputParsedException")}constructor(e,t){super(e,t),this.name=Hv}},tT=class extends Xv{static{ze(this,"EarlyExitException")}constructor(e,t,r){super(e,t),this.previousToken=r,this.name=Vv}},rT={},nT="InRuleRecoveryException",iT=class extends Error{static{ze(this,"InRuleRecoveryException")}constructor(e){super(e),this.name=nT}},aT=class{static{ze(this,"Recoverable")}initRecoverable(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=zh(e,"recoveryEnabled")?e.recoveryEnabled:JT.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=sT)}getTokenToInsert(e){const t=Gy(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return t.isInsertedInRecovery=!0,t}canTokenTypeBeInsertedInRecovery(e){return!0}canTokenTypeBeDeletedInRecovery(e){return!0}tryInRepetitionRecovery(e,t,r,n){const i=this.findReSyncTokenType(),a=this.exportLexerState(),s=[];let o=!1;const l=this.LA(1);let c=this.LA(1);const u=ze(()=>{const e=this.LA(0),t=this.errorMessageProvider.buildMismatchTokenMessage({expected:n,actual:l,previous:e,ruleName:this.getCurrRuleFullName()}),r=new Qv(t,l,this.LA(0));r.resyncedTokens=sh(s),this.SAVE_ERROR(r)},"generateErrorMessage");for(;!o;){if(this.tokenMatcher(c,n))return void u();if(r.call(this))return u(),void e.apply(this,t);this.tokenMatcher(c,i)?o=!0:(c=this.SKIP_TOKEN(),this.addToResyncTokens(c,s))}this.importLexerState(a)}shouldInRepetitionRecoveryBeTried(e,t,r){return!1!==r&&(!this.tokenMatcher(this.LA(1),e)&&(!this.isBackTracking()&&!this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,t))))}getFollowsForInRuleRecovery(e,t){const r=this.getCurrentGrammarPath(e,t);return this.getNextPossibleTokenTypes(r)}tryInRuleRecovery(e,t){if(this.canRecoverWithSingleTokenInsertion(e,t)){return this.getTokenToInsert(e)}if(this.canRecoverWithSingleTokenDeletion(e)){const e=this.SKIP_TOKEN();return this.consumeToken(),e}throw new iT("sad sad panda")}canPerformInRuleRecovery(e,t){return this.canRecoverWithSingleTokenInsertion(e,t)||this.canRecoverWithSingleTokenDeletion(e)}canRecoverWithSingleTokenInsertion(e,t){if(!this.canTokenTypeBeInsertedInRecovery(e))return!1;if(tm(t))return!1;const r=this.LA(1);return void 0!==Ah(t,e=>this.tokenMatcher(r,e))}canRecoverWithSingleTokenDeletion(e){if(!this.canTokenTypeBeDeletedInRecovery(e))return!1;return this.tokenMatcher(this.LA(2),e)}isInCurrentRuleReSyncSet(e){const t=this.getCurrFollowKey(),r=this.getFollowSetFromFollowKey(t);return Yh(r,e)}findReSyncTokenType(){const e=this.flattenFollowSet();let t=this.LA(1),r=2;for(;;){const n=Ah(e,e=>qy(t,e));if(void 0!==n)return n;t=this.LA(r),r++}}getCurrFollowKey(){if(1===this.RULE_STACK.length)return rT;const e=this.getLastExplicitRuleShortName(),t=this.getLastExplicitRuleOccurrenceIndex(),r=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:t,inRule:this.shortRuleNameToFullName(r)}}buildFullFollowKeyStack(){const e=this.RULE_STACK,t=this.RULE_OCCURRENCE_STACK;return Ih(e,(r,n)=>0===n?rT:{ruleName:this.shortRuleNameToFullName(r),idxInCallingRule:t[n],inRule:this.shortRuleNameToFullName(e[n-1])})}flattenFollowSet(){const e=Ih(this.buildFullFollowKeyStack(),e=>this.getFollowSetFromFollowKey(e));return Mu(e)}getFollowSetFromFollowKey(e){if(e===rT)return[Ky];const t=e.ruleName+e.idxInCallingRule+og+e.inRule;return this.resyncFollows[t]}addToResyncTokens(e,t){return this.tokenMatcher(e,Ky)||t.push(e),t}reSyncTo(e){const t=[];let r=this.LA(1);for(;!1===this.tokenMatcher(r,e);)r=this.SKIP_TOKEN(),this.addToResyncTokens(r,t);return sh(t)}attemptInRepetitionRecovery(e,t,r,n,i,a,s){}getCurrentGrammarPath(e,t){return{ruleStack:this.getHumanReadableRuleStack(),occurrenceStack:kp(this.RULE_OCCURRENCE_STACK),lastTok:e,lastTokOccurrence:t}}getHumanReadableRuleStack(){return Ih(this.RULE_STACK,e=>this.shortRuleNameToFullName(e))}};function sT(e,t,r,n,i,a,s){const o=this.getKeyForAutomaticLookahead(n,i);let l=this.firstAfterRepMap[o];if(void 0===l){const e=this.getCurrRuleFullName();l=new a(this.getGAstProductions()[e],i).startWalking(),this.firstAfterRepMap[o]=l}let c=l.token,u=l.occurrence;const d=l.isEndOfRule;1===this.RULE_STACK.length&&d&&void 0===c&&(c=Ky,u=1),void 0!==c&&void 0!==u&&this.shouldInRepetitionRecoveryBeTried(c,u,s)&&this.tryInRepetitionRecovery(e,t,r,c)}ze(sT,"attemptInRepetitionRecovery");var oT=1024,lT=1280,cT=1536;function uT(e,t,r){return r|t|e}ze(uT,"getKeyForAutomaticLookahead");var dT=class{static{ze(this,"LLkLookaheadStrategy")}constructor(e){var t;this.maxLookahead=null!==(t=null==e?void 0:e.maxLookahead)&&void 0!==t?t:JT.maxLookahead}validate(e){const t=this.validateNoLeftRecursion(e.rules);if(tm(t)){const r=this.validateEmptyOrAlternatives(e.rules),n=this.validateAmbiguousAlternationAlternatives(e.rules,this.maxLookahead),i=this.validateSomeNonEmptyLookaheadPath(e.rules,this.maxLookahead);return[...t,...r,...n,...i]}return t}validateNoLeftRecursion(e){return Ph(e,e=>_v(e,e,By))}validateEmptyOrAlternatives(e){return Ph(e,e=>Ov(e,By))}validateAmbiguousAlternationAlternatives(e,t){return Ph(e,e=>Lv(e,t,By))}validateSomeNonEmptyLookaheadPath(e,t){return Fv(e,t,By)}buildLookaheadForAlternation(e){return cv(e.prodOccurrence,e.rule,e.maxLookahead,e.hasPredicates,e.dynamicTokensEnabled,dv)}buildLookaheadForOptional(e){return uv(e.prodOccurrence,e.rule,e.maxLookahead,e.dynamicTokensEnabled,ov(e.prodType),pv)}},pT=class{static{ze(this,"LooksAhead")}initLooksAhead(e){this.dynamicTokensEnabled=zh(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:JT.dynamicTokensEnabled,this.maxLookahead=zh(e,"maxLookahead")?e.maxLookahead:JT.maxLookahead,this.lookaheadStrategy=zh(e,"lookaheadStrategy")?e.lookaheadStrategy:new dT({maxLookahead:this.maxLookahead}),this.lookAheadFuncsCache=new Map}preComputeLookaheadFunctions(e){uh(e,e=>{this.TRACE_INIT(`${e.name} Rule Lookahead`,()=>{const{alternation:t,repetition:r,option:n,repetitionMandatory:i,repetitionMandatoryWithSeparator:a,repetitionWithSeparator:s}=mT(e);uh(t,t=>{const r=0===t.idx?"":t.idx;this.TRACE_INIT(`${eg(t)}${r}`,()=>{const r=this.lookaheadStrategy.buildLookaheadForAlternation({prodOccurrence:t.idx,rule:e,maxLookahead:t.maxLookahead||this.maxLookahead,hasPredicates:t.hasPredicates,dynamicTokensEnabled:this.dynamicTokensEnabled}),n=uT(this.fullRuleNameToShort[e.name],256,t.idx);this.setLaFuncCache(n,r)})}),uh(r,t=>{this.computeLookaheadFunc(e,t.idx,768,"Repetition",t.maxLookahead,eg(t))}),uh(n,t=>{this.computeLookaheadFunc(e,t.idx,512,"Option",t.maxLookahead,eg(t))}),uh(i,t=>{this.computeLookaheadFunc(e,t.idx,oT,"RepetitionMandatory",t.maxLookahead,eg(t))}),uh(a,t=>{this.computeLookaheadFunc(e,t.idx,cT,"RepetitionMandatoryWithSeparator",t.maxLookahead,eg(t))}),uh(s,t=>{this.computeLookaheadFunc(e,t.idx,lT,"RepetitionWithSeparator",t.maxLookahead,eg(t))})})})}computeLookaheadFunc(e,t,r,n,i,a){this.TRACE_INIT(`${a}${0===t?"":t}`,()=>{const a=this.lookaheadStrategy.buildLookaheadForOptional({prodOccurrence:t,rule:e,maxLookahead:i||this.maxLookahead,dynamicTokensEnabled:this.dynamicTokensEnabled,prodType:n}),s=uT(this.fullRuleNameToShort[e.name],r,t);this.setLaFuncCache(s,a)})}getKeyForAutomaticLookahead(e,t){return uT(this.getLastExplicitRuleShortName(),e,t)}getLaFuncFromCache(e){return this.lookAheadFuncsCache.get(e)}setLaFuncCache(e,t){this.lookAheadFuncsCache.set(e,t)}},fT=class extends Jm{static{ze(this,"DslMethodsCollectorVisitor")}constructor(){super(...arguments),this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}reset(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}visitOption(e){this.dslMethods.option.push(e)}visitRepetitionWithSeparator(e){this.dslMethods.repetitionWithSeparator.push(e)}visitRepetitionMandatory(e){this.dslMethods.repetitionMandatory.push(e)}visitRepetitionMandatoryWithSeparator(e){this.dslMethods.repetitionMandatoryWithSeparator.push(e)}visitRepetition(e){this.dslMethods.repetition.push(e)}visitAlternation(e){this.dslMethods.alternation.push(e)}},hT=new fT;function mT(e){hT.reset(),e.accept(hT);const t=hT.dslMethods;return hT.reset(),t}function gT(e,t){!0===isNaN(e.startOffset)?(e.startOffset=t.startOffset,e.endOffset=t.endOffset):e.endOffset<t.endOffset==!0&&(e.endOffset=t.endOffset)}function yT(e,t){!0===isNaN(e.startOffset)?(e.startOffset=t.startOffset,e.startColumn=t.startColumn,e.startLine=t.startLine,e.endOffset=t.endOffset,e.endColumn=t.endColumn,e.endLine=t.endLine):e.endOffset<t.endOffset==!0&&(e.endOffset=t.endOffset,e.endColumn=t.endColumn,e.endLine=t.endLine)}function vT(e,t,r){void 0===e.children[r]?e.children[r]=[t]:e.children[r].push(t)}function TT(e,t,r){void 0===e.children[t]?e.children[t]=[r]:e.children[t].push(r)}ze(mT,"collectMethods"),ze(gT,"setNodeLocationOnlyOffset"),ze(yT,"setNodeLocationFull"),ze(vT,"addTerminalToCst"),ze(TT,"addNoneTerminalToCst");var RT,$T;function bT(e,t){Object.defineProperty(e,"name",{enumerable:!1,configurable:!0,writable:!1,value:t})}function ET(e,t){const r=sc(e),n=r.length;for(let i=0;i<n;i++){const n=e[r[i]],a=n.length;for(let e=0;e<a;e++){const r=n[e];void 0===r.tokenTypeIdx&&this[r.name](r.children,t)}}}function CT(e,t){const r=ze(function(){},"derivedConstructor");bT(r,e+"BaseSemantics");const n={visit:ze(function(e,t){if(Ss(e)&&(e=e[0]),!om(e))return this[e.name](e.children,t)},"visit"),validateVisitor:ze(function(){const e=kT(this,t);if(!tm(e)){const t=Ih(e,e=>e.msg);throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>:\n\t${t.join("\n\n").replace(/\n/g,"\n\t")}`)}},"validateVisitor")};return r.prototype=n,r.prototype.constructor=r,r._RULE_NAMES=t,r}function AT(e,t,r){const n=ze(function(){},"derivedConstructor");bT(n,e+"BaseSemanticsWithDefaults");const i=Object.create(r.prototype);return uh(t,e=>{i[e]=ET}),n.prototype=i,n.prototype.constructor=n,n}function kT(e,t){return ST(e,t)}function ST(e,t){const r=Rh(t,t=>!1===to(e[t])),n=Ih(r,t=>({msg:`Missing visitor method: <${t}> on ${e.constructor.name} CST Visitor.`,type:RT.MISSING_METHOD,methodName:t}));return wp(n)}ze(bT,"defineNameProp"),ze(ET,"defaultVisit"),ze(CT,"createBaseSemanticVisitorConstructor"),ze(AT,"createBaseVisitorConstructorWithDefaults"),($T=RT||(RT={}))[$T.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",$T[$T.MISSING_METHOD=1]="MISSING_METHOD",ze(kT,"validateVisitor"),ze(ST,"validateMissingCstMethods");var wT=class{static{ze(this,"TreeBuilder")}initTreeBuilder(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=zh(e,"nodeLocationTracking")?e.nodeLocationTracking:JT.nodeLocationTracking,this.outputCst)if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=yT,this.setNodeLocationFromNode=yT,this.cstPostRule=wo,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=wo,this.setNodeLocationFromNode=wo,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=gT,this.setNodeLocationFromNode=gT,this.cstPostRule=wo,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=wo,this.setNodeLocationFromNode=wo,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else{if(!/none/i.test(this.nodeLocationTracking))throw Error(`Invalid <nodeLocationTracking> config option: "${e.nodeLocationTracking}"`);this.setNodeLocationFromToken=wo,this.setNodeLocationFromNode=wo,this.cstPostRule=wo,this.setInitialNodeLocation=wo}else this.cstInvocationStateUpdate=wo,this.cstFinallyStateUpdate=wo,this.cstPostTerminal=wo,this.cstPostNonTerminal=wo,this.cstPostRule=wo}setInitialNodeLocationOnlyOffsetRecovery(e){e.location={startOffset:NaN,endOffset:NaN}}setInitialNodeLocationOnlyOffsetRegular(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}}setInitialNodeLocationFullRecovery(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}}setInitialNodeLocationFullRegular(e){const t=this.LA(1);e.location={startOffset:t.startOffset,startLine:t.startLine,startColumn:t.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}}cstInvocationStateUpdate(e){const t={name:e,children:Object.create(null)};this.setInitialNodeLocation(t),this.CST_STACK.push(t)}cstFinallyStateUpdate(){this.CST_STACK.pop()}cstPostRuleFull(e){const t=this.LA(0),r=e.location;r.startOffset<=t.startOffset==!0?(r.endOffset=t.endOffset,r.endLine=t.endLine,r.endColumn=t.endColumn):(r.startOffset=NaN,r.startLine=NaN,r.startColumn=NaN)}cstPostRuleOnlyOffset(e){const t=this.LA(0),r=e.location;r.startOffset<=t.startOffset==!0?r.endOffset=t.endOffset:r.startOffset=NaN}cstPostTerminal(e,t){const r=this.CST_STACK[this.CST_STACK.length-1];vT(r,t,e),this.setNodeLocationFromToken(r.location,t)}cstPostNonTerminal(e,t){const r=this.CST_STACK[this.CST_STACK.length-1];TT(r,t,e),this.setNodeLocationFromNode(r.location,e.location)}getBaseCstVisitorConstructor(){if(om(this.baseCstVisitorConstructor)){const e=CT(this.className,sc(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor}getBaseCstVisitorConstructorWithDefaults(){if(om(this.baseCstVisitorWithDefaultsConstructor)){const e=AT(this.className,sc(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor}getLastExplicitRuleShortName(){const e=this.RULE_STACK;return e[e.length-1]}getPreviousExplicitRuleShortName(){const e=this.RULE_STACK;return e[e.length-2]}getLastExplicitRuleOccurrenceIndex(){const e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]}},xT=class{static{ze(this,"LexerAdapter")}initLexerAdapter(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1}set input(e){if(!0!==this.selfAnalysisDone)throw Error("Missing <performSelfAnalysis> invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length}get input(){return this.tokVector}SKIP_TOKEN(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):VT}LA(e){const t=this.currIdx+e;return t<0||this.tokVectorLength<=t?VT:this.tokVector[t]}consumeToken(){this.currIdx++}exportLexerState(){return this.currIdx}importLexerState(e){this.currIdx=e}resetLexerState(){this.currIdx=-1}moveToTerminatedState(){this.currIdx=this.tokVector.length-1}getLexerPosition(){return this.exportLexerState()}},NT=class{static{ze(this,"RecognizerApi")}ACTION(e){return e.call(this)}consume(e,t,r){return this.consumeInternal(t,e,r)}subrule(e,t,r){return this.subruleInternal(t,e,r)}option(e,t){return this.optionInternal(t,e)}or(e,t){return this.orInternal(t,e)}many(e,t){return this.manyInternal(e,t)}atLeastOne(e,t){return this.atLeastOneInternal(e,t)}CONSUME(e,t){return this.consumeInternal(e,0,t)}CONSUME1(e,t){return this.consumeInternal(e,1,t)}CONSUME2(e,t){return this.consumeInternal(e,2,t)}CONSUME3(e,t){return this.consumeInternal(e,3,t)}CONSUME4(e,t){return this.consumeInternal(e,4,t)}CONSUME5(e,t){return this.consumeInternal(e,5,t)}CONSUME6(e,t){return this.consumeInternal(e,6,t)}CONSUME7(e,t){return this.consumeInternal(e,7,t)}CONSUME8(e,t){return this.consumeInternal(e,8,t)}CONSUME9(e,t){return this.consumeInternal(e,9,t)}SUBRULE(e,t){return this.subruleInternal(e,0,t)}SUBRULE1(e,t){return this.subruleInternal(e,1,t)}SUBRULE2(e,t){return this.subruleInternal(e,2,t)}SUBRULE3(e,t){return this.subruleInternal(e,3,t)}SUBRULE4(e,t){return this.subruleInternal(e,4,t)}SUBRULE5(e,t){return this.subruleInternal(e,5,t)}SUBRULE6(e,t){return this.subruleInternal(e,6,t)}SUBRULE7(e,t){return this.subruleInternal(e,7,t)}SUBRULE8(e,t){return this.subruleInternal(e,8,t)}SUBRULE9(e,t){return this.subruleInternal(e,9,t)}OPTION(e){return this.optionInternal(e,0)}OPTION1(e){return this.optionInternal(e,1)}OPTION2(e){return this.optionInternal(e,2)}OPTION3(e){return this.optionInternal(e,3)}OPTION4(e){return this.optionInternal(e,4)}OPTION5(e){return this.optionInternal(e,5)}OPTION6(e){return this.optionInternal(e,6)}OPTION7(e){return this.optionInternal(e,7)}OPTION8(e){return this.optionInternal(e,8)}OPTION9(e){return this.optionInternal(e,9)}OR(e){return this.orInternal(e,0)}OR1(e){return this.orInternal(e,1)}OR2(e){return this.orInternal(e,2)}OR3(e){return this.orInternal(e,3)}OR4(e){return this.orInternal(e,4)}OR5(e){return this.orInternal(e,5)}OR6(e){return this.orInternal(e,6)}OR7(e){return this.orInternal(e,7)}OR8(e){return this.orInternal(e,8)}OR9(e){return this.orInternal(e,9)}MANY(e){this.manyInternal(0,e)}MANY1(e){this.manyInternal(1,e)}MANY2(e){this.manyInternal(2,e)}MANY3(e){this.manyInternal(3,e)}MANY4(e){this.manyInternal(4,e)}MANY5(e){this.manyInternal(5,e)}MANY6(e){this.manyInternal(6,e)}MANY7(e){this.manyInternal(7,e)}MANY8(e){this.manyInternal(8,e)}MANY9(e){this.manyInternal(9,e)}MANY_SEP(e){this.manySepFirstInternal(0,e)}MANY_SEP1(e){this.manySepFirstInternal(1,e)}MANY_SEP2(e){this.manySepFirstInternal(2,e)}MANY_SEP3(e){this.manySepFirstInternal(3,e)}MANY_SEP4(e){this.manySepFirstInternal(4,e)}MANY_SEP5(e){this.manySepFirstInternal(5,e)}MANY_SEP6(e){this.manySepFirstInternal(6,e)}MANY_SEP7(e){this.manySepFirstInternal(7,e)}MANY_SEP8(e){this.manySepFirstInternal(8,e)}MANY_SEP9(e){this.manySepFirstInternal(9,e)}AT_LEAST_ONE(e){this.atLeastOneInternal(0,e)}AT_LEAST_ONE1(e){return this.atLeastOneInternal(1,e)}AT_LEAST_ONE2(e){this.atLeastOneInternal(2,e)}AT_LEAST_ONE3(e){this.atLeastOneInternal(3,e)}AT_LEAST_ONE4(e){this.atLeastOneInternal(4,e)}AT_LEAST_ONE5(e){this.atLeastOneInternal(5,e)}AT_LEAST_ONE6(e){this.atLeastOneInternal(6,e)}AT_LEAST_ONE7(e){this.atLeastOneInternal(7,e)}AT_LEAST_ONE8(e){this.atLeastOneInternal(8,e)}AT_LEAST_ONE9(e){this.atLeastOneInternal(9,e)}AT_LEAST_ONE_SEP(e){this.atLeastOneSepFirstInternal(0,e)}AT_LEAST_ONE_SEP1(e){this.atLeastOneSepFirstInternal(1,e)}AT_LEAST_ONE_SEP2(e){this.atLeastOneSepFirstInternal(2,e)}AT_LEAST_ONE_SEP3(e){this.atLeastOneSepFirstInternal(3,e)}AT_LEAST_ONE_SEP4(e){this.atLeastOneSepFirstInternal(4,e)}AT_LEAST_ONE_SEP5(e){this.atLeastOneSepFirstInternal(5,e)}AT_LEAST_ONE_SEP6(e){this.atLeastOneSepFirstInternal(6,e)}AT_LEAST_ONE_SEP7(e){this.atLeastOneSepFirstInternal(7,e)}AT_LEAST_ONE_SEP8(e){this.atLeastOneSepFirstInternal(8,e)}AT_LEAST_ONE_SEP9(e){this.atLeastOneSepFirstInternal(9,e)}RULE(e,t,r=XT){if(Yh(this.definedRulesNames,e)){const t={message:By.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),type:HT.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(t)}this.definedRulesNames.push(e);const n=this.defineRule(e,t,r);return this[e]=n,n}OVERRIDE_RULE(e,t,r=XT){const n=Iv(e,this.definedRulesNames,this.className);this.definitionErrors=this.definitionErrors.concat(n);const i=this.defineRule(e,t,r);return this[e]=i,i}BACKTRACK(e,t){return function(){this.isBackTrackingStack.push(1);const r=this.saveRecogState();try{return e.apply(this,t),!0}catch(n){if(Jv(n))return!1;throw n}finally{this.reloadRecogState(r),this.isBackTrackingStack.pop()}}}getGAstProductions(){return this.gastProductionsCache}getSerializedGastProductions(){return Hm(Bh(this.gastProductionsCache))}},IT=class{static{ze(this,"RecognizerEngine")}initRecognizerEngine(e,t){if(this.className=this.constructor.name,this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=uy,this.subruleIdx=0,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},zh(t,"serializedGrammar"))throw Error("The Parser's configuration can no longer contain a <serializedGrammar> property.\n\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0\n\tFor Further details.");if(Ss(e)){if(tm(e))throw Error("A Token Vocabulary cannot be empty.\n\tNote that the first argument for the parser constructor\n\tis no longer a Token vector (since v4.0).");if("number"==typeof e[0].startOffset)throw Error("The Parser constructor no longer accepts a token vector as the first argument.\n\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0\n\tFor Further details.")}if(Ss(e))this.tokensMap=Tm(e,(e,t)=>(e[t.name]=t,e),{});else if(zh(e,"modes")&&gh(Mu(Bh(e.modes)),Ey)){const t=Mu(Bh(e.modes)),r=Nm(t);this.tokensMap=Tm(r,(e,t)=>(e[t.name]=t,e),{})}else{if(!Fs(e))throw new Error("<tokensDictionary> argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap=kp(e)}this.tokensMap.EOF=Ky;const r=zh(e,"modes")?Mu(Bh(e.modes)):Bh(e),n=gh(r,e=>tm(e.categoryMatches));this.tokenMatcher=n?uy:cy,fy(Bh(this.tokensMap))}defineRule(e,t,r){if(this.selfAnalysisDone)throw Error(`Grammar rule <${e}> may not be defined after the 'performSelfAnalysis' method has been called'\nMake sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);const n=zh(r,"resyncEnabled")?r.resyncEnabled:XT.resyncEnabled,i=zh(r,"recoveryValueFunc")?r.recoveryValueFunc:XT.recoveryValueFunc,a=this.ruleShortNameIdx<<12;let s;this.ruleShortNameIdx++,this.shortRuleNameToFull[a]=e,this.fullRuleNameToShort[e]=a,s=!0===this.outputCst?ze(function(...r){try{this.ruleInvocationStateUpdate(a,e,this.subruleIdx),t.apply(this,r);const n=this.CST_STACK[this.CST_STACK.length-1];return this.cstPostRule(n),n}catch(s){return this.invokeRuleCatch(s,n,i)}finally{this.ruleFinallyStateUpdate()}},"invokeRuleWithTry"):ze(function(...r){try{return this.ruleInvocationStateUpdate(a,e,this.subruleIdx),t.apply(this,r)}catch(s){return this.invokeRuleCatch(s,n,i)}finally{this.ruleFinallyStateUpdate()}},"invokeRuleWithTryCst");return Object.assign(s,{ruleName:e,originalGrammarAction:t})}invokeRuleCatch(e,t,r){const n=1===this.RULE_STACK.length,i=t&&!this.isBackTracking()&&this.recoveryEnabled;if(Jv(e)){const t=e;if(i){const n=this.findReSyncTokenType();if(this.isInCurrentRuleReSyncSet(n)){if(t.resyncedTokens=this.reSyncTo(n),this.outputCst){const e=this.CST_STACK[this.CST_STACK.length-1];return e.recoveredNode=!0,e}return r(e)}if(this.outputCst){const e=this.CST_STACK[this.CST_STACK.length-1];e.recoveredNode=!0,t.partialCstResult=e}throw t}if(n)return this.moveToTerminatedState(),r(e);throw t}throw e}optionInternal(e,t){const r=this.getKeyForAutomaticLookahead(512,t);return this.optionInternalLogic(e,t,r)}optionInternalLogic(e,t,r){let n,i=this.getLaFuncFromCache(r);if("function"!=typeof e){n=e.DEF;const t=e.GATE;if(void 0!==t){const e=i;i=ze(()=>t.call(this)&&e.call(this),"lookAheadFunc")}}else n=e;if(!0===i.call(this))return n.call(this)}atLeastOneInternal(e,t){const r=this.getKeyForAutomaticLookahead(oT,e);return this.atLeastOneInternalLogic(e,t,r)}atLeastOneInternalLogic(e,t,r){let n,i=this.getLaFuncFromCache(r);if("function"!=typeof t){n=t.DEF;const e=t.GATE;if(void 0!==e){const t=i;i=ze(()=>e.call(this)&&t.call(this),"lookAheadFunc")}}else n=t;if(!0!==i.call(this))throw this.raiseEarlyExitException(e,Hy.REPETITION_MANDATORY,t.ERR_MSG);{let e=this.doSingleRepetition(n);for(;!0===i.call(this)&&!0===e;)e=this.doSingleRepetition(n)}this.attemptInRepetitionRecovery(this.atLeastOneInternal,[e,t],i,oT,e,rv)}atLeastOneSepFirstInternal(e,t){const r=this.getKeyForAutomaticLookahead(cT,e);this.atLeastOneSepFirstInternalLogic(e,t,r)}atLeastOneSepFirstInternalLogic(e,t,r){const n=t.DEF,i=t.SEP;if(!0!==this.getLaFuncFromCache(r).call(this))throw this.raiseEarlyExitException(e,Hy.REPETITION_MANDATORY_WITH_SEPARATOR,t.ERR_MSG);{n.call(this);const t=ze(()=>this.tokenMatcher(this.LA(1),i),"separatorLookAheadFunc");for(;!0===this.tokenMatcher(this.LA(1),i);)this.CONSUME(i),n.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,i,t,n,nv],t,cT,e,nv)}}manyInternal(e,t){const r=this.getKeyForAutomaticLookahead(768,e);return this.manyInternalLogic(e,t,r)}manyInternalLogic(e,t,r){let n,i=this.getLaFuncFromCache(r);if("function"!=typeof t){n=t.DEF;const e=t.GATE;if(void 0!==e){const t=i;i=ze(()=>e.call(this)&&t.call(this),"lookaheadFunction")}}else n=t;let a=!0;for(;!0===i.call(this)&&!0===a;)a=this.doSingleRepetition(n);this.attemptInRepetitionRecovery(this.manyInternal,[e,t],i,768,e,ev,a)}manySepFirstInternal(e,t){const r=this.getKeyForAutomaticLookahead(lT,e);this.manySepFirstInternalLogic(e,t,r)}manySepFirstInternalLogic(e,t,r){const n=t.DEF,i=t.SEP;if(!0===this.getLaFuncFromCache(r).call(this)){n.call(this);const t=ze(()=>this.tokenMatcher(this.LA(1),i),"separatorLookAheadFunc");for(;!0===this.tokenMatcher(this.LA(1),i);)this.CONSUME(i),n.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,i,t,n,tv],t,lT,e,tv)}}repetitionSepSecondInternal(e,t,r,n,i){for(;r();)this.CONSUME(t),n.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,t,r,n,i],r,cT,e,i)}doSingleRepetition(e){const t=this.getLexerPosition();e.call(this);return this.getLexerPosition()>t}orInternal(e,t){const r=this.getKeyForAutomaticLookahead(256,t),n=Ss(e)?e:e.DEF,i=this.getLaFuncFromCache(r).call(this,n);if(void 0!==i){return n[i].ALT.call(this)}this.raiseNoAltException(t,e.ERR_MSG)}ruleFinallyStateUpdate(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),0===this.RULE_STACK.length&&!1===this.isAtEndOfInput()){const e=this.LA(1),t=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new eT(t,e))}}subruleInternal(e,t,r){let n;try{const i=void 0!==r?r.ARGS:void 0;return this.subruleIdx=t,n=e.apply(this,i),this.cstPostNonTerminal(n,void 0!==r&&void 0!==r.LABEL?r.LABEL:e.ruleName),n}catch(i){throw this.subruleInternalError(i,r,e.ruleName)}}subruleInternalError(e,t,r){throw Jv(e)&&void 0!==e.partialCstResult&&(this.cstPostNonTerminal(e.partialCstResult,void 0!==t&&void 0!==t.LABEL?t.LABEL:r),delete e.partialCstResult),e}consumeInternal(e,t,r){let n;try{const t=this.LA(1);!0===this.tokenMatcher(t,e)?(this.consumeToken(),n=t):this.consumeInternalError(e,t,r)}catch(i){n=this.consumeInternalRecovery(e,t,i)}return this.cstPostTerminal(void 0!==r&&void 0!==r.LABEL?r.LABEL:e.name,n),n}consumeInternalError(e,t,r){let n;const i=this.LA(0);throw n=void 0!==r&&r.ERR_MSG?r.ERR_MSG:this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:t,previous:i,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new Qv(n,t,i))}consumeInternalRecovery(e,t,r){if(!this.recoveryEnabled||"MismatchedTokenException"!==r.name||this.isBackTracking())throw r;{const i=this.getFollowsForInRuleRecovery(e,t);try{return this.tryInRuleRecovery(e,i)}catch(n){throw n.name===nT?r:n}}}saveRecogState(){const e=this.errors,t=kp(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:t,CST_STACK:this.CST_STACK}}reloadRecogState(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK}ruleInvocationStateUpdate(e,t,r){this.RULE_OCCURRENCE_STACK.push(r),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(t)}isBackTracking(){return 0!==this.isBackTrackingStack.length}getCurrRuleFullName(){const e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]}shortRuleNameToFullName(e){return this.shortRuleNameToFull[e]}isAtEndOfInput(){return this.tokenMatcher(this.LA(1),Ky)}reset(){this.resetLexerState(),this.subruleIdx=0,this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]}},_T=class{static{ze(this,"ErrorHandler")}initErrorHandler(e){this._errors=[],this.errorMessageProvider=zh(e,"errorMessageProvider")?e.errorMessageProvider:JT.errorMessageProvider}SAVE_ERROR(e){if(Jv(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:kp(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")}get errors(){return kp(this._errors)}set errors(e){this._errors=e}raiseEarlyExitException(e,t,r){const n=this.getCurrRuleFullName(),i=Rv(e,this.getGAstProductions()[n],t,this.maxLookahead)[0],a=[];for(let o=1;o<=this.maxLookahead;o++)a.push(this.LA(o));const s=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:i,actual:a,previous:this.LA(0),customUserDescription:r,ruleName:n});throw this.SAVE_ERROR(new tT(s,this.LA(1),this.LA(0)))}raiseNoAltException(e,t){const r=this.getCurrRuleFullName(),n=Tv(e,this.getGAstProductions()[r],this.maxLookahead),i=[];for(let o=1;o<=this.maxLookahead;o++)i.push(this.LA(o));const a=this.LA(0),s=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:n,actual:i,previous:a,customUserDescription:t,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new Zv(s,this.LA(1),a))}},PT=class{static{ze(this,"ContentAssist")}initContentAssist(){}computeContentAssist(e,t){const r=this.gastProductionsCache[e];if(om(r))throw Error(`Rule ->${e}<- does not exist in this grammar.`);return av([r],t,this.tokenMatcher,this.maxLookahead)}getNextPossibleTokenTypes(e){const t=Sh(e.ruleStack),r=this.getGAstProductions()[t];return new Qy(r,e).startWalking()}},DT={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(DT);var OT=!0,LT=Math.pow(2,8)-1,MT=Fy({name:"RECORDING_PHASE_TOKEN",pattern:wy.NA});fy([MT]);var jT=Gy(MT,"This IToken indicates the Parser is in Recording Phase\n\tSee: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details",-1,-1,-1,-1,-1,-1);Object.freeze(jT);var FT={name:"This CSTNode indicates the Parser is in Recording Phase\n\tSee: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details",children:{}},zT=class{static{ze(this,"GastRecorder")}initGastRecorder(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1}enableRecording(){this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",()=>{for(let e=0;e<10;e++){const t=e>0?e:"";this[`CONSUME${t}`]=function(t,r){return this.consumeInternalRecord(t,e,r)},this[`SUBRULE${t}`]=function(t,r){return this.subruleInternalRecord(t,e,r)},this[`OPTION${t}`]=function(t){return this.optionInternalRecord(t,e)},this[`OR${t}`]=function(t){return this.orInternalRecord(t,e)},this[`MANY${t}`]=function(t){this.manyInternalRecord(e,t)},this[`MANY_SEP${t}`]=function(t){this.manySepFirstInternalRecord(e,t)},this[`AT_LEAST_ONE${t}`]=function(t){this.atLeastOneInternalRecord(e,t)},this[`AT_LEAST_ONE_SEP${t}`]=function(t){this.atLeastOneSepFirstInternalRecord(e,t)}}this.consume=function(e,t,r){return this.consumeInternalRecord(t,e,r)},this.subrule=function(e,t,r){return this.subruleInternalRecord(t,e,r)},this.option=function(e,t){return this.optionInternalRecord(t,e)},this.or=function(e,t){return this.orInternalRecord(t,e)},this.many=function(e,t){this.manyInternalRecord(e,t)},this.atLeastOne=function(e,t){this.atLeastOneInternalRecord(e,t)},this.ACTION=this.ACTION_RECORD,this.BACKTRACK=this.BACKTRACK_RECORD,this.LA=this.LA_RECORD})}disableRecording(){this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",()=>{const e=this;for(let t=0;t<10;t++){const r=t>0?t:"";delete e[`CONSUME${r}`],delete e[`SUBRULE${r}`],delete e[`OPTION${r}`],delete e[`OR${r}`],delete e[`MANY${r}`],delete e[`MANY_SEP${r}`],delete e[`AT_LEAST_ONE${r}`],delete e[`AT_LEAST_ONE_SEP${r}`]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})}ACTION_RECORD(e){}BACKTRACK_RECORD(e,t){return()=>!0}LA_RECORD(e){return VT}topLevelRuleRecord(e,t){try{const r=new Fm({definition:[],name:e});return r.name=e,this.recordingProdStack.push(r),t.call(this),this.recordingProdStack.pop(),r}catch(r){if(!0!==r.KNOWN_RECORDER_ERROR)try{r.message=r.message+'\n\t This error was thrown during the "grammar recording phase" For more info see:\n\thttps://chevrotain.io/docs/guide/internals.html#grammar-recording'}catch(n){throw r}throw r}}optionInternalRecord(e,t){return KT.call(this,Km,e,t)}atLeastOneInternalRecord(e,t){KT.call(this,Gm,t,e)}atLeastOneSepFirstInternalRecord(e,t){KT.call(this,qm,t,e,OT)}manyInternalRecord(e,t){KT.call(this,Um,t,e)}manySepFirstInternalRecord(e,t){KT.call(this,Wm,t,e,OT)}orInternalRecord(e,t){return GT.call(this,e,t)}subruleInternalRecord(e,t,r){if(UT(t),!e||!1===zh(e,"ruleName")){const r=new Error(`<SUBRULE${qT(t)}> argument is invalid expecting a Parser method reference but got: <${JSON.stringify(e)}>\n inside top level rule: <${this.recordingProdStack[0].name}>`);throw r.KNOWN_RECORDER_ERROR=!0,r}const n=rh(this.recordingProdStack),i=e.ruleName,a=new jm({idx:t,nonTerminalName:i,label:null==r?void 0:r.LABEL,referencedRule:void 0});return n.definition.push(a),this.outputCst?FT:DT}consumeInternalRecord(e,t,r){if(UT(t),!Ty(e)){const r=new Error(`<CONSUME${qT(t)}> argument is invalid expecting a TokenType reference but got: <${JSON.stringify(e)}>\n inside top level rule: <${this.recordingProdStack[0].name}>`);throw r.KNOWN_RECORDER_ERROR=!0,r}const n=rh(this.recordingProdStack),i=new Vm({idx:t,terminalType:e,label:null==r?void 0:r.LABEL});return n.definition.push(i),jT}};function KT(e,t,r,n=!1){UT(r);const i=rh(this.recordingProdStack),a=to(t)?t:t.DEF,s=new e({definition:[],idx:r});return n&&(s.separator=t.SEP),zh(t,"MAX_LOOKAHEAD")&&(s.maxLookahead=t.MAX_LOOKAHEAD),this.recordingProdStack.push(s),a.call(this),i.definition.push(s),this.recordingProdStack.pop(),DT}function GT(e,t){UT(t);const r=rh(this.recordingProdStack),n=!1===Ss(e),i=!1===n?e:e.DEF,a=new Bm({definition:[],idx:t,ignoreAmbiguities:n&&!0===e.IGNORE_AMBIGUITIES});zh(e,"MAX_LOOKAHEAD")&&(a.maxLookahead=e.MAX_LOOKAHEAD);const s=Am(i,e=>to(e.GATE));return a.hasPredicates=s,r.definition.push(a),uh(i,e=>{const t=new zm({definition:[]});a.definition.push(t),zh(e,"IGNORE_AMBIGUITIES")?t.ignoreAmbiguities=e.IGNORE_AMBIGUITIES:zh(e,"GATE")&&(t.ignoreAmbiguities=!0),this.recordingProdStack.push(t),e.ALT.call(this),this.recordingProdStack.pop()}),DT}function qT(e){return 0===e?"":`${e}`}function UT(e){if(e<0||e>LT){const t=new Error(`Invalid DSL Method idx value: <${e}>\n\tIdx value must be a none negative value smaller than ${LT+1}`);throw t.KNOWN_RECORDER_ERROR=!0,t}}ze(KT,"recordProd"),ze(GT,"recordOrProd"),ze(qT,"getIdxSuffix"),ze(UT,"assertMethodIdxIsValid");var WT=class{static{ze(this,"PerformanceTracer")}initPerformanceTracer(e){if(zh(e,"traceInitPerf")){const t=e.traceInitPerf,r="number"==typeof t;this.traceInitMaxIdent=r?t:1/0,this.traceInitPerf=r?t>0:t}else this.traceInitMaxIdent=0,this.traceInitPerf=JT.traceInitPerf;this.traceInitIndent=-1}TRACE_INIT(e,t){if(!0===this.traceInitPerf){this.traceInitIndent++;const r=new Array(this.traceInitIndent+1).join("\t");this.traceInitIndent<this.traceInitMaxIdent&&console.log(`${r}--\x3e <${e}>`);const{time:n,value:i}=Pm(t),a=n>10?console.warn:console.log;return this.traceInitIndent<this.traceInitMaxIdent&&a(`${r}<-- <${e}> time: ${n}ms`),this.traceInitIndent--,i}return t()}};function BT(e,t){t.forEach(t=>{const r=t.prototype;Object.getOwnPropertyNames(r).forEach(n=>{if("constructor"===n)return;const i=Object.getOwnPropertyDescriptor(r,n);i&&(i.get||i.set)?Object.defineProperty(e.prototype,n,i):e.prototype[n]=t.prototype[n]})})}ze(BT,"applyMixins");var VT=Gy(Ky,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(VT);var HT,YT,JT=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:Uy,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),XT=Object.freeze({recoveryValueFunc:ze(()=>{},"recoveryValueFunc"),resyncEnabled:!0});function QT(e=void 0){return function(){return e}}(YT=HT||(HT={}))[YT.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",YT[YT.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",YT[YT.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",YT[YT.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",YT[YT.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",YT[YT.LEFT_RECURSION=5]="LEFT_RECURSION",YT[YT.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",YT[YT.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",YT[YT.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",YT[YT.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",YT[YT.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",YT[YT.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",YT[YT.TOO_MANY_ALTS=12]="TOO_MANY_ALTS",YT[YT.CUSTOM_LOOKAHEAD_VALIDATION=13]="CUSTOM_LOOKAHEAD_VALIDATION",ze(QT,"EMPTY_ALT");var ZT=class e{static{ze(this,"Parser")}static performSelfAnalysis(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated.\t\nUse the **instance** method with the same name instead.")}performSelfAnalysis(){this.TRACE_INIT("performSelfAnalysis",()=>{let t;this.selfAnalysisDone=!0;const r=this.className;this.TRACE_INIT("toFastProps",()=>{Dm(this)}),this.TRACE_INIT("Grammar Recording",()=>{try{this.enableRecording(),uh(this.definedRulesNames,e=>{const t=this[e].originalGrammarAction;let r;this.TRACE_INIT(`${e} Rule`,()=>{r=this.topLevelRuleRecord(e,t)}),this.gastProductionsCache[e]=r})}finally{this.disableRecording()}});let n=[];if(this.TRACE_INIT("Grammar Resolving",()=>{n=qv({rules:Bh(this.gastProductionsCache)}),this.definitionErrors=this.definitionErrors.concat(n)}),this.TRACE_INIT("Grammar Validations",()=>{if(tm(n)&&!1===this.skipValidations){const e=Uv({rules:Bh(this.gastProductionsCache),tokenTypes:Bh(this.tokensMap),errMsgProvider:By,grammarName:r}),t=Cv({lookaheadStrategy:this.lookaheadStrategy,rules:Bh(this.gastProductionsCache),tokenTypes:Bh(this.tokensMap),grammarName:r});this.definitionErrors=this.definitionErrors.concat(e,t)}}),tm(this.definitionErrors)&&(this.recoveryEnabled&&this.TRACE_INIT("computeAllProdsFollows",()=>{const e=cg(Bh(this.gastProductionsCache));this.resyncFollows=e}),this.TRACE_INIT("ComputeLookaheadFunctions",()=>{var e,t;null===(t=(e=this.lookaheadStrategy).initialize)||void 0===t||t.call(e,{rules:Bh(this.gastProductionsCache)}),this.preComputeLookaheadFunctions(Bh(this.gastProductionsCache))})),!e.DEFER_DEFINITION_ERRORS_HANDLING&&!tm(this.definitionErrors))throw t=Ih(this.definitionErrors,e=>e.message),new Error(`Parser Definition Errors detected:\n ${t.join("\n-------------------------------\n")}`)})}constructor(e,t){this.definitionErrors=[],this.selfAnalysisDone=!1;const r=this;if(r.initErrorHandler(t),r.initLexerAdapter(),r.initLooksAhead(t),r.initRecognizerEngine(e,t),r.initRecoverable(t),r.initTreeBuilder(t),r.initContentAssist(),r.initGastRecorder(t),r.initPerformanceTracer(t),zh(t,"ignoredIssues"))throw new Error("The <ignoredIssues> IParserConfig property has been deprecated.\n\tPlease use the <IGNORE_AMBIGUITIES> flag on the relevant DSL method instead.\n\tSee: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES\n\tFor further details.");this.skipValidations=zh(t,"skipValidations")?t.skipValidations:JT.skipValidations}};ZT.DEFER_DEFINITION_ERRORS_HANDLING=!1,BT(ZT,[aT,pT,wT,xT,IT,NT,_T,PT,zT,WT]);var eR=class extends ZT{static{ze(this,"EmbeddedActionsParser")}constructor(e,t=JT){const r=kp(t);r.outputCst=!1,super(e,r)}};function tR(e,t){for(var r=-1,n=null==e?0:e.length,i=Array(n);++r<n;)i[r]=t(e[r],r,e);return i}ze(tR,"arrayMap");var rR=tR;function nR(){this.__data__=[],this.size=0}ze(nR,"listCacheClear");var iR=nR;function aR(e,t){return e===t||e!=e&&t!=t}ze(aR,"eq");var sR=aR;function oR(e,t){for(var r=e.length;r--;)if(sR(e[r][0],t))return r;return-1}ze(oR,"assocIndexOf");var lR=oR,cR=Array.prototype.splice;function uR(e){var t=this.__data__,r=lR(t,e);return!(r<0)&&(r==t.length-1?t.pop():cR.call(t,r,1),--this.size,!0)}ze(uR,"listCacheDelete");var dR=uR;function pR(e){var t=this.__data__,r=lR(t,e);return r<0?void 0:t[r][1]}ze(pR,"listCacheGet");var fR=pR;function hR(e){return lR(this.__data__,e)>-1}ze(hR,"listCacheHas");var mR=hR;function gR(e,t){var r=this.__data__,n=lR(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}ze(gR,"listCacheSet");var yR=gR;function vR(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}ze(vR,"ListCache"),vR.prototype.clear=iR,vR.prototype.delete=dR,vR.prototype.get=fR,vR.prototype.has=mR,vR.prototype.set=yR;var TR=vR;function RR(){this.__data__=new TR,this.size=0}ze(RR,"stackClear");var $R=RR;function bR(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}ze(bR,"stackDelete");var ER=bR;function CR(e){return this.__data__.get(e)}ze(CR,"stackGet");var AR=CR;function kR(e){return this.__data__.has(e)}ze(kR,"stackHas");var SR=kR,wR="object"==typeof globalThis&&globalThis&&globalThis.Object===Object&&globalThis,xR="object"==typeof self&&self&&self.Object===Object&&self,NR=wR||xR||Function("return this")(),IR=NR.Symbol,_R=Object.prototype,PR=_R.hasOwnProperty,DR=_R.toString,OR=IR?IR.toStringTag:void 0;function LR(e){var t=PR.call(e,OR),r=e[OR];try{e[OR]=void 0;var n=!0}catch(a){}var i=DR.call(e);return n&&(t?e[OR]=r:delete e[OR]),i}ze(LR,"getRawTag");var MR=LR,jR=Object.prototype.toString;function FR(e){return jR.call(e)}ze(FR,"objectToString");var zR=FR,KR=IR?IR.toStringTag:void 0;function GR(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":KR&&KR in Object(e)?MR(e):zR(e)}ze(GR,"baseGetTag");var qR=GR;function UR(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}ze(UR,"isObject");var WR=UR;function BR(e){if(!WR(e))return!1;var t=qR(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}ze(BR,"isFunction");var VR=BR,HR=NR["__core-js_shared__"],YR=function(){var e=/[^.]+$/.exec(HR&&HR.keys&&HR.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function JR(e){return!!YR&&YR in e}ze(JR,"isMasked");var XR=JR,QR=Function.prototype.toString;function ZR(e){if(null!=e){try{return QR.call(e)}catch(t){}try{return e+""}catch(t){}}return""}ze(ZR,"toSource");var e$=ZR,t$=/^\[object .+?Constructor\]$/,r$=Function.prototype,n$=Object.prototype,i$=r$.toString,a$=n$.hasOwnProperty,s$=RegExp("^"+i$.call(a$).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function o$(e){return!(!WR(e)||XR(e))&&(VR(e)?s$:t$).test(e$(e))}ze(o$,"baseIsNative");var l$=o$;function c$(e,t){return null==e?void 0:e[t]}ze(c$,"getValue");var u$=c$;function d$(e,t){var r=u$(e,t);return l$(r)?r:void 0}ze(d$,"getNative");var p$=d$,f$=p$(NR,"Map"),h$=p$(Object,"create");function m$(){this.__data__=h$?h$(null):{},this.size=0}ze(m$,"hashClear");var g$=m$;function y$(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}ze(y$,"hashDelete");var v$=y$,T$=Object.prototype.hasOwnProperty;function R$(e){var t=this.__data__;if(h$){var r=t[e];return"__lodash_hash_undefined__"===r?void 0:r}return T$.call(t,e)?t[e]:void 0}ze(R$,"hashGet");var $$=R$,b$=Object.prototype.hasOwnProperty;function E$(e){var t=this.__data__;return h$?void 0!==t[e]:b$.call(t,e)}ze(E$,"hashHas");var C$=E$;function A$(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=h$&&void 0===t?"__lodash_hash_undefined__":t,this}ze(A$,"hashSet");var k$=A$;function S$(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}ze(S$,"Hash"),S$.prototype.clear=g$,S$.prototype.delete=v$,S$.prototype.get=$$,S$.prototype.has=C$,S$.prototype.set=k$;var w$=S$;function x$(){this.size=0,this.__data__={hash:new w$,map:new(f$||TR),string:new w$}}ze(x$,"mapCacheClear");var N$=x$;function I$(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}ze(I$,"isKeyable");var _$=I$;function P$(e,t){var r=e.__data__;return _$(t)?r["string"==typeof t?"string":"hash"]:r.map}ze(P$,"getMapData");var D$=P$;function O$(e){var t=D$(this,e).delete(e);return this.size-=t?1:0,t}ze(O$,"mapCacheDelete");var L$=O$;function M$(e){return D$(this,e).get(e)}ze(M$,"mapCacheGet");var j$=M$;function F$(e){return D$(this,e).has(e)}ze(F$,"mapCacheHas");var z$=F$;function K$(e,t){var r=D$(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}ze(K$,"mapCacheSet");var G$=K$;function q$(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}ze(q$,"MapCache"),q$.prototype.clear=N$,q$.prototype.delete=L$,q$.prototype.get=j$,q$.prototype.has=z$,q$.prototype.set=G$;var U$=q$;function W$(e,t){var r=this.__data__;if(r instanceof TR){var n=r.__data__;if(!f$||n.length<199)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new U$(n)}return r.set(e,t),this.size=r.size,this}ze(W$,"stackSet");var B$=W$;function V$(e){var t=this.__data__=new TR(e);this.size=t.size}ze(V$,"Stack"),V$.prototype.clear=$R,V$.prototype.delete=ER,V$.prototype.get=AR,V$.prototype.has=SR,V$.prototype.set=B$;var H$=V$;function Y$(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}ze(Y$,"setCacheAdd");var J$=Y$;function X$(e){return this.__data__.has(e)}ze(X$,"setCacheHas");var Q$=X$;function Z$(e){var t=-1,r=null==e?0:e.length;for(this.__data__=new U$;++t<r;)this.add(e[t])}ze(Z$,"SetCache"),Z$.prototype.add=Z$.prototype.push=J$,Z$.prototype.has=Q$;var eb=Z$;function tb(e,t){for(var r=-1,n=null==e?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}ze(tb,"arraySome");var rb=tb;function nb(e,t){return e.has(t)}ze(nb,"cacheHas");var ib=nb;function ab(e,t,r,n,i,a){var s=1&r,o=e.length,l=t.length;if(o!=l&&!(s&&l>o))return!1;var c=a.get(e),u=a.get(t);if(c&&u)return c==t&&u==e;var d=-1,p=!0,f=2&r?new eb:void 0;for(a.set(e,t),a.set(t,e);++d<o;){var h=e[d],m=t[d];if(n)var g=s?n(m,h,d,t,e,a):n(h,m,d,e,t,a);if(void 0!==g){if(g)continue;p=!1;break}if(f){if(!rb(t,function(e,t){if(!ib(f,t)&&(h===e||i(h,e,r,n,a)))return f.push(t)})){p=!1;break}}else if(h!==m&&!i(h,m,r,n,a)){p=!1;break}}return a.delete(e),a.delete(t),p}ze(ab,"equalArrays");var sb=ab,ob=NR.Uint8Array;function lb(e){var t=-1,r=Array(e.size);return e.forEach(function(e,n){r[++t]=[n,e]}),r}ze(lb,"mapToArray");var cb=lb;function ub(e){var t=-1,r=Array(e.size);return e.forEach(function(e){r[++t]=e}),r}ze(ub,"setToArray");var db=ub,pb=IR?IR.prototype:void 0,fb=pb?pb.valueOf:void 0;function hb(e,t,r,n,i,a,s){switch(r){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!a(new ob(e),new ob(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return sR(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var o=cb;case"[object Set]":var l=1&n;if(o||(o=db),e.size!=t.size&&!l)return!1;var c=s.get(e);if(c)return c==t;n|=2,s.set(e,t);var u=sb(o(e),o(t),n,i,a,s);return s.delete(e),u;case"[object Symbol]":if(fb)return fb.call(e)==fb.call(t)}return!1}ze(hb,"equalByTag");var mb=hb;function gb(e,t){for(var r=-1,n=t.length,i=e.length;++r<n;)e[i+r]=t[r];return e}ze(gb,"arrayPush");var yb=gb,vb=Array.isArray;function Tb(e,t,r){var n=t(e);return vb(e)?n:yb(n,r(e))}ze(Tb,"baseGetAllKeys");var Rb=Tb;function $b(e,t){for(var r=-1,n=null==e?0:e.length,i=0,a=[];++r<n;){var s=e[r];t(s,r,e)&&(a[i++]=s)}return a}ze($b,"arrayFilter");var bb=$b;function Eb(){return[]}ze(Eb,"stubArray");var Cb=Eb,Ab=Object.prototype.propertyIsEnumerable,kb=Object.getOwnPropertySymbols,Sb=kb?function(e){return null==e?[]:(e=Object(e),bb(kb(e),function(t){return Ab.call(e,t)}))}:Cb;function wb(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}ze(wb,"baseTimes");var xb=wb;function Nb(e){return null!=e&&"object"==typeof e}ze(Nb,"isObjectLike");var Ib=Nb;function _b(e){return Ib(e)&&"[object Arguments]"==qR(e)}ze(_b,"baseIsArguments");var Pb=_b,Db=Object.prototype,Ob=Db.hasOwnProperty,Lb=Db.propertyIsEnumerable,Mb=Pb(function(){return arguments}())?Pb:function(e){return Ib(e)&&Ob.call(e,"callee")&&!Lb.call(e,"callee")},jb=Mb;function Fb(){return!1}ze(Fb,"stubFalse");var zb=Fb,Kb="object"==typeof exports&&exports&&!exports.nodeType&&exports,Gb=Kb&&"object"==typeof module&&module&&!module.nodeType&&module,qb=Gb&&Gb.exports===Kb?NR.Buffer:void 0,Ub=(qb?qb.isBuffer:void 0)||zb,Wb=/^(?:0|[1-9]\d*)$/;function Bb(e,t){var r=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==r||"symbol"!=r&&Wb.test(e))&&e>-1&&e%1==0&&e<t}ze(Bb,"isIndex");var Vb=Bb;function Hb(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}ze(Hb,"isLength");var Yb=Hb,Jb={};function Xb(e){return Ib(e)&&Yb(e.length)&&!!Jb[qR(e)]}Jb["[object Float32Array]"]=Jb["[object Float64Array]"]=Jb["[object Int8Array]"]=Jb["[object Int16Array]"]=Jb["[object Int32Array]"]=Jb["[object Uint8Array]"]=Jb["[object Uint8ClampedArray]"]=Jb["[object Uint16Array]"]=Jb["[object Uint32Array]"]=!0,Jb["[object Arguments]"]=Jb["[object Array]"]=Jb["[object ArrayBuffer]"]=Jb["[object Boolean]"]=Jb["[object DataView]"]=Jb["[object Date]"]=Jb["[object Error]"]=Jb["[object Function]"]=Jb["[object Map]"]=Jb["[object Number]"]=Jb["[object Object]"]=Jb["[object RegExp]"]=Jb["[object Set]"]=Jb["[object String]"]=Jb["[object WeakMap]"]=!1,ze(Xb,"baseIsTypedArray");var Qb=Xb;function Zb(e){return function(t){return e(t)}}ze(Zb,"baseUnary");var eE=Zb,tE="object"==typeof exports&&exports&&!exports.nodeType&&exports,rE=tE&&"object"==typeof module&&module&&!module.nodeType&&module,nE=rE&&rE.exports===tE&&wR.process,iE=function(){try{var e=rE&&rE.require&&rE.require("util").types;return e||nE&&nE.binding&&nE.binding("util")}catch(t){}}(),aE=iE&&iE.isTypedArray,sE=aE?eE(aE):Qb,oE=Object.prototype.hasOwnProperty;function lE(e,t){var r=vb(e),n=!r&&jb(e),i=!r&&!n&&Ub(e),a=!r&&!n&&!i&&sE(e),s=r||n||i||a,o=s?xb(e.length,String):[],l=o.length;for(var c in e)!t&&!oE.call(e,c)||s&&("length"==c||i&&("offset"==c||"parent"==c)||a&&("buffer"==c||"byteLength"==c||"byteOffset"==c)||Vb(c,l))||o.push(c);return o}ze(lE,"arrayLikeKeys");var cE=lE,uE=Object.prototype;function dE(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||uE)}ze(dE,"isPrototype");var pE=dE;function fE(e,t){return function(r){return e(t(r))}}ze(fE,"overArg");var hE=fE(Object.keys,Object),mE=Object.prototype.hasOwnProperty;function gE(e){if(!pE(e))return hE(e);var t=[];for(var r in Object(e))mE.call(e,r)&&"constructor"!=r&&t.push(r);return t}ze(gE,"baseKeys");var yE=gE;function vE(e){return null!=e&&Yb(e.length)&&!VR(e)}ze(vE,"isArrayLike");var TE=vE;function RE(e){return TE(e)?cE(e):yE(e)}ze(RE,"keys");var $E=RE;function bE(e){return Rb(e,$E,Sb)}ze(bE,"getAllKeys");var EE=bE,CE=Object.prototype.hasOwnProperty;function AE(e,t,r,n,i,a){var s=1&r,o=EE(e),l=o.length;if(l!=EE(t).length&&!s)return!1;for(var c=l;c--;){var u=o[c];if(!(s?u in t:CE.call(t,u)))return!1}var d=a.get(e),p=a.get(t);if(d&&p)return d==t&&p==e;var f=!0;a.set(e,t),a.set(t,e);for(var h=s;++c<l;){var m=e[u=o[c]],g=t[u];if(n)var y=s?n(g,m,u,t,e,a):n(m,g,u,e,t,a);if(!(void 0===y?m===g||i(m,g,r,n,a):y)){f=!1;break}h||(h="constructor"==u)}if(f&&!h){var v=e.constructor,T=t.constructor;v==T||!("constructor"in e)||!("constructor"in t)||"function"==typeof v&&v instanceof v&&"function"==typeof T&&T instanceof T||(f=!1)}return a.delete(e),a.delete(t),f}ze(AE,"equalObjects");var kE=AE,SE=p$(NR,"DataView"),wE=p$(NR,"Promise"),xE=p$(NR,"Set"),NE=p$(NR,"WeakMap"),IE="[object Map]",_E="[object Promise]",PE="[object Set]",DE="[object WeakMap]",OE="[object DataView]",LE=e$(SE),ME=e$(f$),jE=e$(wE),FE=e$(xE),zE=e$(NE),KE=qR;(SE&&KE(new SE(new ArrayBuffer(1)))!=OE||f$&&KE(new f$)!=IE||wE&&KE(wE.resolve())!=_E||xE&&KE(new xE)!=PE||NE&&KE(new NE)!=DE)&&(KE=ze(function(e){var t=qR(e),r="[object Object]"==t?e.constructor:void 0,n=r?e$(r):"";if(n)switch(n){case LE:return OE;case ME:return IE;case jE:return _E;case FE:return PE;case zE:return DE}return t},"getTag"));var GE=KE,qE="[object Arguments]",UE="[object Array]",WE="[object Object]",BE=Object.prototype.hasOwnProperty;function VE(e,t,r,n,i,a){var s=vb(e),o=vb(t),l=s?UE:GE(e),c=o?UE:GE(t),u=(l=l==qE?WE:l)==WE,d=(c=c==qE?WE:c)==WE,p=l==c;if(p&&Ub(e)){if(!Ub(t))return!1;s=!0,u=!1}if(p&&!u)return a||(a=new H$),s||sE(e)?sb(e,t,r,n,i,a):mb(e,t,l,r,n,i,a);if(!(1&r)){var f=u&&BE.call(e,"__wrapped__"),h=d&&BE.call(t,"__wrapped__");if(f||h){var m=f?e.value():e,g=h?t.value():t;return a||(a=new H$),i(m,g,r,n,a)}}return!!p&&(a||(a=new H$),kE(e,t,r,n,i,a))}ze(VE,"baseIsEqualDeep");var HE=VE;function YE(e,t,r,n,i){return e===t||(null==e||null==t||!Ib(e)&&!Ib(t)?e!=e&&t!=t:HE(e,t,r,n,YE,i))}ze(YE,"baseIsEqual");var JE=YE;function XE(e,t,r,n){var i=r.length,a=i,s=!n;if(null==e)return!a;for(e=Object(e);i--;){var o=r[i];if(s&&o[2]?o[1]!==e[o[0]]:!(o[0]in e))return!1}for(;++i<a;){var l=(o=r[i])[0],c=e[l],u=o[1];if(s&&o[2]){if(void 0===c&&!(l in e))return!1}else{var d=new H$;if(n)var p=n(c,u,l,e,t,d);if(!(void 0===p?JE(u,c,3,n,d):p))return!1}}return!0}ze(XE,"baseIsMatch");var QE=XE;function ZE(e){return e==e&&!WR(e)}ze(ZE,"isStrictComparable");var eC=ZE;function tC(e){for(var t=$E(e),r=t.length;r--;){var n=t[r],i=e[n];t[r]=[n,i,eC(i)]}return t}ze(tC,"getMatchData");var rC=tC;function nC(e,t){return function(r){return null!=r&&(r[e]===t&&(void 0!==t||e in Object(r)))}}ze(nC,"matchesStrictComparable");var iC=nC;function aC(e){var t=rC(e);return 1==t.length&&t[0][2]?iC(t[0][0],t[0][1]):function(r){return r===e||QE(r,e,t)}}ze(aC,"baseMatches");var sC=aC;function oC(e){return"symbol"==typeof e||Ib(e)&&"[object Symbol]"==qR(e)}ze(oC,"isSymbol");var lC=oC,cC=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,uC=/^\w*$/;function dC(e,t){if(vb(e))return!1;var r=typeof e;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=e&&!lC(e))||(uC.test(e)||!cC.test(e)||null!=t&&e in Object(t))}ze(dC,"isKey");var pC=dC;function fC(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var r=ze(function(){var n=arguments,i=t?t.apply(this,n):n[0],a=r.cache;if(a.has(i))return a.get(i);var s=e.apply(this,n);return r.cache=a.set(i,s)||a,s},"memoized");return r.cache=new(fC.Cache||U$),r}ze(fC,"memoize"),fC.Cache=U$;var hC=fC;function mC(e){var t=hC(e,function(e){return 500===r.size&&r.clear(),e}),r=t.cache;return t}ze(mC,"memoizeCapped");var gC=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,yC=/\\(\\)?/g,vC=mC(function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(gC,function(e,r,n,i){t.push(n?i.replace(yC,"$1"):r||e)}),t}),TC=IR?IR.prototype:void 0,RC=TC?TC.toString:void 0;function $C(e){if("string"==typeof e)return e;if(vb(e))return rR(e,$C)+"";if(lC(e))return RC?RC.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}ze($C,"baseToString");var bC=$C;function EC(e){return null==e?"":bC(e)}ze(EC,"toString");var CC=EC;function AC(e,t){return vb(e)?e:pC(e,t)?[e]:vC(CC(e))}ze(AC,"castPath");var kC=AC;function SC(e){if("string"==typeof e||lC(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}ze(SC,"toKey");var wC=SC;function xC(e,t){for(var r=0,n=(t=kC(t,e)).length;null!=e&&r<n;)e=e[wC(t[r++])];return r&&r==n?e:void 0}ze(xC,"baseGet");var NC=xC;function IC(e,t,r){var n=null==e?void 0:NC(e,t);return void 0===n?r:n}ze(IC,"get");var _C=IC;function PC(e,t){return null!=e&&t in Object(e)}ze(PC,"baseHasIn");var DC=PC;function OC(e,t,r){for(var n=-1,i=(t=kC(t,e)).length,a=!1;++n<i;){var s=wC(t[n]);if(!(a=null!=e&&r(e,s)))break;e=e[s]}return a||++n!=i?a:!!(i=null==e?0:e.length)&&Yb(i)&&Vb(s,i)&&(vb(e)||jb(e))}ze(OC,"hasPath");var LC=OC;function MC(e,t){return null!=e&&LC(e,t,DC)}ze(MC,"hasIn");var jC=MC;function FC(e,t){return pC(e)&&eC(t)?iC(wC(e),t):function(r){var n=_C(r,e);return void 0===n&&n===t?jC(r,e):JE(t,n,3)}}ze(FC,"baseMatchesProperty");var zC=FC;function KC(e){return e}ze(KC,"identity");var GC=KC;function qC(e){return function(t){return null==t?void 0:t[e]}}ze(qC,"baseProperty");var UC=qC;function WC(e){return function(t){return NC(t,e)}}ze(WC,"basePropertyDeep");var BC=WC;function VC(e){return pC(e)?UC(wC(e)):BC(e)}ze(VC,"property");var HC=VC;function YC(e){return"function"==typeof e?e:null==e?GC:"object"==typeof e?vb(e)?zC(e[0],e[1]):sC(e):HC(e)}ze(YC,"baseIteratee");var JC=YC;function XC(e){return function(t,r,n){for(var i=-1,a=Object(t),s=n(t),o=s.length;o--;){var l=s[e?o:++i];if(!1===r(a[l],l,a))break}return t}}ze(XC,"createBaseFor");var QC=XC();function ZC(e,t){return e&&QC(e,t,$E)}ze(ZC,"baseForOwn");var eA=ZC;function tA(e,t){return function(r,n){if(null==r)return r;if(!TE(r))return e(r,n);for(var i=r.length,a=t?i:-1,s=Object(r);(t?a--:++a<i)&&!1!==n(s[a],a,s););return r}}ze(tA,"createBaseEach");var rA=tA(eA);function nA(e,t){var r=-1,n=TE(e)?Array(e.length):[];return rA(e,function(e,i,a){n[++r]=t(e,i,a)}),n}ze(nA,"baseMap");var iA=nA;function aA(e,t){return(vb(e)?rR:iA)(e,JC(t,3))}ze(aA,"map");var sA=aA;function oA(e,t){var r=[];return rA(e,function(e,n,i){t(e,n,i)&&r.push(e)}),r}ze(oA,"baseFilter");var lA=oA;function cA(e,t){return(vb(e)?bb:lA)(e,JC(t,3))}ze(cA,"filter");var uA=cA;function dA(e,t,r){return`${e.name}_${t}_${r}`}ze(dA,"buildATNKey");var pA=class{static{ze(this,"AbstractTransition")}constructor(e){this.target=e}isEpsilon(){return!1}},fA=class extends pA{static{ze(this,"AtomTransition")}constructor(e,t){super(e),this.tokenType=t}},hA=class extends pA{static{ze(this,"EpsilonTransition")}constructor(e){super(e)}isEpsilon(){return!0}},mA=class extends pA{static{ze(this,"RuleTransition")}constructor(e,t,r){super(e),this.rule=t,this.followState=r}isEpsilon(){return!0}};function gA(e){const t={decisionMap:{},decisionStates:[],ruleToStartState:new Map,ruleToStopState:new Map,states:[]};yA(t,e);const r=e.length;for(let n=0;n<r;n++){const r=e[n],i=AA(t,r,r);void 0!==i&&OA(t,r,i)}return t}function yA(e,t){const r=t.length;for(let n=0;n<r;n++){const r=t[n],i=MA(e,r,void 0,{type:2}),a=MA(e,r,void 0,{type:7});i.stop=a,e.ruleToStartState.set(r,i),e.ruleToStopState.set(r,a)}}function vA(e,t,r){return r instanceof Vm?PA(e,t,r.terminalType,r):r instanceof jm?DA(e,t,r):r instanceof Bm?EA(e,t,r):r instanceof Km?CA(e,t,r):r instanceof Um?TA(e,t,r):r instanceof Wm?RA(e,t,r):r instanceof Gm?$A(e,t,r):r instanceof qm?bA(e,t,r):AA(e,t,r)}function TA(e,t,r){const n=MA(e,t,r,{type:5});xA(e,n);return SA(e,t,r,NA(e,t,n,r,AA(e,t,r)))}function RA(e,t,r){const n=MA(e,t,r,{type:5});xA(e,n);return SA(e,t,r,NA(e,t,n,r,AA(e,t,r)),PA(e,t,r.separator,r))}function $A(e,t,r){const n=MA(e,t,r,{type:4});xA(e,n);return kA(e,t,r,NA(e,t,n,r,AA(e,t,r)))}function bA(e,t,r){const n=MA(e,t,r,{type:4});xA(e,n);return kA(e,t,r,NA(e,t,n,r,AA(e,t,r)),PA(e,t,r.separator,r))}function EA(e,t,r){const n=MA(e,t,r,{type:1});xA(e,n);const i=sA(r.definition,r=>vA(e,t,r));return NA(e,t,n,r,...i)}function CA(e,t,r){const n=MA(e,t,r,{type:1});xA(e,n);return wA(e,t,r,NA(e,t,n,r,AA(e,t,r)))}function AA(e,t,r){const n=uA(sA(r.definition,r=>vA(e,t,r)),e=>void 0!==e);return 1===n.length?n[0]:0===n.length?void 0:_A(e,n)}function kA(e,t,r,n,i){const a=n.left,s=n.right,o=MA(e,t,r,{type:11});xA(e,o);const l=MA(e,t,r,{type:12});return a.loopback=o,l.loopback=o,e.decisionMap[dA(t,i?"RepetitionMandatoryWithSeparator":"RepetitionMandatory",r.idx)]=o,LA(s,o),void 0===i?(LA(o,a),LA(o,l)):(LA(o,l),LA(o,i.left),LA(i.right,a)),{left:a,right:l}}function SA(e,t,r,n,i){const a=n.left,s=n.right,o=MA(e,t,r,{type:10});xA(e,o);const l=MA(e,t,r,{type:12}),c=MA(e,t,r,{type:9});return o.loopback=c,l.loopback=c,LA(o,a),LA(o,l),LA(s,c),void 0!==i?(LA(c,l),LA(c,i.left),LA(i.right,a)):LA(c,o),e.decisionMap[dA(t,i?"RepetitionWithSeparator":"Repetition",r.idx)]=o,{left:o,right:l}}function wA(e,t,r,n){const i=n.left;return LA(i,n.right),e.decisionMap[dA(t,"Option",r.idx)]=i,n}function xA(e,t){return e.decisionStates.push(t),t.decision=e.decisionStates.length-1,t.decision}function NA(e,t,r,n,...i){const a=MA(e,t,n,{type:8,start:r});r.end=a;for(const o of i)void 0!==o?(LA(r,o.left),LA(o.right,a)):LA(r,a);const s={left:r,right:a};return e.decisionMap[dA(t,IA(n),n.idx)]=r,s}function IA(e){if(e instanceof Bm)return"Alternation";if(e instanceof Km)return"Option";if(e instanceof Um)return"Repetition";if(e instanceof Wm)return"RepetitionWithSeparator";if(e instanceof Gm)return"RepetitionMandatory";if(e instanceof qm)return"RepetitionMandatoryWithSeparator";throw new Error("Invalid production type encountered")}function _A(e,t){const r=t.length;for(let a=0;a<r-1;a++){const r=t[a];let n;1===r.left.transitions.length&&(n=r.left.transitions[0]);const i=n instanceof mA,s=n,o=t[a+1].left;1===r.left.type&&1===r.right.type&&void 0!==n&&(i&&s.followState===r.right||n.target===r.right)?(i?s.followState=o:n.target=o,FA(e,r.right)):LA(r.right,o)}const n=t[0],i=t[r-1];return{left:n.left,right:i.right}}function PA(e,t,r,n){const i=MA(e,t,n,{type:1}),a=MA(e,t,n,{type:1});return jA(i,new fA(a,r)),{left:i,right:a}}function DA(e,t,r){const n=r.referencedRule,i=e.ruleToStartState.get(n),a=MA(e,t,r,{type:1}),s=MA(e,t,r,{type:1});return jA(a,new mA(i,n,s)),{left:a,right:s}}function OA(e,t,r){const n=e.ruleToStartState.get(t);LA(n,r.left);const i=e.ruleToStopState.get(t);LA(r.right,i);return{left:n,right:i}}function LA(e,t){jA(e,new hA(t))}function MA(e,t,r,n){const i=Object.assign({atn:e,production:r,epsilonOnlyTransitions:!1,rule:t,transitions:[],nextTokenWithinRule:[],stateNumber:e.states.length},n);return e.states.push(i),i}function jA(e,t){0===e.transitions.length&&(e.epsilonOnlyTransitions=t.isEpsilon()),e.transitions.push(t)}function FA(e,t){e.states.splice(e.states.indexOf(t),1)}ze(gA,"createATN"),ze(yA,"createRuleStartAndStopATNStates"),ze(vA,"atom"),ze(TA,"repetition"),ze(RA,"repetitionSep"),ze($A,"repetitionMandatory"),ze(bA,"repetitionMandatorySep"),ze(EA,"alternation"),ze(CA,"option"),ze(AA,"block"),ze(kA,"plus"),ze(SA,"star"),ze(wA,"optional"),ze(xA,"defineDecisionState"),ze(NA,"makeAlts"),ze(IA,"getProdType"),ze(_A,"makeBlock"),ze(PA,"tokenRef"),ze(DA,"ruleRef"),ze(OA,"buildRuleHandle"),ze(LA,"epsilon"),ze(MA,"newState"),ze(jA,"addTransition"),ze(FA,"removeState");var zA={},KA=class{static{ze(this,"ATNConfigSet")}constructor(){this.map={},this.configs=[]}get size(){return this.configs.length}finalize(){this.map={}}add(e){const t=GA(e);t in this.map||(this.map[t]=this.configs.length,this.configs.push(e))}get elements(){return this.configs}get alts(){return sA(this.configs,e=>e.alt)}get key(){let e="";for(const t in this.map)e+=t+":";return e}};function GA(e,t=!0){return`${t?`a${e.alt}`:""}s${e.state.stateNumber}:${e.stack.map(e=>e.stateNumber.toString()).join("_")}`}function qA(e,t,r){for(var n=-1,i=e.length;++n<i;){var a=e[n],s=t(a);if(null!=s&&(void 0===o?s==s&&!lC(s):r(s,o)))var o=s,l=a}return l}ze(GA,"getATNConfigKey"),ze(qA,"baseExtremum");var UA=qA;function WA(e,t){return e<t}ze(WA,"baseLt");var BA=WA;function VA(e){return e&&e.length?UA(e,GC,BA):void 0}ze(VA,"min");var HA=VA,YA=IR?IR.isConcatSpreadable:void 0;function JA(e){return vb(e)||jb(e)||!!(YA&&e&&e[YA])}ze(JA,"isFlattenable");var XA=JA;function QA(e,t,r,n,i){var a=-1,s=e.length;for(r||(r=XA),i||(i=[]);++a<s;){var o=e[a];t>0&&r(o)?t>1?QA(o,t-1,r,n,i):yb(i,o):n||(i[i.length]=o)}return i}ze(QA,"baseFlatten");var ZA=QA;function ek(e,t){return ZA(sA(e,t),1)}ze(ek,"flatMap");var tk=ek;function rk(e,t,r,n){for(var i=e.length,a=r+(n?1:-1);n?a--:++a<i;)if(t(e[a],a,e))return a;return-1}ze(rk,"baseFindIndex");var nk=rk;function ik(e){return e!=e}ze(ik,"baseIsNaN");var ak=ik;function sk(e,t,r){for(var n=r-1,i=e.length;++n<i;)if(e[n]===t)return n;return-1}ze(sk,"strictIndexOf");var ok=sk;function lk(e,t,r){return t==t?ok(e,t,r):nk(e,ak,r)}ze(lk,"baseIndexOf");var ck=lk;function uk(e,t){return!!(null==e?0:e.length)&&ck(e,t,0)>-1}ze(uk,"arrayIncludes");var dk=uk;function pk(e,t,r){for(var n=-1,i=null==e?0:e.length;++n<i;)if(r(t,e[n]))return!0;return!1}ze(pk,"arrayIncludesWith");var fk=pk;function hk(){}ze(hk,"noop");var mk=hk,gk=xE&&1/db(new xE([,-0]))[1]==1/0?function(e){return new xE(e)}:mk;function yk(e,t,r){var n=-1,i=dk,a=e.length,s=!0,o=[],l=o;if(r)s=!1,i=fk;else if(a>=200){var c=t?null:gk(e);if(c)return db(c);s=!1,i=ib,l=new eb}else l=t?[]:o;e:for(;++n<a;){var u=e[n],d=t?t(u):u;if(u=r||0!==u?u:0,s&&d==d){for(var p=l.length;p--;)if(l[p]===d)continue e;t&&l.push(d),o.push(u)}else i(l,d,r)||(l!==o&&l.push(d),o.push(u))}return o}ze(yk,"baseUniq");var vk=yk;function Tk(e,t){return e&&e.length?vk(e,JC(t,2)):[]}ze(Tk,"uniqBy");var Rk=Tk;function $k(e){return(null==e?0:e.length)?ZA(e,1):[]}ze($k,"flatten");var bk=$k;function Ek(e,t){for(var r=-1,n=null==e?0:e.length;++r<n&&!1!==t(e[r],r,e););return e}ze(Ek,"arrayEach");var Ck=Ek;function Ak(e){return"function"==typeof e?e:GC}ze(Ak,"castFunction");var kk=Ak;function Sk(e,t){return(vb(e)?Ck:rA)(e,kk(t))}ze(Sk,"forEach");var wk=Sk,xk=Object.prototype.hasOwnProperty;function Nk(e){if(null==e)return!0;if(TE(e)&&(vb(e)||"string"==typeof e||"function"==typeof e.splice||Ub(e)||sE(e)||jb(e)))return!e.length;var t=GE(e);if("[object Map]"==t||"[object Set]"==t)return!e.size;if(pE(e))return!yE(e).length;for(var r in e)if(xk.call(e,r))return!1;return!0}ze(Nk,"isEmpty");var Ik=Nk;function _k(e,t,r,n){var i=-1,a=null==e?0:e.length;for(n&&a&&(r=e[++i]);++i<a;)r=t(r,e[i],i,e);return r}ze(_k,"arrayReduce");var Pk=_k;function Dk(e,t,r,n,i){return i(e,function(e,i,a){r=n?(n=!1,e):t(r,e,i,a)}),r}ze(Dk,"baseReduce");var Ok=Dk;function Lk(e,t,r){var n=vb(e)?Pk:Ok,i=arguments.length<3;return n(e,JC(t,4),r,i,rA)}ze(Lk,"reduce");var Mk=Lk;function jk(e,t){const r={};return n=>{const i=n.toString();let a=r[i];return void 0!==a||(a={atnStartState:e,decision:t,states:{}},r[i]=a),a}}ze(jk,"createDFACache");var Fk=class{static{ze(this,"PredicateSet")}constructor(){this.predicates=[]}is(e){return e>=this.predicates.length||this.predicates[e]}set(e,t){this.predicates[e]=t}toString(){let e="";const t=this.predicates.length;for(let r=0;r<t;r++)e+=!0===this.predicates[r]?"1":"0";return e}},zk=new Fk,Kk=class extends dT{static{ze(this,"LLStarLookaheadStrategy")}constructor(e){var t;super(),this.logging=null!==(t=null==e?void 0:e.logging)&&void 0!==t?t:e=>console.log(e)}initialize(e){this.atn=gA(e.rules),this.dfas=qk(this.atn)}validateAmbiguousAlternationAlternatives(){return[]}validateEmptyOrAlternatives(){return[]}buildLookaheadForAlternation(e){const{prodOccurrence:t,rule:r,hasPredicates:n,dynamicTokensEnabled:i}=e,a=this.dfas,s=this.logging,o=dA(r,"Alternation",t),l=this.atn.decisionMap[o].decision,c=sA(lv({maxLookahead:1,occurrence:t,prodType:"Alternation",rule:r}),e=>sA(e,e=>e[0]));if(Gk(c,!1)&&!i){const e=Mk(c,(e,t,r)=>(wk(t,t=>{t&&(e[t.tokenTypeIdx]=r,wk(t.categoryMatches,t=>{e[t]=r}))}),e),{});return n?function(t){var r;const n=this.LA(1),i=e[n.tokenTypeIdx];if(void 0!==t&&void 0!==i){const e=null===(r=t[i])||void 0===r?void 0:r.GATE;if(void 0!==e&&!1===e.call(this))return}return i}:function(){const t=this.LA(1);return e[t.tokenTypeIdx]}}return n?function(e){const t=new Fk,r=void 0===e?0:e.length;for(let i=0;i<r;i++){const r=null==e?void 0:e[i].GATE;t.set(i,void 0===r||r.call(this))}const n=Uk.call(this,a,l,t,s);return"number"==typeof n?n:void 0}:function(){const e=Uk.call(this,a,l,zk,s);return"number"==typeof e?e:void 0}}buildLookaheadForOptional(e){const{prodOccurrence:t,rule:r,prodType:n,dynamicTokensEnabled:i}=e,a=this.dfas,s=this.logging,o=dA(r,n,t),l=this.atn.decisionMap[o].decision,c=sA(lv({maxLookahead:1,occurrence:t,prodType:n,rule:r}),e=>sA(e,e=>e[0]));if(Gk(c)&&c[0][0]&&!i){const e=c[0],t=bk(e);if(1===t.length&&Ik(t[0].categoryMatches)){const e=t[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===e}}{const e=Mk(t,(e,t)=>(void 0!==t&&(e[t.tokenTypeIdx]=!0,wk(t.categoryMatches,t=>{e[t]=!0})),e),{});return function(){const t=this.LA(1);return!0===e[t.tokenTypeIdx]}}}return function(){const e=Uk.call(this,a,l,zk,s);return"object"!=typeof e&&0===e}}};function Gk(e,t=!0){const r=new Set;for(const n of e){const e=new Set;for(const i of n){if(void 0===i){if(t)break;return!1}const n=[i.tokenTypeIdx].concat(i.categoryMatches);for(const t of n)if(r.has(t)){if(!e.has(t))return!1}else r.add(t),e.add(t)}}return!0}function qk(e){const t=e.decisionStates.length,r=Array(t);for(let n=0;n<t;n++)r[n]=jk(e.decisionStates[n],n);return r}function Uk(e,t,r,n){const i=e[t](r);let a=i.start;if(void 0===a){a=nS(i,tS(iS(i.atnStartState))),i.start=a}return Wk.apply(this,[i,a,r,n])}function Wk(e,t,r,n){let i=t,a=1;const s=[];let o=this.LA(a++);for(;;){let t=Xk(i,o);if(void 0===t&&(t=Bk.apply(this,[e,i,o,a,r,n])),t===zA)return Jk(s,i,o);if(!0===t.isAcceptState)return t.prediction;i=t,s.push(o),o=this.LA(a++)}}function Bk(e,t,r,n,i,a){const s=Qk(t.configs,r,i);if(0===s.size)return rS(e,t,r,zA),zA;let o=tS(s);const l=eS(s,i);if(void 0!==l)o.isAcceptState=!0,o.prediction=l,o.configs.uniqueAlt=l;else if(cS(s)){const t=HA(s.alts);o.isAcceptState=!0,o.prediction=t,o.configs.uniqueAlt=t,Vk.apply(this,[e,n,s.alts,a])}return o=rS(e,t,r,o),o}function Vk(e,t,r,n){const i=[];for(let s=1;s<=t;s++)i.push(this.LA(s).tokenType);const a=e.atnStartState;n(Hk({topLevelRule:a.rule,ambiguityIndices:r,production:a.production,prefixPath:i}))}function Hk(e){const t=sA(e.prefixPath,e=>xy(e)).join(", "),r=0===e.production.idx?"":e.production.idx;let n=`Ambiguous Alternatives Detected: <${e.ambiguityIndices.join(", ")}> in <${Yk(e.production)}${r}> inside <${e.topLevelRule.name}> Rule,\n<${t}> may appears as a prefix path in all these alternatives.\n`;return n+="See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES\nFor Further details.",n}function Yk(e){if(e instanceof jm)return"SUBRULE";if(e instanceof Km)return"OPTION";if(e instanceof Bm)return"OR";if(e instanceof Gm)return"AT_LEAST_ONE";if(e instanceof qm)return"AT_LEAST_ONE_SEP";if(e instanceof Wm)return"MANY_SEP";if(e instanceof Um)return"MANY";if(e instanceof Vm)return"CONSUME";throw Error("non exhaustive match")}function Jk(e,t,r){const n=tk(t.configs.elements,e=>e.state.transitions);return{actualToken:r,possibleTokenTypes:Rk(n.filter(e=>e instanceof fA).map(e=>e.tokenType),e=>e.tokenTypeIdx),tokenPath:e}}function Xk(e,t){return e.edges[t.tokenTypeIdx]}function Qk(e,t,r){const n=new KA,i=[];for(const s of e.elements){if(!1===r.is(s.alt))continue;if(7===s.state.type){i.push(s);continue}const e=s.state.transitions.length;for(let r=0;r<e;r++){const e=Zk(s.state.transitions[r],t);void 0!==e&&n.add({state:e,alt:s.alt,stack:s.stack})}}let a;if(0===i.length&&1===n.size&&(a=n),void 0===a){a=new KA;for(const e of n.elements)aS(e,a)}if(i.length>0&&!oS(a))for(const s of i)a.add(s);return a}function Zk(e,t){if(e instanceof fA&&qy(t,e.tokenType))return e.target}function eS(e,t){let r;for(const n of e.elements)if(!0===t.is(n.alt))if(void 0===r)r=n.alt;else if(r!==n.alt)return;return r}function tS(e){return{configs:e,edges:{},isAcceptState:!1,prediction:-1}}function rS(e,t,r,n){return n=nS(e,n),t.edges[r.tokenTypeIdx]=n,n}function nS(e,t){if(t===zA)return t;const r=t.configs.key,n=e.states[r];return void 0!==n?n:(t.configs.finalize(),e.states[r]=t,t)}function iS(e){const t=new KA,r=e.transitions.length;for(let n=0;n<r;n++){aS({state:e.transitions[n].target,alt:n,stack:[]},t)}return t}function aS(e,t){const r=e.state;if(7===r.type){if(e.stack.length>0){const r=[...e.stack];aS({state:r.pop(),alt:e.alt,stack:r},t)}else t.add(e);return}r.epsilonOnlyTransitions||t.add(e);const n=r.transitions.length;for(let i=0;i<n;i++){const n=sS(e,r.transitions[i]);void 0!==n&&aS(n,t)}}function sS(e,t){if(t instanceof hA)return{state:t.target,alt:e.alt,stack:e.stack};if(t instanceof mA){const r=[...e.stack,t.followState];return{state:t.target,alt:e.alt,stack:r}}}function oS(e){for(const t of e.elements)if(7===t.state.type)return!0;return!1}function lS(e){for(const t of e.elements)if(7!==t.state.type)return!1;return!0}function cS(e){if(lS(e))return!0;const t=uS(e.elements);return dS(t)&&!pS(t)}function uS(e){const t=new Map;for(const r of e){const e=GA(r,!1);let n=t.get(e);void 0===n&&(n={},t.set(e,n)),n[r.alt]=!0}return t}function dS(e){for(const t of Array.from(e.values()))if(Object.keys(t).length>1)return!0;return!1}function pS(e){for(const t of Array.from(e.values()))if(1===Object.keys(t).length)return!0;return!1}ze(Gk,"isLL1Sequence"),ze(qk,"initATNSimulator"),ze(Uk,"adaptivePredict"),ze(Wk,"performLookahead"),ze(Bk,"computeLookaheadTarget"),ze(Vk,"reportLookaheadAmbiguity"),ze(Hk,"buildAmbiguityError"),ze(Yk,"getProductionDslName"),ze(Jk,"buildAdaptivePredictError"),ze(Xk,"getExistingTargetState"),ze(Qk,"computeReachSet"),ze(Zk,"getReachableTarget"),ze(eS,"getUniqueAlt"),ze(tS,"newDFAState"),ze(rS,"addDFAEdge"),ze(nS,"addDFAState"),ze(iS,"computeStartState"),ze(aS,"closure"),ze(sS,"getEpsilonTarget"),ze(oS,"hasConfigInRuleStopState"),ze(lS,"allConfigsInRuleStopStates"),ze(cS,"hasConflictTerminatingPrediction"),ze(uS,"getConflictingAltSets"),ze(dS,"hasConflictingAltSet"),ze(pS,"hasStateAssociatedWithOneAlt"),Je();var fS=class{static{ze(this,"CstNodeBuilder")}constructor(){this.nodeStack=[]}get current(){return this.nodeStack[this.nodeStack.length-1]??this.rootNode}buildRootNode(e){return this.rootNode=new vS(e),this.rootNode.root=this.rootNode,this.nodeStack=[this.rootNode],this.rootNode}buildCompositeNode(e){const t=new gS;return t.grammarSource=e,t.root=this.rootNode,this.current.content.push(t),this.nodeStack.push(t),t}buildLeafNode(e,t){const r=new mS(e.startOffset,e.image.length,ki(e),e.tokenType,!t);return r.grammarSource=t,r.root=this.rootNode,this.current.content.push(r),r}removeNode(e){const t=e.container;if(t){const r=t.content.indexOf(e);r>=0&&t.content.splice(r,1)}}addHiddenNodes(e){const t=[];for(const i of e){const e=new mS(i.startOffset,i.image.length,ki(i),i.tokenType,!0);e.root=this.rootNode,t.push(e)}let r=this.current,n=!1;if(r.content.length>0)r.content.push(...t);else{for(;r.container;){const e=r.container.content.indexOf(r);if(e>0){r.container.content.splice(e,0,...t),n=!0;break}r=r.container}n||this.rootNode.content.unshift(...t)}}construct(e){const t=this.current;"string"!=typeof e.$type||e.$infix||(this.current.astNode=e),e.$cstNode=t;const r=this.nodeStack.pop();0===r?.content.length&&this.removeNode(r)}},hS=class{static{ze(this,"AbstractCstNode")}get hidden(){return!1}get astNode(){const e="string"==typeof this._astNode?.$type?this._astNode:this.container?.astNode;if(!e)throw new Error("This node has no associated AST element");return e}set astNode(e){this._astNode=e}get text(){return this.root.fullText.substring(this.offset,this.end)}},mS=class extends hS{static{ze(this,"LeafCstNodeImpl")}get offset(){return this._offset}get length(){return this._length}get end(){return this._offset+this._length}get hidden(){return this._hidden}get tokenType(){return this._tokenType}get range(){return this._range}constructor(e,t,r,n,i=!1){super(),this._hidden=i,this._offset=e,this._tokenType=n,this._length=t,this._range=r}},gS=class extends hS{static{ze(this,"CompositeCstNodeImpl")}constructor(){super(...arguments),this.content=new yS(this)}get offset(){return this.firstNonHiddenNode?.offset??0}get length(){return this.end-this.offset}get end(){return this.lastNonHiddenNode?.end??0}get range(){const e=this.firstNonHiddenNode,t=this.lastNonHiddenNode;if(e&&t){if(void 0===this._rangeCache){const{range:r}=e,{range:n}=t;this._rangeCache={start:r.start,end:n.end.line<r.start.line?r.start:n.end}}return this._rangeCache}return{start:o.create(0,0),end:o.create(0,0)}}get firstNonHiddenNode(){for(const e of this.content)if(!e.hidden)return e;return this.content[0]}get lastNonHiddenNode(){for(let e=this.content.length-1;e>=0;e--){const t=this.content[e];if(!t.hidden)return t}return this.content[this.content.length-1]}},yS=class e extends Array{static{ze(this,"CstNodeContainer")}constructor(t){super(),this.parent=t,Object.setPrototypeOf(this,e.prototype)}push(...e){return this.addParents(e),super.push(...e)}unshift(...e){return this.addParents(e),super.unshift(...e)}splice(e,t,...r){return this.addParents(r),super.splice(e,t,...r)}addParents(e){for(const t of e)t.container=this.parent}},vS=class extends gS{static{ze(this,"RootCstNodeImpl")}get text(){return this._text.substring(this.offset,this.end)}get fullText(){return this._text}constructor(e){super(),this._text="",this._text=e??""}},TS=Symbol("Datatype");function RS(e){return e.$type===TS}ze(RS,"isDataTypeNode");var $S=ze(e=>e.endsWith("\u200b")?e:e+"\u200b","withRuleSuffix"),bS=class{static{ze(this,"AbstractLangiumParser")}constructor(e){this._unorderedGroups=new Map,this.allRules=new Map,this.lexer=e.parser.Lexer;const t=this.lexer.definition,r="production"===e.LanguageMetaData.mode;e.shared.profilers.LangiumProfiler?.isActive("parsing")?this.wrapper=new xS(t,{...e.parser.ParserConfig,skipValidations:r,errorMessageProvider:e.parser.ParserErrorMessageProvider},e.shared.profilers.LangiumProfiler.createTask("parsing",e.LanguageMetaData.languageId)):this.wrapper=new wS(t,{...e.parser.ParserConfig,skipValidations:r,errorMessageProvider:e.parser.ParserErrorMessageProvider})}alternatives(e,t){this.wrapper.wrapOr(e,t)}optional(e,t){this.wrapper.wrapOption(e,t)}many(e,t){this.wrapper.wrapMany(e,t)}atLeastOne(e,t){this.wrapper.wrapAtLeastOne(e,t)}getRule(e){return this.allRules.get(e)}isRecording(){return this.wrapper.IS_RECORDING}get unorderedGroups(){return this._unorderedGroups}getRuleStack(){return this.wrapper.RULE_STACK}finalize(){this.wrapper.wrapSelfAnalysis()}},ES=class extends bS{static{ze(this,"LangiumParser")}get current(){return this.stack[this.stack.length-1]}constructor(e){super(e),this.nodeBuilder=new fS,this.stack=[],this.assignmentMap=new Map,this.operatorPrecedence=new Map,this.linker=e.references.Linker,this.converter=e.parser.ValueConverter,this.astReflection=e.shared.AstReflection}rule(e,t){const r=this.computeRuleType(e);let n;dn(e)&&(n=e.name,this.registerPrecedenceMap(e));const i=this.wrapper.DEFINE_RULE($S(e.name),this.startImplementation(r,n,t).bind(this));return this.allRules.set(e.name,i),Pn(e)&&e.entry&&(this.mainRule=i),i}registerPrecedenceMap(e){const t=e.name,r=new Map;for(let n=0;n<e.operators.precedences.length;n++){const t=e.operators.precedences[n];for(const e of t.operators)r.set(e.value,{precedence:n,rightAssoc:"right"===t.associativity})}this.operatorPrecedence.set(t,r)}computeRuleType(e){return dn(e)?Ua(e):e.fragment?void 0:Fa(e)?TS:Ua(e)}parse(e,t={}){this.nodeBuilder.buildRootNode(e);const r=this.lexerResult=this.lexer.tokenize(e);this.wrapper.input=r.tokens;const n=t.rule?this.allRules.get(t.rule):this.mainRule;if(!n)throw new Error(t.rule?`No rule found with name '${t.rule}'`:"No main rule available.");const i=this.doParse(n);return this.nodeBuilder.addHiddenNodes(r.hidden),this.unorderedGroups.clear(),this.lexerResult=void 0,or(i,{deep:!0}),{value:i,lexerErrors:r.errors,lexerReport:r.report,parserErrors:this.wrapper.errors}}doParse(e){let t=this.wrapper.rule(e);if(this.stack.length>0&&(t=this.construct()),void 0===t)throw new Error("No result from parser");if(this.stack.length>0)throw new Error("Parser stack is not empty after parsing");return t}startImplementation(e,t,r){return n=>{const i=!this.isRecording()&&void 0!==e;if(i){const r={$type:e};this.stack.push(r),e===TS?r.value="":void 0!==t&&(r.$infixName=t)}return r(n),i?this.construct():void 0}}extractHiddenTokens(e){const t=this.lexerResult.hidden;if(!t.length)return[];const r=e.startOffset;for(let n=0;n<t.length;n++){if(t[n].startOffset>r)return t.splice(0,n)}return t.splice(0,t.length)}consume(e,t,r){const n=this.wrapper.wrapConsume(e,t);if(!this.isRecording()&&this.isValidToken(n)){const e=this.extractHiddenTokens(n);this.nodeBuilder.addHiddenNodes(e);const t=this.nodeBuilder.buildLeafNode(n,r),{assignment:i,crossRef:a}=this.getAssignment(r),s=this.current;if(i){const e=Tn(r)?n.image:this.converter.convert(n.image,t);this.assign(i.operator,i.feature,e,t,a)}else if(RS(s)){let e=n.image;Tn(r)||(e=this.converter.convert(e,t).toString()),s.value+=e}}}isValidToken(e){return!e.isInsertedInRecovery&&!isNaN(e.startOffset)&&"number"==typeof e.endOffset&&!isNaN(e.endOffset)}subrule(e,t,r,n,i){let a,s;this.isRecording()||r||(a=this.nodeBuilder.buildCompositeNode(n));try{s=this.wrapper.wrapSubrule(e,t,i)}finally{this.isRecording()||(void 0!==s||r||(s=this.construct()),void 0!==s&&a&&a.length>0&&this.performSubruleAssignment(s,n,a))}}performSubruleAssignment(e,t,r){const{assignment:n,crossRef:i}=this.getAssignment(t);if(n)this.assign(n.operator,n.feature,e,r,i);else if(!n){const t=this.current;if(RS(t))t.value+=e.toString();else if("object"==typeof e&&e){const r=this.assignWithoutOverride(e,t);this.stack.pop(),this.stack.push(r)}}}action(e,t){if(!this.isRecording()){let r=this.current;if(t.feature&&t.operator){r=this.construct(),this.nodeBuilder.removeNode(r.$cstNode);this.nodeBuilder.buildCompositeNode(t).content.push(r.$cstNode);const n={$type:e};this.stack.push(n),this.assign(t.operator,t.feature,r,r.$cstNode)}else r.$type=e}}construct(){if(this.isRecording())return;const e=this.stack.pop();return this.nodeBuilder.construct(e),"$infixName"in e?this.constructInfix(e,this.operatorPrecedence.get(e.$infixName)):RS(e)?this.converter.convert(e.value,e.$cstNode):(vr(this.astReflection,e),e)}constructInfix(e,t){const r=e.parts;if(!Array.isArray(r)||0===r.length)return;const n=e.operators;if(!Array.isArray(n)||r.length<2)return r[0];let i=0,a=-1;for(let h=0;h<n.length;h++){const e=n[h],r=t.get(e)??{precedence:1/0,rightAssoc:!1};r.precedence>a?(a=r.precedence,i=h):r.precedence===a&&(r.rightAssoc||(i=h))}const s=n.slice(0,i),o=n.slice(i+1),l=r.slice(0,i+1),c=r.slice(i+1),u={$infixName:e.$infixName,$type:e.$type,$cstNode:e.$cstNode,parts:l,operators:s},d={$infixName:e.$infixName,$type:e.$type,$cstNode:e.$cstNode,parts:c,operators:o},p=this.constructInfix(u,t),f=this.constructInfix(d,t);return{$type:e.$type,$cstNode:e.$cstNode,left:p,operator:n[i],right:f}}getAssignment(e){if(!this.assignmentMap.has(e)){const t=lr(e,zr);this.assignmentMap.set(e,{assignment:t,crossRef:t&&Jr(t.terminal)?t.terminal.isMulti?"multi":"single":void 0})}return this.assignmentMap.get(e)}assign(e,t,r,n,i){const a=this.current;let s;switch(s="single"===i&&"string"==typeof r?this.linker.buildReference(a,t,n,r):"multi"===i&&"string"==typeof r?this.linker.buildMultiReference(a,t,n,r):r,e){case"=":a[t]=s;break;case"?=":a[t]=!0;break;case"+=":Array.isArray(a[t])||(a[t]=[]),a[t].push(s)}}assignWithoutOverride(e,t){for(const[n,i]of Object.entries(t)){const t=e[n];void 0===t?e[n]=i:Array.isArray(t)&&Array.isArray(i)&&(i.push(...t),e[n]=i)}const r=e.$cstNode;return r&&(r.astNode=void 0,e.$cstNode=void 0),e}get definitionErrors(){return this.wrapper.definitionErrors}},CS=class{static{ze(this,"AbstractParserErrorMessageProvider")}buildMismatchTokenMessage(e){return Uy.buildMismatchTokenMessage(e)}buildNotAllInputParsedMessage(e){return Uy.buildNotAllInputParsedMessage(e)}buildNoViableAltMessage(e){return Uy.buildNoViableAltMessage(e)}buildEarlyExitMessage(e){return Uy.buildEarlyExitMessage(e)}},AS=class extends CS{static{ze(this,"LangiumParserErrorMessageProvider")}buildMismatchTokenMessage({expected:e,actual:t}){return`Expecting ${e.LABEL?"`"+e.LABEL+"`":e.name.endsWith(":KW")?`keyword '${e.name.substring(0,e.name.length-3)}'`:`token of type '${e.name}'`} but found \`${t.image}\`.`}buildNotAllInputParsedMessage({firstRedundant:e}){return`Expecting end of file but found \`${e.image}\`.`}},kS=class extends bS{static{ze(this,"LangiumCompletionParser")}constructor(){super(...arguments),this.tokens=[],this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}action(){}construct(){}parse(e){this.resetState();const t=this.lexer.tokenize(e,{mode:"partial"});return this.tokens=t.tokens,this.wrapper.input=[...this.tokens],this.mainRule.call(this.wrapper,{}),this.unorderedGroups.clear(),{tokens:this.tokens,elementStack:[...this.lastElementStack],tokenIndex:this.nextTokenIndex}}rule(e,t){const r=this.wrapper.DEFINE_RULE($S(e.name),this.startImplementation(t).bind(this));return this.allRules.set(e.name,r),e.entry&&(this.mainRule=r),r}resetState(){this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}startImplementation(e){return t=>{const r=this.keepStackSize();try{e(t)}finally{this.resetStackSize(r)}}}removeUnexpectedElements(){this.elementStack.splice(this.stackSize)}keepStackSize(){const e=this.elementStack.length;return this.stackSize=e,e}resetStackSize(e){this.removeUnexpectedElements(),this.stackSize=e}consume(e,t,r){this.wrapper.wrapConsume(e,t),this.isRecording()||(this.lastElementStack=[...this.elementStack,r],this.nextTokenIndex=this.currIdx+1)}subrule(e,t,r,n,i){this.before(n),this.wrapper.wrapSubrule(e,t,i),this.after(n)}before(e){this.isRecording()||this.elementStack.push(e)}after(e){if(!this.isRecording()){const t=this.elementStack.lastIndexOf(e);t>=0&&this.elementStack.splice(t)}}get currIdx(){return this.wrapper.currIdx}},SS={recoveryEnabled:!0,nodeLocationTracking:"full",skipValidations:!0,errorMessageProvider:new AS},wS=class extends eR{static{ze(this,"ChevrotainWrapper")}constructor(e,t){super(e,{...SS,lookaheadStrategy:t&&"maxLookahead"in t?new dT({maxLookahead:t.maxLookahead}):new Kk({logging:t.skipValidations?()=>{}:void 0}),...t})}get IS_RECORDING(){return this.RECORDING_PHASE}DEFINE_RULE(e,t,r){return this.RULE(e,t,r)}wrapSelfAnalysis(){this.performSelfAnalysis()}wrapConsume(e,t){return this.consume(e,t,void 0)}wrapSubrule(e,t,r){return this.subrule(e,t,{ARGS:[r]})}wrapOr(e,t){this.or(e,t)}wrapOption(e,t){this.option(e,t)}wrapMany(e,t){this.many(e,t)}wrapAtLeastOne(e,t){this.atLeastOne(e,t)}rule(e){return e.call(this,{})}},xS=class extends wS{static{ze(this,"ProfilerWrapper")}constructor(e,t,r){super(e,t),this.task=r}rule(e){this.task.start(),this.task.startSubTask(this.ruleName(e));try{return super.rule(e)}finally{this.task.stopSubTask(this.ruleName(e)),this.task.stop()}}ruleName(e){return e.ruleName}subrule(e,t,r){this.task.startSubTask(this.ruleName(t));try{return super.subrule(e,t,r)}finally{this.task.stopSubTask(this.ruleName(t))}}};function NS(e,t,r){return IS({parser:t,tokens:r,ruleNames:new Map},e),t}function IS(e,t){const r=$a(t,!1),n=nr(t.rules).filter(Pn).filter(e=>r.has(e));for(const a of n){const t={...e,consume:1,optional:1,subrule:1,many:1,or:1};e.parser.rule(a,PS(t,a.definition))}const i=nr(t.rules).filter(dn).filter(e=>r.has(e));for(const a of i)e.parser.rule(a,_S(e,a))}function _S(e,t){const r=t.call.rule.ref;if(!r)throw new Error("Could not resolve reference to infix operator rule: "+t.call.rule.$refText);if(Zn(r))throw new Error("Cannot use terminal rule in infix expression");const n=t.operators.precedences.flatMap(e=>e.operators),i={$type:"Group",elements:[]},a={$container:i,$type:"Assignment",feature:"parts",operator:"+=",terminal:t.call},s={$container:i,$type:"Group",elements:[],cardinality:"*"};i.elements.push(a,s);const o={$container:s,$type:"Assignment",feature:"operators",operator:"+=",terminal:{$type:"Alternatives",elements:n}},l={...a,$container:s};s.elements.push(o,l);const c=n.map(t=>e.tokens[t.value]).map((t,r)=>({ALT:ze(()=>e.parser.consume(r,t,o),"ALT")}));let u;return t=>{u??(u=WS(e,r)),e.parser.subrule(0,u,!1,a,t),e.parser.many(0,{DEF:ze(()=>{e.parser.alternatives(0,c),e.parser.subrule(1,u,!1,l,t)},"DEF")})}}function PS(e,t,r=!1){let n;if(Tn(t))n=qS(e,t);else if(_r(t))n=DS(e,t);else if(zr(t))n=PS(e,t.terminal);else if(Jr(t))n=GS(e,t);else if(Kn(t))n=OS(e,t);else if(Dr(t))n=jS(e,t);else if(di(t))n=FS(e,t);else if(on(t))n=zS(e,t);else{if(!en(t))throw new Ui(t.$cstNode,`Unexpected element type: ${t.$type}`);{const r=e.consume++;n=ze(()=>e.parser.consume(r,Ky,t),"method")}}return US(e,r?void 0:KS(t),n,t.cardinality)}function DS(e,t){const r=Ua(t);return()=>e.parser.action(r,t)}function OS(e,t){const r=t.rule.ref;if(kr(r)){const n=e.subrule++,i=Pn(r)&&r.fragment,a=t.arguments.length>0?LS(r,t.arguments):()=>({});let s;return o=>{s??(s=WS(e,r)),e.parser.subrule(n,s,i,t,a(o))}}if(Zn(r)){const n=e.consume++,i=VS(e,r.name);return()=>e.parser.consume(n,i,t)}if(!r)throw new Ui(t.$cstNode,`Undefined rule: ${t.rule.$refText}`);Wi()}function LS(e,t){if(t.some(e=>e.calledByName)){const e=t.map(e=>({parameterName:e.parameter?.ref?.name,predicate:MS(e.value)}));return t=>{const r={};for(const{parameterName:n,predicate:i}of e)n&&(r[n]=i(t));return r}}{const r=t.map(e=>MS(e.value));return t=>{const n={};for(let i=0;i<r.length;i++)if(i<e.parameters.length){const a=e.parameters[i].name,s=r[i];n[a]=s(t)}return n}}}function MS(e){if(Qr(e)){const t=MS(e.left),r=MS(e.right);return e=>t(e)||r(e)}if(Hr(e)){const t=MS(e.left),r=MS(e.right);return e=>t(e)&&r(e)}if(An(e)){const t=MS(e.value);return e=>!t(e)}if(In(e)){const t=e.parameter.ref.name;return e=>void 0!==e&&!0===e[t]}if(Gr(e)){const t=Boolean(e.true);return()=>t}Wi()}function jS(e,t){if(1===t.elements.length)return PS(e,t.elements[0]);{const r=[];for(const i of t.elements){const t={ALT:PS(e,i,!0)},n=KS(i);n&&(t.GATE=MS(n)),r.push(t)}const n=e.or++;return t=>e.parser.alternatives(n,r.map(e=>{const r={ALT:ze(()=>e.ALT(t),"ALT")},n=e.GATE;return n&&(r.GATE=()=>n(t)),r}))}}function FS(e,t){if(1===t.elements.length)return PS(e,t.elements[0]);const r=[];for(const o of t.elements){const t={ALT:PS(e,o,!0)},n=KS(o);n&&(t.GATE=MS(n)),r.push(t)}const n=e.or++,i=ze((e,t)=>`uGroup_${e}_${t.getRuleStack().join("-")}`,"idFunc"),a=ze(t=>e.parser.alternatives(n,r.map((r,a)=>{const s={ALT:ze(()=>!0,"ALT")},o=e.parser;s.ALT=()=>{if(r.ALT(t),!o.isRecording()){const e=i(n,o);o.unorderedGroups.get(e)||o.unorderedGroups.set(e,[]);const t=o.unorderedGroups.get(e);void 0===t?.[a]&&(t[a]=!0)}};const l=r.GATE;return s.GATE=l?()=>l(t):()=>{const e=o.unorderedGroups.get(i(n,o));return!e?.[a]},s})),"alternatives"),s=US(e,KS(t),a,"*");return t=>{s(t),e.parser.isRecording()||e.parser.unorderedGroups.delete(i(n,e.parser))}}function zS(e,t){const r=t.elements.map(t=>PS(e,t));return e=>r.forEach(t=>t(e))}function KS(e){if(on(e))return e.guardCondition}function GS(e,t,r=t.terminal){if(r){if(Kn(r)&&Pn(r.rule.ref)){const n=r.rule.ref,i=e.subrule++;let a;return r=>{a??(a=WS(e,n)),e.parser.subrule(i,a,!1,t,r)}}if(Kn(r)&&Zn(r.rule.ref)){const n=e.consume++,i=VS(e,r.rule.ref.name);return()=>e.parser.consume(n,i,t)}if(Tn(r)){const n=e.consume++,i=VS(e,r.value);return()=>e.parser.consume(n,i,t)}throw new Error("Could not build cross reference parser")}{if(!t.type.ref)throw new Error("Could not resolve reference to type: "+t.type.$refText);const r=Pa(t.type.ref),n=r?.terminal;if(!n)throw new Error("Could not find name assignment for type: "+Ua(t.type.ref));return GS(e,t,n)}}function qS(e,t){const r=e.consume++,n=e.tokens[t.value];if(!n)throw new Error("Could not find token for keyword: "+t.value);return()=>e.parser.consume(r,n,t)}function US(e,t,r,n){const i=t&&MS(t);if(!n){if(i){const t=e.or++;return n=>e.parser.alternatives(t,[{ALT:ze(()=>r(n),"ALT"),GATE:ze(()=>i(n),"GATE")},{ALT:QT(),GATE:ze(()=>!i(n),"GATE")}])}return r}if("*"===n){const t=e.many++;return n=>e.parser.many(t,{DEF:ze(()=>r(n),"DEF"),GATE:i?()=>i(n):void 0})}if("+"===n){const t=e.many++;if(i){const n=e.or++;return a=>e.parser.alternatives(n,[{ALT:ze(()=>e.parser.atLeastOne(t,{DEF:ze(()=>r(a),"DEF")}),"ALT"),GATE:ze(()=>i(a),"GATE")},{ALT:QT(),GATE:ze(()=>!i(a),"GATE")}])}return n=>e.parser.atLeastOne(t,{DEF:ze(()=>r(n),"DEF")})}if("?"===n){const t=e.optional++;return n=>e.parser.optional(t,{DEF:ze(()=>r(n),"DEF"),GATE:i?()=>i(n):void 0})}Wi()}function WS(e,t){const r=BS(e,t),n=e.parser.getRule(r);if(!n)throw new Error(`Rule "${r}" not found."`);return n}function BS(e,t){if(kr(t))return t.name;if(e.ruleNames.has(t))return e.ruleNames.get(t);{let r=t,n=r.$container,i=t.$type;for(;!Pn(n);){if(on(n)||Dr(n)||di(n)){i=n.elements.indexOf(r).toString()+":"+i}r=n,n=n.$container}return i=n.name+":"+i,e.ruleNames.set(t,i),i}}function VS(e,t){const r=e.tokens[t];if(!r)throw new Error(`Token "${t}" not found."`);return r}function HS(e){const t=e.Grammar,r=e.parser.Lexer,n=new kS(e);return NS(t,n,r.definition),n.finalize(),n}function YS(e){const t=JS(e);return t.finalize(),t}function JS(e){const t=e.Grammar,r=e.parser.Lexer;return NS(t,new ES(e),r.definition)}ze(NS,"createParser"),ze(IS,"buildRules"),ze(_S,"buildInfixRule"),ze(PS,"buildElement"),ze(DS,"buildAction"),ze(OS,"buildRuleCall"),ze(LS,"buildRuleCallPredicate"),ze(MS,"buildPredicate"),ze(jS,"buildAlternatives"),ze(FS,"buildUnorderedGroup"),ze(zS,"buildGroup"),ze(KS,"getGuardCondition"),ze(GS,"buildCrossReference"),ze(qS,"buildKeyword"),ze(US,"wrap"),ze(WS,"getRule"),ze(BS,"getRuleName"),ze(VS,"getToken"),ze(HS,"createCompletionParser"),ze(YS,"createLangiumParser"),ze(JS,"prepareLangiumParser");var XS,QS=class{static{ze(this,"DefaultTokenBuilder")}constructor(){this.diagnostics=[]}buildTokens(e,t){const r=nr($a(e,!1)),n=this.buildTerminalTokens(r),i=this.buildKeywordTokens(r,n,t);return i.push(...n),i}flushLexingReport(e){return{diagnostics:this.popDiagnostics()}}popDiagnostics(){const e=[...this.diagnostics];return this.diagnostics=[],e}buildTerminalTokens(e){return e.filter(Zn).filter(e=>!e.fragment).map(e=>this.buildTerminalToken(e)).toArray()}buildTerminalToken(e){const t=Ha(e),r=this.requiresCustomPattern(t)?this.regexPatternFunction(t):t,n={name:e.name,PATTERN:r};return"function"==typeof r&&(n.LINE_BREAKS=!0),e.hidden&&(n.GROUP=ma(t)?wy.SKIPPED:"hidden"),n}requiresCustomPattern(e){return!(!e.flags.includes("u")&&!e.flags.includes("s"))}regexPatternFunction(e){const t=new RegExp(e,e.flags+"y");return(e,r)=>{t.lastIndex=r;return t.exec(e)}}buildKeywordTokens(e,t,r){return e.filter(kr).flatMap(e=>hr(e).filter(Tn)).distinct(e=>e.value).toArray().sort((e,t)=>t.value.length-e.value.length).map(e=>this.buildKeywordToken(e,t,Boolean(r?.caseInsensitive)))}buildKeywordToken(e,t,r){const n=this.buildKeywordPattern(e,r),i={name:e.value,PATTERN:n,LONGER_ALT:this.findLongerAlt(e,t)};return"function"==typeof n&&(i.LINE_BREAKS=!0),i}buildKeywordPattern(e,t){return t?new RegExp(ga(e.value),"i"):e.value}findLongerAlt(e,t){return t.reduce((t,r)=>{const n=r?.PATTERN;return n?.source&&ya("^"+n.source+"$",e.value)&&t.push(r),t},[])}},ZS=class{static{ze(this,"DefaultValueConverter")}convert(e,t){let r=t.grammarSource;if(Jr(r)&&(r=Ca(r)),Kn(r)){const n=r.rule.ref;if(!n)throw new Error("This cst node was not parsed by a rule.");return this.runConverter(n,e,t)}return e}runConverter(e,t,r){switch(e.name.toUpperCase()){case"INT":return XS.convertInt(t);case"STRING":return XS.convertString(t);case"ID":return XS.convertID(t)}switch(Va(e)?.toLowerCase()){case"number":return XS.convertNumber(t);case"boolean":return XS.convertBoolean(t);case"bigint":return XS.convertBigint(t);case"date":return XS.convertDate(t);default:return t}}};!function(e){function t(e){let t="";for(let n=1;n<e.length-1;n++){const i=e.charAt(n);if("\\"===i){t+=r(e.charAt(++n))}else t+=i}return t}function r(e){switch(e){case"b":return"\b";case"f":return"\f";case"n":return"\n";case"r":return"\r";case"t":return"\t";case"v":return"\v";case"0":return"\0";default:return e}}function n(e){return"^"===e.charAt(0)?e.substring(1):e}function i(e){return parseInt(e)}function a(e){return BigInt(e)}function s(e){return new Date(e)}function o(e){return Number(e)}function l(e){return"true"===e.toLowerCase()}ze(t,"convertString"),e.convertString=t,ze(r,"convertEscapeCharacter"),ze(n,"convertID"),e.convertID=n,ze(i,"convertInt"),e.convertInt=i,ze(a,"convertBigint"),e.convertBigint=a,ze(s,"convertDate"),e.convertDate=s,ze(o,"convertNumber"),e.convertNumber=o,ze(l,"convertBoolean"),e.convertBoolean=l}(XS||(XS={}));var ew={};function tw(){return new Promise(e=>{"undefined"==typeof setImmediate?setTimeout(e,0):setImmediate(e)})}Ue(ew,We(et(),1)),ze(tw,"delayNextTick");var rw=0,nw=10;function iw(){return rw=performance.now(),new ew.CancellationTokenSource}function aw(e){nw=e}ze(iw,"startCancelableOperation"),ze(aw,"setInterruptionPeriod");var sw=Symbol("OperationCancelled");function ow(e){return e===sw}async function lw(e){if(e===ew.CancellationToken.None)return;const t=performance.now();if(t-rw>=nw&&(rw=t,await tw(),rw=performance.now()),e.isCancellationRequested)throw sw}ze(ow,"isOperationCancelled"),ze(lw,"interruptAndCheck");var cw,uw,dw=class{static{ze(this,"Deferred")}constructor(){this.promise=new Promise((e,t)=>{this.resolve=t=>(e(t),this),this.reject=e=>(t(e),this)})}},pw=class e{static{ze(this,"FullTextDocument")}constructor(e,t,r,n){this._uri=e,this._languageId=t,this._version=r,this._content=n,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){const t=this.offsetAt(e.start),r=this.offsetAt(e.end);return this._content.substring(t,r)}return this._content}update(t,r){for(const n of t)if(e.isIncremental(n)){const e=gw(n.range),t=this.offsetAt(e.start),r=this.offsetAt(e.end);this._content=this._content.substring(0,t)+n.text+this._content.substring(r,this._content.length);const i=Math.max(e.start.line,0),a=Math.max(e.end.line,0);let s=this._lineOffsets;const o=hw(n.text,!1,t);if(a-i===o.length)for(let n=0,c=o.length;n<c;n++)s[n+i+1]=o[n];else o.length<1e4?s.splice(i+1,a-i,...o):this._lineOffsets=s=s.slice(0,i+1).concat(o,s.slice(a+1));const l=n.text.length-(r-t);if(0!==l)for(let n=i+1+o.length,c=s.length;n<c;n++)s[n]=s[n]+l}else{if(!e.isFull(n))throw new Error("Unknown change event received");this._content=n.text,this._lineOffsets=void 0}this._version=r}getLineOffsets(){return void 0===this._lineOffsets&&(this._lineOffsets=hw(this._content,!0)),this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);const t=this.getLineOffsets();let r=0,n=t.length;if(0===n)return{line:0,character:e};for(;r<n;){const i=Math.floor((r+n)/2);t[i]>e?n=i:r=i+1}const i=r-1;return{line:i,character:(e=this.ensureBeforeEOL(e,t[i]))-t[i]}}offsetAt(e){const t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;const r=t[e.line];if(e.character<=0)return r;const n=e.line+1<t.length?t[e.line+1]:this._content.length,i=Math.min(r+e.character,n);return this.ensureBeforeEOL(i,r)}ensureBeforeEOL(e,t){for(;e>t&&mw(this._content.charCodeAt(e-1));)e--;return e}get lineCount(){return this.getLineOffsets().length}static isIncremental(e){const t=e;return null!=t&&"string"==typeof t.text&&void 0!==t.range&&(void 0===t.rangeLength||"number"==typeof t.rangeLength)}static isFull(e){const t=e;return null!=t&&"string"==typeof t.text&&void 0===t.range&&void 0===t.rangeLength}};function fw(e,t){if(e.length<=1)return e;const r=e.length/2|0,n=e.slice(0,r),i=e.slice(r);fw(n,t),fw(i,t);let a=0,s=0,o=0;for(;a<n.length&&s<i.length;){const r=t(n[a],i[s]);e[o++]=r<=0?n[a++]:i[s++]}for(;a<n.length;)e[o++]=n[a++];for(;s<i.length;)e[o++]=i[s++];return e}function hw(e,t,r=0){const n=t?[r]:[];for(let i=0;i<e.length;i++){const t=e.charCodeAt(i);mw(t)&&(13===t&&i+1<e.length&&10===e.charCodeAt(i+1)&&i++,n.push(r+i+1))}return n}function mw(e){return 13===e||10===e}function gw(e){const t=e.start,r=e.end;return t.line>r.line||t.line===r.line&&t.character>r.character?{start:r,end:t}:e}function yw(e){const t=gw(e.range);return t!==e.range?{newText:e.newText,range:t}:e}!function(e){function t(e,t,r,n){return new pw(e,t,r,n)}function r(e,t,r){if(e instanceof pw)return e.update(t,r),e;throw new Error("TextDocument.update: document must be created by TextDocument.create")}function n(e,t){const r=e.getText(),n=fw(t.map(yw),(e,t)=>{const r=e.range.start.line-t.range.start.line;return 0===r?e.range.start.character-t.range.start.character:r});let i=0;const a=[];for(const s of n){const t=e.offsetAt(s.range.start);if(t<i)throw new Error("Overlapping edit");t>i&&a.push(r.substring(i,t)),s.newText.length&&a.push(s.newText),i=e.offsetAt(s.range.end)}return a.push(r.substr(i)),a.join("")}ze(t,"create"),e.create=t,ze(r,"update"),e.update=r,ze(n,"applyEdits"),e.applyEdits=n}(cw||(cw={})),ze(fw,"mergeSort"),ze(hw,"computeLineOffsets"),ze(mw,"isEOL"),ze(gw,"getWellformedRange"),ze(yw,"getWellformedEdit"),(()=>{var e={975:e=>{function t(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function r(e,t){for(var r,n="",i=0,a=-1,s=0,o=0;o<=e.length;++o){if(o<e.length)r=e.charCodeAt(o);else{if(47===r)break;r=47}if(47===r){if(a===o-1||1===s);else if(a!==o-1&&2===s){if(n.length<2||2!==i||46!==n.charCodeAt(n.length-1)||46!==n.charCodeAt(n.length-2))if(n.length>2){var l=n.lastIndexOf("/");if(l!==n.length-1){-1===l?(n="",i=0):i=(n=n.slice(0,l)).length-1-n.lastIndexOf("/"),a=o,s=0;continue}}else if(2===n.length||1===n.length){n="",i=0,a=o,s=0;continue}t&&(n.length>0?n+="/..":n="..",i=2)}else n.length>0?n+="/"+e.slice(a+1,o):n=e.slice(a+1,o),i=o-a-1;a=o,s=0}else 46===r&&-1!==s?++s:s=-1}return n}ze(t,"e"),ze(r,"r");var n={resolve:ze(function(){for(var e,n="",i=!1,a=arguments.length-1;a>=-1&&!i;a--){var s;a>=0?s=arguments[a]:(void 0===e&&(e=process.cwd()),s=e),t(s),0!==s.length&&(n=s+"/"+n,i=47===s.charCodeAt(0))}return n=r(n,!i),i?n.length>0?"/"+n:"/":n.length>0?n:"."},"resolve"),normalize:ze(function(e){if(t(e),0===e.length)return".";var n=47===e.charCodeAt(0),i=47===e.charCodeAt(e.length-1);return 0!==(e=r(e,!n)).length||n||(e="."),e.length>0&&i&&(e+="/"),n?"/"+e:e},"normalize"),isAbsolute:ze(function(e){return t(e),e.length>0&&47===e.charCodeAt(0)},"isAbsolute"),join:ze(function(){if(0===arguments.length)return".";for(var e,r=0;r<arguments.length;++r){var i=arguments[r];t(i),i.length>0&&(void 0===e?e=i:e+="/"+i)}return void 0===e?".":n.normalize(e)},"join"),relative:ze(function(e,r){if(t(e),t(r),e===r)return"";if((e=n.resolve(e))===(r=n.resolve(r)))return"";for(var i=1;i<e.length&&47===e.charCodeAt(i);++i);for(var a=e.length,s=a-i,o=1;o<r.length&&47===r.charCodeAt(o);++o);for(var l=r.length-o,c=s<l?s:l,u=-1,d=0;d<=c;++d){if(d===c){if(l>c){if(47===r.charCodeAt(o+d))return r.slice(o+d+1);if(0===d)return r.slice(o+d)}else s>c&&(47===e.charCodeAt(i+d)?u=d:0===d&&(u=0));break}var p=e.charCodeAt(i+d);if(p!==r.charCodeAt(o+d))break;47===p&&(u=d)}var f="";for(d=i+u+1;d<=a;++d)d!==a&&47!==e.charCodeAt(d)||(0===f.length?f+="..":f+="/..");return f.length>0?f+r.slice(o+u):(o+=u,47===r.charCodeAt(o)&&++o,r.slice(o))},"relative"),_makeLong:ze(function(e){return e},"_makeLong"),dirname:ze(function(e){if(t(e),0===e.length)return".";for(var r=e.charCodeAt(0),n=47===r,i=-1,a=!0,s=e.length-1;s>=1;--s)if(47===(r=e.charCodeAt(s))){if(!a){i=s;break}}else a=!1;return-1===i?n?"/":".":n&&1===i?"//":e.slice(0,i)},"dirname"),basename:ze(function(e,r){if(void 0!==r&&"string"!=typeof r)throw new TypeError('"ext" argument must be a string');t(e);var n,i=0,a=-1,s=!0;if(void 0!==r&&r.length>0&&r.length<=e.length){if(r.length===e.length&&r===e)return"";var o=r.length-1,l=-1;for(n=e.length-1;n>=0;--n){var c=e.charCodeAt(n);if(47===c){if(!s){i=n+1;break}}else-1===l&&(s=!1,l=n+1),o>=0&&(c===r.charCodeAt(o)?-1==--o&&(a=n):(o=-1,a=l))}return i===a?a=l:-1===a&&(a=e.length),e.slice(i,a)}for(n=e.length-1;n>=0;--n)if(47===e.charCodeAt(n)){if(!s){i=n+1;break}}else-1===a&&(s=!1,a=n+1);return-1===a?"":e.slice(i,a)},"basename"),extname:ze(function(e){t(e);for(var r=-1,n=0,i=-1,a=!0,s=0,o=e.length-1;o>=0;--o){var l=e.charCodeAt(o);if(47!==l)-1===i&&(a=!1,i=o+1),46===l?-1===r?r=o:1!==s&&(s=1):-1!==r&&(s=-1);else if(!a){n=o+1;break}}return-1===r||-1===i||0===s||1===s&&r===i-1&&r===n+1?"":e.slice(r,i)},"extname"),format:ze(function(e){if(null===e||"object"!=typeof e)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return r=(t=e).dir||t.root,n=t.base||(t.name||"")+(t.ext||""),r?r===t.root?r+n:r+"/"+n:n;var t,r,n},"format"),parse:ze(function(e){t(e);var r={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return r;var n,i=e.charCodeAt(0),a=47===i;a?(r.root="/",n=1):n=0;for(var s=-1,o=0,l=-1,c=!0,u=e.length-1,d=0;u>=n;--u)if(47!==(i=e.charCodeAt(u)))-1===l&&(c=!1,l=u+1),46===i?-1===s?s=u:1!==d&&(d=1):-1!==s&&(d=-1);else if(!c){o=u+1;break}return-1===s||-1===l||0===d||1===d&&s===l-1&&s===o+1?-1!==l&&(r.base=r.name=0===o&&a?e.slice(1,l):e.slice(o,l)):(0===o&&a?(r.name=e.slice(1,s),r.base=e.slice(1,l)):(r.name=e.slice(o,s),r.base=e.slice(o,l)),r.ext=e.slice(s,l)),o>0?r.dir=e.slice(0,o-1):a&&(r.dir="/"),r},"parse"),sep:"/",delimiter:":",win32:null,posix:null};n.posix=n,e.exports=n}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var a=t[n]={exports:{}};return e[n](a,a.exports,r),a.exports}ze(r,"r"),r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};let i;if(r.r(n),r.d(n,{URI:ze(()=>p,"URI"),Utils:ze(()=>k,"Utils")}),"object"==typeof process)i="win32"===process.platform;else if("object"==typeof navigator){let e=navigator.userAgent;i=e.indexOf("Windows")>=0}const a=/^\w[\w\d+.-]*$/,s=/^\//,o=/^\/\//;function l(e,t){if(!e.scheme&&t)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${e.authority}", path: "${e.path}", query: "${e.query}", fragment: "${e.fragment}"}`);if(e.scheme&&!a.test(e.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(e.path)if(e.authority){if(!s.test(e.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(o.test(e.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}ze(l,"a");const c="",u="/",d=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class p{static{ze(this,"l")}static isUri(e){return e instanceof p||!!e&&"string"==typeof e.authority&&"string"==typeof e.fragment&&"string"==typeof e.path&&"string"==typeof e.query&&"string"==typeof e.scheme&&"string"==typeof e.fsPath&&"function"==typeof e.with&&"function"==typeof e.toString}scheme;authority;path;query;fragment;constructor(e,t,r,n,i,a=!1){"object"==typeof e?(this.scheme=e.scheme||c,this.authority=e.authority||c,this.path=e.path||c,this.query=e.query||c,this.fragment=e.fragment||c):(this.scheme=function(e,t){return e||t?e:"file"}(e,a),this.authority=t||c,this.path=function(e,t){switch(e){case"https":case"http":case"file":t?t[0]!==u&&(t=u+t):t=u}return t}(this.scheme,r||c),this.query=n||c,this.fragment=i||c,l(this,a))}get fsPath(){return v(this,!1)}with(e){if(!e)return this;let{scheme:t,authority:r,path:n,query:i,fragment:a}=e;return void 0===t?t=this.scheme:null===t&&(t=c),void 0===r?r=this.authority:null===r&&(r=c),void 0===n?n=this.path:null===n&&(n=c),void 0===i?i=this.query:null===i&&(i=c),void 0===a?a=this.fragment:null===a&&(a=c),t===this.scheme&&r===this.authority&&n===this.path&&i===this.query&&a===this.fragment?this:new h(t,r,n,i,a)}static parse(e,t=!1){const r=d.exec(e);return r?new h(r[2]||c,b(r[4]||c),b(r[5]||c),b(r[7]||c),b(r[9]||c),t):new h(c,c,c,c,c)}static file(e){let t=c;if(i&&(e=e.replace(/\\/g,u)),e[0]===u&&e[1]===u){const r=e.indexOf(u,2);-1===r?(t=e.substring(2),e=u):(t=e.substring(2,r),e=e.substring(r)||u)}return new h("file",t,e,c,c)}static from(e){const t=new h(e.scheme,e.authority,e.path,e.query,e.fragment);return l(t,!0),t}toString(e=!1){return T(this,e)}toJSON(){return this}static revive(e){if(e){if(e instanceof p)return e;{const t=new h(e);return t._formatted=e.external,t._fsPath=e._sep===f?e.fsPath:null,t}}return e}}const f=i?1:void 0;class h extends p{static{ze(this,"d")}_formatted=null;_fsPath=null;get fsPath(){return this._fsPath||(this._fsPath=v(this,!1)),this._fsPath}toString(e=!1){return e?T(this,!0):(this._formatted||(this._formatted=T(this,!1)),this._formatted)}toJSON(){const e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=f),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e}}const m={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function g(e,t,r){let n,i=-1;for(let a=0;a<e.length;a++){const s=e.charCodeAt(a);if(s>=97&&s<=122||s>=65&&s<=90||s>=48&&s<=57||45===s||46===s||95===s||126===s||t&&47===s||r&&91===s||r&&93===s||r&&58===s)-1!==i&&(n+=encodeURIComponent(e.substring(i,a)),i=-1),void 0!==n&&(n+=e.charAt(a));else{void 0===n&&(n=e.substr(0,a));const t=m[s];void 0!==t?(-1!==i&&(n+=encodeURIComponent(e.substring(i,a)),i=-1),n+=t):-1===i&&(i=a)}}return-1!==i&&(n+=encodeURIComponent(e.substring(i))),void 0!==n?n:e}function y(e){let t;for(let r=0;r<e.length;r++){const n=e.charCodeAt(r);35===n||63===n?(void 0===t&&(t=e.substr(0,r)),t+=m[n]):void 0!==t&&(t+=e[r])}return void 0!==t?t:e}function v(e,t){let r;return r=e.authority&&e.path.length>1&&"file"===e.scheme?`//${e.authority}${e.path}`:47===e.path.charCodeAt(0)&&(e.path.charCodeAt(1)>=65&&e.path.charCodeAt(1)<=90||e.path.charCodeAt(1)>=97&&e.path.charCodeAt(1)<=122)&&58===e.path.charCodeAt(2)?t?e.path.substr(1):e.path[1].toLowerCase()+e.path.substr(2):e.path,i&&(r=r.replace(/\//g,"\\")),r}function T(e,t){const r=t?y:g;let n="",{scheme:i,authority:a,path:s,query:o,fragment:l}=e;if(i&&(n+=i,n+=":"),(a||"file"===i)&&(n+=u,n+=u),a){let e=a.indexOf("@");if(-1!==e){const t=a.substr(0,e);a=a.substr(e+1),e=t.lastIndexOf(":"),-1===e?n+=r(t,!1,!1):(n+=r(t.substr(0,e),!1,!1),n+=":",n+=r(t.substr(e+1),!1,!0)),n+="@"}a=a.toLowerCase(),e=a.lastIndexOf(":"),-1===e?n+=r(a,!1,!0):(n+=r(a.substr(0,e),!1,!0),n+=a.substr(e))}if(s){if(s.length>=3&&47===s.charCodeAt(0)&&58===s.charCodeAt(2)){const e=s.charCodeAt(1);e>=65&&e<=90&&(s=`/${String.fromCharCode(e+32)}:${s.substr(3)}`)}else if(s.length>=2&&58===s.charCodeAt(1)){const e=s.charCodeAt(0);e>=65&&e<=90&&(s=`${String.fromCharCode(e+32)}:${s.substr(2)}`)}n+=r(s,!0,!1)}return o&&(n+="?",n+=r(o,!1,!1)),l&&(n+="#",n+=t?l:g(l,!1,!1)),n}function R(e){try{return decodeURIComponent(e)}catch{return e.length>3?e.substr(0,3)+R(e.substr(3)):e}}ze(g,"m"),ze(y,"y"),ze(v,"v"),ze(T,"b"),ze(R,"C");const $=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function b(e){return e.match($)?e.replace($,e=>R(e)):e}ze(b,"w");var E=r(975);const C=E.posix||E,A="/";var k,S;(S=k||(k={})).joinPath=function(e,...t){return e.with({path:C.join(e.path,...t)})},S.resolvePath=function(e,...t){let r=e.path,n=!1;r[0]!==A&&(r=A+r,n=!0);let i=C.resolve(r,...t);return n&&i[0]===A&&!e.authority&&(i=i.substring(1)),e.with({path:i})},S.dirname=function(e){if(0===e.path.length||e.path===A)return e;let t=C.dirname(e.path);return 1===t.length&&46===t.charCodeAt(0)&&(t=""),e.with({path:t})},S.basename=function(e){return C.basename(e.path)},S.extname=function(e){return C.extname(e.path)},uw=n})();var vw,{URI:Tw,Utils:Rw}=uw;!function(e){e.basename=Rw.basename,e.dirname=Rw.dirname,e.extname=Rw.extname,e.joinPath=Rw.joinPath,e.resolvePath=Rw.resolvePath;const t="object"==typeof process&&"win32"===process?.platform;function r(e,t){return e?.toString()===t?.toString()}function n(e,r){const n="string"==typeof e?Tw.parse(e).path:e.path,i="string"==typeof r?Tw.parse(r).path:r.path,a=n.split("/").filter(e=>e.length>0),s=i.split("/").filter(e=>e.length>0);if(t){const e=/^[A-Z]:$/;if(a[0]&&e.test(a[0])&&(a[0]=a[0].toLowerCase()),s[0]&&e.test(s[0])&&(s[0]=s[0].toLowerCase()),a[0]!==s[0])return i.substring(1)}let o=0;for(;o<a.length&&a[o]===s[o];o++);return"../".repeat(a.length-o)+s.slice(o).join("/")}function i(e){return Tw.parse(e.toString()).toString()}function a(e,t){let r="string"==typeof e?e:e.path,n="string"==typeof t?t:t.path;return"/"===n.charAt(n.length-1)&&(n=n.slice(0,-1)),"/"===r.charAt(r.length-1)&&(r=r.slice(0,-1)),n===r||!(n.length<r.length)&&("/"===n.charAt(r.length)&&n.startsWith(r))}ze(r,"equals"),e.equals=r,ze(n,"relative"),e.relative=n,ze(i,"normalize"),e.normalize=i,ze(a,"contains"),e.contains=a}(vw||(vw={}));var $w,bw,Ew=class{static{ze(this,"UriTrie")}constructor(){this.root={name:"",children:new Map}}normalizeUri(e){return vw.normalize(e)}clear(){this.root.children.clear()}insert(e,t){this.getNode(this.normalizeUri(e),!0).element=t}delete(e){const t=this.getNode(this.normalizeUri(e),!1);t?.parent&&t.parent.children.delete(t.name)}has(e){return void 0!==this.getNode(this.normalizeUri(e),!1)?.element}hasNode(e){return void 0!==this.getNode(this.normalizeUri(e),!1)}find(e){return this.getNode(this.normalizeUri(e),!1)?.element}findNode(e){const t=this.normalizeUri(e),r=this.getNode(t,!1);if(r)return{name:r.name,uri:vw.joinPath(Tw.parse(t),r.name).toString(),element:r.element}}findChildren(e){const t=this.normalizeUri(e),r=this.getNode(t,!1);return r?Array.from(r.children.values()).map(e=>({name:e.name,uri:vw.joinPath(Tw.parse(t),e.name).toString(),element:e.element})):[]}all(){return this.collectValues(this.root)}findAll(e){const t=this.getNode(vw.normalize(e),!1);return t?this.collectValues(t):[]}getNode(e,t){const r=e.split("/");"/"===e.charAt(e.length-1)&&r.pop();let n=this.root;for(const i of r){let e=n.children.get(i);if(!e){if(!t)return;e={name:i,children:new Map,parent:n},n.children.set(i,e)}n=e}return n}collectValues(e){const t=[];e.element&&t.push(e.element);for(const r of e.children.values())t.push(...this.collectValues(r));return t}};(bw=$w||($w={}))[bw.Changed=0]="Changed",bw[bw.Parsed=1]="Parsed",bw[bw.IndexedContent=2]="IndexedContent",bw[bw.ComputedScopes=3]="ComputedScopes",bw[bw.Linked=4]="Linked",bw[bw.IndexedReferences=5]="IndexedReferences",bw[bw.Validated=6]="Validated";var Cw=class{static{ze(this,"DefaultLangiumDocumentFactory")}constructor(e){this.serviceRegistry=e.ServiceRegistry,this.textDocuments=e.workspace.TextDocuments,this.fileSystemProvider=e.workspace.FileSystemProvider}async fromUri(e,t=ew.CancellationToken.None){const r=await this.fileSystemProvider.readFile(e);return this.createAsync(e,r,t)}fromTextDocument(e,t,r){return t=t??Tw.parse(e.uri),ew.CancellationToken.is(r)?this.createAsync(t,e,r):this.create(t,e,r)}fromString(e,t,r){return ew.CancellationToken.is(r)?this.createAsync(t,e,r):this.create(t,e,r)}fromModel(e,t){return this.create(t,{$model:e})}create(e,t,r){if("string"==typeof t){const n=this.parse(e,t,r);return this.createLangiumDocument(n,e,void 0,t)}if("$model"in t){const r={value:t.$model,parserErrors:[],lexerErrors:[]};return this.createLangiumDocument(r,e)}{const n=this.parse(e,t.getText(),r);return this.createLangiumDocument(n,e,t)}}async createAsync(e,t,r){if("string"==typeof t){const n=await this.parseAsync(e,t,r);return this.createLangiumDocument(n,e,void 0,t)}{const n=await this.parseAsync(e,t.getText(),r);return this.createLangiumDocument(n,e,t)}}createLangiumDocument(e,t,r,n){let i;if(r)i={parseResult:e,uri:t,state:$w.Parsed,references:[],textDocument:r};else{const r=this.createTextDocumentGetter(t,n);i={parseResult:e,uri:t,state:$w.Parsed,references:[],get textDocument(){return r()}}}return e.value.$document=i,i}async update(e,t){const r=e.parseResult.value.$cstNode?.root.fullText,n=this.textDocuments?.get(e.uri.toString()),i=n?n.getText():await this.fileSystemProvider.readFile(e.uri);if(n)Object.defineProperty(e,"textDocument",{value:n});else{const t=this.createTextDocumentGetter(e.uri,i);Object.defineProperty(e,"textDocument",{get:t})}return r!==i&&(e.parseResult=await this.parseAsync(e.uri,i,t),e.parseResult.value.$document=e),e.state=$w.Parsed,e}parse(e,t,r){return this.serviceRegistry.getServices(e).parser.LangiumParser.parse(t,r)}parseAsync(e,t,r){return this.serviceRegistry.getServices(e).parser.AsyncParser.parse(t,r)}createTextDocumentGetter(e,t){const r=this.serviceRegistry;let n;return()=>n??(n=cw.create(e.toString(),r.getServices(e).LanguageMetaData.languageId,0,t??""))}},Aw=class{static{ze(this,"DefaultLangiumDocuments")}constructor(e){this.documentTrie=new Ew,this.services=e,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.documentBuilder=()=>e.workspace.DocumentBuilder}get all(){return nr(this.documentTrie.all())}addDocument(e){const t=e.uri.toString();if(this.documentTrie.has(t))throw new Error(`A document with the URI '${t}' is already present.`);this.documentTrie.insert(t,e)}getDocument(e){const t=e.toString();return this.documentTrie.find(t)}getDocuments(e){const t=e.toString();return this.documentTrie.findAll(t)}async getOrCreateDocument(e,t){let r=this.getDocument(e);return r||(r=await this.langiumDocumentFactory.fromUri(e,t),this.addDocument(r),r)}createDocument(e,t,r){if(r)return this.langiumDocumentFactory.fromString(t,e,r).then(e=>(this.addDocument(e),e));{const r=this.langiumDocumentFactory.fromString(t,e);return this.addDocument(r),r}}hasDocument(e){return this.documentTrie.has(e.toString())}invalidateDocument(e){const t=e.toString(),r=this.documentTrie.find(t);return r&&this.documentBuilder().resetToState(r,$w.Changed),r}deleteDocument(e){const t=e.toString(),r=this.documentTrie.find(t);return r&&(r.state=$w.Changed,this.documentTrie.delete(t)),r}deleteDocuments(e){const t=e.toString(),r=this.documentTrie.findAll(t);for(const n of r)n.state=$w.Changed;return this.documentTrie.delete(t),r}},kw=Symbol("RefResolving"),Sw=class{static{ze(this,"DefaultLinker")}constructor(e){this.reflection=e.shared.AstReflection,this.langiumDocuments=()=>e.shared.workspace.LangiumDocuments,this.scopeProvider=e.references.ScopeProvider,this.astNodeLocator=e.workspace.AstNodeLocator,this.profiler=e.shared.profilers.LangiumProfiler,this.languageId=e.LanguageMetaData.languageId}async link(e,t=ew.CancellationToken.None){if(this.profiler?.isActive("linking")){const r=this.profiler.createTask("linking",this.languageId);r.start();try{for(const n of mr(e.parseResult.value))await lw(t),yr(n).forEach(t=>{const i=`${n.$type}:${t.property}`;r.startSubTask(i);try{this.doLink(t,e)}finally{r.stopSubTask(i)}})}finally{r.stop()}}else for(const r of mr(e.parseResult.value))await lw(t),yr(r).forEach(t=>this.doLink(t,e))}doLink(e,t){const r=e.reference;if("_ref"in r&&void 0===r._ref){r._ref=kw;try{const t=this.getCandidate(e);if(Vt(t))r._ref=t;else{r._nodeDescription=t;const n=this.loadAstNode(t);r._ref=n??this.createLinkingError(e,t)}}catch(n){console.error(`An error occurred while resolving reference to '${r.$refText}':`,n);const t=n.message??String(n);r._ref={info:e,message:`An error occurred while resolving reference to '${r.$refText}': ${t}`}}t.references.push(r)}else if("_items"in r&&void 0===r._items){r._items=kw;try{const t=this.getCandidates(e),n=[];if(Vt(t))r._linkingError=t;else for(const e of t){const t=this.loadAstNode(e);t&&n.push({ref:t,$nodeDescription:e})}r._items=n}catch(n){r._linkingError={info:e,message:`An error occurred while resolving reference to '${r.$refText}': ${n}`},r._items=[]}t.references.push(r)}}unlink(e){for(const t of e.references)"_ref"in t?(t._ref=void 0,delete t._nodeDescription):"_items"in t&&(t._items=void 0,delete t._linkingError);e.references=[]}getCandidate(e){return this.scopeProvider.getScope(e).getElement(e.reference.$refText)??this.createLinkingError(e)}getCandidates(e){const t=this.scopeProvider.getScope(e).getElements(e.reference.$refText).distinct(e=>`${e.documentUri}#${e.path}`).toArray();return t.length>0?t:this.createLinkingError(e)}buildReference(e,t,r,n){const i=this,a={$refNode:r,$refText:n,_ref:void 0,get ref(){if(qt(this._ref))return this._ref;if(Bt(this._nodeDescription)){const r=i.loadAstNode(this._nodeDescription);this._ref=r??i.createLinkingError({reference:a,container:e,property:t},this._nodeDescription)}else if(void 0===this._ref){this._ref=kw;const r=dr(e).$document,n=i.getLinkedNode({reference:a,container:e,property:t});if(n.error&&r&&r.state<$w.ComputedScopes)return this._ref=void 0;this._ref=n.node??n.error,this._nodeDescription=n.descr,r?.references.push(this)}else this._ref===kw&&i.throwCyclicReferenceError(e,t,n);return qt(this._ref)?this._ref:void 0},get $nodeDescription(){return this._nodeDescription},get error(){return Vt(this._ref)?this._ref:void 0}};return a}buildMultiReference(e,t,r,n){const i=this,a={$refNode:r,$refText:n,_items:void 0,get items(){if(Array.isArray(this._items))return this._items;if(void 0===this._items){this._items=kw;const r=dr(e).$document,n=i.getCandidates({reference:a,container:e,property:t}),s=[];if(Vt(n))this._linkingError=n;else for(const e of n){const t=i.loadAstNode(e);t&&s.push({ref:t,$nodeDescription:e})}this._items=s,r?.references.push(this)}else this._items===kw&&i.throwCyclicReferenceError(e,t,n);return Array.isArray(this._items)?this._items:[]},get error(){if(this._linkingError)return this._linkingError;return this.items.length>0?void 0:this._linkingError=i.createLinkingError({reference:a,container:e,property:t})}};return a}throwCyclicReferenceError(e,t,r){throw new Error(`Cyclic reference resolution detected: ${this.astNodeLocator.getAstNodePath(e)}/${t} (symbol '${r}')`)}getLinkedNode(e){try{const t=this.getCandidate(e);if(Vt(t))return{error:t};const r=this.loadAstNode(t);return r?{node:r,descr:t}:{descr:t,error:this.createLinkingError(e,t)}}catch(t){console.error(`An error occurred while resolving reference to '${e.reference.$refText}':`,t);const r=t.message??String(t);return{error:{info:e,message:`An error occurred while resolving reference to '${e.reference.$refText}': ${r}`}}}}loadAstNode(e){if(e.node)return e.node;const t=this.langiumDocuments().getDocument(e.documentUri);return t?this.astNodeLocator.getAstNode(t.parseResult.value,e.path):void 0}createLinkingError(e,t){const r=dr(e.container).$document;r&&r.state<$w.ComputedScopes&&console.warn(`Attempted reference resolution before document reached ComputedScopes state (${r.uri}).`);return{info:e,message:`Could not resolve reference to ${this.reflection.getReferenceType(e)} named '${e.reference.$refText}'.`,targetDescription:t}}};function ww(e){return"string"==typeof e.name}ze(ww,"isNamed");var xw=class{static{ze(this,"DefaultNameProvider")}getName(e){if(ww(e))return e.name}getNameNode(e){return Sa(e.$cstNode,"name")}},Nw=class{static{ze(this,"DefaultReferences")}constructor(e){this.nameProvider=e.references.NameProvider,this.index=e.shared.workspace.IndexManager,this.nodeLocator=e.workspace.AstNodeLocator,this.documents=e.shared.workspace.LangiumDocuments,this.hasMultiReference=mr(e.Grammar).some(e=>Jr(e)&&e.isMulti)}findDeclarations(e){if(e){const t=_a(e),r=e.astNode;if(t&&r){const n=r[t.feature];if(Ut(n)||Wt(n))return pr(n);if(Array.isArray(n))for(const t of n)if((Ut(t)||Wt(t))&&t.$refNode&&t.$refNode.offset<=e.offset&&t.$refNode.end>=e.end)return pr(t)}if(r){const t=this.nameProvider.getNameNode(r);if(t&&(t===e||Ai(e,t)))return this.getSelfNodes(r)}}return[]}getSelfNodes(e){if(this.hasMultiReference){const t=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e)),r=this.getNodeFromReferenceDescription(t.head());if(r)for(const n of yr(r))if(Wt(n.reference)&&n.reference.items.some(t=>t.ref===e))return n.reference.items.map(e=>e.ref);return[e]}return[e]}getNodeFromReferenceDescription(e){if(!e)return;const t=this.documents.getDocument(e.sourceUri);return t?this.nodeLocator.getAstNode(t.parseResult.value,e.sourcePath):void 0}findDeclarationNodes(e){const t=this.findDeclarations(e),r=[];for(const n of t){const e=this.nameProvider.getNameNode(n)??n.$cstNode;e&&r.push(e)}return r}findReferences(e,t){const r=[];t.includeDeclaration&&r.push(...this.getSelfReferences(e));let n=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e));return t.documentUri&&(n=n.filter(e=>vw.equals(e.sourceUri,t.documentUri))),r.push(...n),nr(r)}getSelfReferences(e){const t=this.getSelfNodes(e),r=[];for(const n of t){const e=this.nameProvider.getNameNode(n);if(e){const t=ur(n),i=this.nodeLocator.getAstNodePath(n);r.push({sourceUri:t.uri,sourcePath:i,targetUri:t.uri,targetPath:i,segment:Si(e),local:!0})}}return r}},Iw=class{static{ze(this,"MultiMap")}constructor(e){if(this.map=new Map,e)for(const[t,r]of e)this.add(t,r)}get size(){return ir.sum(nr(this.map.values()).map(e=>e.length))}clear(){this.map.clear()}delete(e,t){if(void 0===t)return this.map.delete(e);{const r=this.map.get(e);if(r){const n=r.indexOf(t);if(n>=0)return 1===r.length?this.map.delete(e):r.splice(n,1),!0}return!1}}get(e){return this.map.get(e)??[]}getStream(e){const t=this.map.get(e);return t?nr(t):tr}has(e,t){if(void 0===t)return this.map.has(e);{const r=this.map.get(e);return!!r&&r.indexOf(t)>=0}}add(e,t){return this.map.has(e)?this.map.get(e).push(t):this.map.set(e,[t]),this}addAll(e,t){return this.map.has(e)?this.map.get(e).push(...t):this.map.set(e,Array.from(t)),this}forEach(e){this.map.forEach((t,r)=>t.forEach(t=>e(t,r,this)))}[Symbol.iterator](){return this.entries().iterator()}entries(){return nr(this.map.entries()).flatMap(([e,t])=>t.map(t=>[e,t]))}keys(){return nr(this.map.keys())}values(){return nr(this.map.values()).flat()}entriesGroupedByKey(){return nr(this.map.entries())}},_w=class{static{ze(this,"BiMap")}get size(){return this.map.size}constructor(e){if(this.map=new Map,this.inverse=new Map,e)for(const[t,r]of e)this.set(t,r)}clear(){this.map.clear(),this.inverse.clear()}set(e,t){return this.map.set(e,t),this.inverse.set(t,e),this}get(e){return this.map.get(e)}getKey(e){return this.inverse.get(e)}delete(e){const t=this.map.get(e);return void 0!==t&&(this.map.delete(e),this.inverse.delete(t),!0)}},Pw=class{static{ze(this,"DefaultScopeComputation")}constructor(e){this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider}async collectExportedSymbols(e,t=ew.CancellationToken.None){return this.collectExportedSymbolsForNode(e.parseResult.value,e,void 0,t)}async collectExportedSymbolsForNode(e,t,r=fr,n=ew.CancellationToken.None){const i=[];this.addExportedSymbol(e,i,t);for(const a of r(e))await lw(n),this.addExportedSymbol(a,i,t);return i}addExportedSymbol(e,t,r){const n=this.nameProvider.getName(e);n&&t.push(this.descriptions.createDescription(e,n,r))}async collectLocalSymbols(e,t=ew.CancellationToken.None){const r=e.parseResult.value,n=new Iw;for(const i of hr(r))await lw(t),this.addLocalSymbol(i,e,n);return n}addLocalSymbol(e,t,r){const n=e.$container;if(n){const i=this.nameProvider.getName(e);i&&r.add(n,this.descriptions.createDescription(e,i,t))}}},Dw=class{static{ze(this,"StreamScope")}constructor(e,t,r){this.elements=e,this.outerScope=t,this.caseInsensitive=r?.caseInsensitive??!1,this.concatOuterScope=r?.concatOuterScope??!0}getAllElements(){return this.outerScope?this.elements.concat(this.outerScope.getAllElements()):this.elements}getElement(e){const t=this.caseInsensitive?e.toLowerCase():e,r=this.caseInsensitive?this.elements.find(e=>e.name.toLowerCase()===t):this.elements.find(t=>t.name===e);return r||(this.outerScope?this.outerScope.getElement(e):void 0)}getElements(e){const t=this.caseInsensitive?e.toLowerCase():e,r=this.caseInsensitive?this.elements.filter(e=>e.name.toLowerCase()===t):this.elements.filter(t=>t.name===e);return(this.concatOuterScope||r.isEmpty())&&this.outerScope?r.concat(this.outerScope.getElements(e)):r}},Ow=class{static{ze(this,"MapScope")}constructor(e,t,r){this.elements=new Map,this.caseInsensitive=r?.caseInsensitive??!1,this.concatOuterScope=r?.concatOuterScope??!0;for(const n of e){const e=this.caseInsensitive?n.name.toLowerCase():n.name;this.elements.set(e,n)}this.outerScope=t}getElement(e){const t=this.caseInsensitive?e.toLowerCase():e,r=this.elements.get(t);return r||(this.outerScope?this.outerScope.getElement(e):void 0)}getElements(e){const t=this.caseInsensitive?e.toLowerCase():e,r=this.elements.get(t),n=r?[r]:[];return(this.concatOuterScope||n.length>0)&&this.outerScope?nr(n).concat(this.outerScope.getElements(e)):nr(n)}getAllElements(){let e=nr(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}},Lw=class{static{ze(this,"MultiMapScope")}constructor(e,t,r){this.elements=new Iw,this.caseInsensitive=r?.caseInsensitive??!1,this.concatOuterScope=r?.concatOuterScope??!0;for(const n of e){const e=this.caseInsensitive?n.name.toLowerCase():n.name;this.elements.add(e,n)}this.outerScope=t}getElement(e){const t=this.caseInsensitive?e.toLowerCase():e,r=this.elements.get(t)[0];return r||(this.outerScope?this.outerScope.getElement(e):void 0)}getElements(e){const t=this.caseInsensitive?e.toLowerCase():e,r=this.elements.get(t);return(this.concatOuterScope||0===r.length)&&this.outerScope?nr(r).concat(this.outerScope.getElements(e)):nr(r)}getAllElements(){let e=nr(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}},Mw={getElement(){},getElements:()=>tr,getAllElements:()=>tr},jw=class{static{ze(this,"DisposableCache")}constructor(){this.toDispose=[],this.isDisposed=!1}onDispose(e){this.toDispose.push(e)}dispose(){this.throwIfDisposed(),this.clear(),this.isDisposed=!0,this.toDispose.forEach(e=>e.dispose())}throwIfDisposed(){if(this.isDisposed)throw new Error("This cache has already been disposed")}},Fw=class extends jw{static{ze(this,"SimpleCache")}constructor(){super(...arguments),this.cache=new Map}has(e){return this.throwIfDisposed(),this.cache.has(e)}set(e,t){this.throwIfDisposed(),this.cache.set(e,t)}get(e,t){if(this.throwIfDisposed(),this.cache.has(e))return this.cache.get(e);if(t){const r=t();return this.cache.set(e,r),r}}delete(e){return this.throwIfDisposed(),this.cache.delete(e)}clear(){this.throwIfDisposed(),this.cache.clear()}},zw=class extends jw{static{ze(this,"ContextCache")}constructor(e){super(),this.cache=new Map,this.converter=e??(e=>e)}has(e,t){return this.throwIfDisposed(),this.cacheForContext(e).has(t)}set(e,t,r){this.throwIfDisposed(),this.cacheForContext(e).set(t,r)}get(e,t,r){this.throwIfDisposed();const n=this.cacheForContext(e);if(n.has(t))return n.get(t);if(r){const e=r();return n.set(t,e),e}}delete(e,t){return this.throwIfDisposed(),this.cacheForContext(e).delete(t)}clear(e){if(this.throwIfDisposed(),e){const t=this.converter(e);this.cache.delete(t)}else this.cache.clear()}cacheForContext(e){const t=this.converter(e);let r=this.cache.get(t);return r||(r=new Map,this.cache.set(t,r)),r}},Kw=class extends zw{static{ze(this,"DocumentCache")}constructor(e,t){super(e=>e.toString()),t?(this.toDispose.push(e.workspace.DocumentBuilder.onDocumentPhase(t,e=>{this.clear(e.uri.toString())})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((e,t)=>{for(const r of t)this.clear(r)}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((e,t)=>{const r=e.concat(t);for(const n of r)this.clear(n)}))}},Gw=class extends Fw{static{ze(this,"WorkspaceCache")}constructor(e,t){super(),t?(this.toDispose.push(e.workspace.DocumentBuilder.onBuildPhase(t,()=>{this.clear()})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((e,t)=>{t.length>0&&this.clear()}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate(()=>{this.clear()}))}},qw=class{static{ze(this,"DefaultScopeProvider")}constructor(e){this.reflection=e.shared.AstReflection,this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider,this.indexManager=e.shared.workspace.IndexManager,this.globalScopeCache=new Gw(e.shared)}getScope(e){const t=[],r=this.reflection.getReferenceType(e),n=ur(e.container).localSymbols;if(n){let i=e.container;do{n.has(i)&&t.push(n.getStream(i).filter(e=>this.reflection.isSubtype(e.type,r))),i=i.$container}while(i)}let i=this.getGlobalScope(r,e);for(let a=t.length-1;a>=0;a--)i=this.createScope(t[a],i);return i}createScope(e,t,r){return new Dw(nr(e),t,r)}createScopeForNodes(e,t,r){const n=nr(e).map(e=>{const t=this.nameProvider.getName(e);if(t)return this.descriptions.createDescription(e,t)}).nonNullable();return new Dw(n,t,r)}getGlobalScope(e,t){return this.globalScopeCache.get(e,()=>new Lw(this.indexManager.allElements(e)))}};function Uw(e){return"string"==typeof e.$comment}function Ww(e){return"object"==typeof e&&!!e&&("$ref"in e||"$error"in e)}ze(Uw,"isAstNodeWithComment"),ze(Ww,"isIntermediateReference");var Bw,Vw,Hw=class{static{ze(this,"DefaultJsonSerializer")}constructor(e){this.ignoreProperties=new Set(["$container","$containerProperty","$containerIndex","$document","$cstNode"]),this.langiumDocuments=e.shared.workspace.LangiumDocuments,this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider,this.commentProvider=e.documentation.CommentProvider}serialize(e,t){const r=t??{},n=t?.replacer,i=ze((e,t)=>this.replacer(e,t,r),"defaultReplacer"),a=n?(e,t)=>n(e,t,i):i;try{return this.currentDocument=ur(e),JSON.stringify(e,a,t?.space)}finally{this.currentDocument=void 0}}deserialize(e,t){const r=t??{},n=JSON.parse(e);return this.linkNode(n,n,r),n}replacer(e,t,{refText:r,sourceText:n,textRegions:i,comments:a,uriConverter:s}){if(!this.ignoreProperties.has(e)){if(Ut(t)){const e=t.ref,n=r?t.$refText:void 0;if(e){const t=ur(e);let r="";this.currentDocument&&this.currentDocument!==t&&(r=s?s(t.uri,e):t.uri.toString());return{$ref:`${r}#${this.astNodeLocator.getAstNodePath(e)}`,$refText:n}}return{$error:t.error?.message??"Could not resolve reference",$refText:n}}if(Wt(t)){const e=r?t.$refText:void 0,n=[];for(const r of t.items){const e=r.ref,t=ur(r.ref);let i="";this.currentDocument&&this.currentDocument!==t&&(i=s?s(t.uri,e):t.uri.toString());const a=this.astNodeLocator.getAstNodePath(e);n.push(`${i}#${a}`)}return{$refs:n,$refText:e}}if(qt(t)){let r;if(i&&(r=this.addAstNodeRegionWithAssignmentsTo({...t}),e&&!t.$document||!r?.$textRegion||(r.$textRegion.documentURI=this.currentDocument?.uri.toString())),n&&!e&&(r??(r={...t}),r.$sourceText=t.$cstNode?.text),a){r??(r={...t});const e=this.commentProvider.getComment(t);e&&(r.$comment=e.replace(/\r/g,""))}return r??t}return t}}addAstNodeRegionWithAssignmentsTo(e){const t=ze(e=>({offset:e.offset,end:e.end,length:e.length,range:e.range}),"createDocumentSegment");if(e.$cstNode){const r=(e.$textRegion=t(e.$cstNode)).assignments={};return Object.keys(e).filter(e=>!e.startsWith("$")).forEach(n=>{const i=ka(e.$cstNode,n).map(t);0!==i.length&&(r[n]=i)}),e}}linkNode(e,t,r,n,i,a){for(const[o,l]of Object.entries(e))if(Array.isArray(l))for(let n=0;n<l.length;n++){const i=l[n];Ww(i)?l[n]=this.reviveReference(e,o,t,i,r):qt(i)&&this.linkNode(i,t,r,e,o,n)}else Ww(l)?e[o]=this.reviveReference(e,o,t,l,r):qt(l)&&this.linkNode(l,t,r,e,o);const s=e;s.$container=n,s.$containerProperty=i,s.$containerIndex=a}reviveReference(e,t,r,n,i){let a,s=n.$refText,o=n.$error;if(n.$ref){const e=this.getRefNode(r,n.$ref,i.uriConverter);if(qt(e))return s||(s=this.nameProvider.getName(e)),{$refText:s??"",ref:e};o=e}else if(n.$refs){const e=[];for(const t of n.$refs){const n=this.getRefNode(r,t,i.uriConverter);qt(n)&&e.push({ref:n})}if(0!==e.length)return{$refText:s??"",items:e};a={$refText:s??"",items:e},o??(o="Could not resolve multi-reference")}return o?(a??(a={$refText:s??"",ref:void 0}),a.error={info:{container:e,property:t,reference:a},message:o},a):void 0}getRefNode(e,t,r){try{const n=t.indexOf("#");if(0===n){const r=this.astNodeLocator.getAstNode(e,t.substring(1));return r||"Could not resolve path: "+t}if(n<0){const e=r?r(t):Tw.parse(t),n=this.langiumDocuments.getDocument(e);return n?n.parseResult.value:"Could not find document for URI: "+t}const i=r?r(t.substring(0,n)):Tw.parse(t.substring(0,n)),a=this.langiumDocuments.getDocument(i);if(!a)return"Could not find document for URI: "+t;if(n===t.length-1)return a.parseResult.value;const s=this.astNodeLocator.getAstNode(a.parseResult.value,t.substring(n+1));return s||"Could not resolve URI: "+t}catch(n){return String(n)}}},Yw=class{static{ze(this,"DefaultServiceRegistry")}get map(){return this.fileExtensionMap}constructor(e){this.languageIdMap=new Map,this.fileExtensionMap=new Map,this.fileNameMap=new Map,this.textDocuments=e?.workspace.TextDocuments}register(e){const t=e.LanguageMetaData;for(const r of t.fileExtensions)this.fileExtensionMap.has(r)&&console.warn(`The file extension ${r} is used by multiple languages. It is now assigned to '${t.languageId}'.`),this.fileExtensionMap.set(r,e);if(t.fileNames)for(const r of t.fileNames)this.fileNameMap.has(r)&&console.warn(`The file name ${r} is used by multiple languages. It is now assigned to '${t.languageId}'.`),this.fileNameMap.set(r,e);this.languageIdMap.set(t.languageId,e)}getServices(e){if(0===this.languageIdMap.size)throw new Error("The service registry is empty. Use `register` to register the services of a language.");const t=this.textDocuments?.get(e)?.languageId;if(void 0!==t){const e=this.languageIdMap.get(t);if(e)return e}const r=vw.extname(e),n=vw.basename(e),i=this.fileNameMap.get(n)??this.fileExtensionMap.get(r);if(!i)throw t?new Error(`The service registry contains no services for the extension '${r}' for language '${t}'.`):new Error(`The service registry contains no services for the extension '${r}'.`);return i}hasServices(e){try{return this.getServices(e),!0}catch{return!1}}get all(){return Array.from(this.languageIdMap.values())}};function Jw(e){return{code:e}}ze(Jw,"diagnosticData"),(Vw=Bw||(Bw={})).defaults=["fast","slow","built-in"],Vw.all=Vw.defaults;var Xw,Qw,Zw=class{static{ze(this,"ValidationRegistry")}constructor(e){this.entries=new Iw,this.knownCategories=new Set(Bw.defaults),this.entriesBefore=[],this.entriesAfter=[],this.reflection=e.shared.AstReflection}register(e,t=this,r="fast"){if("built-in"===r)throw new Error("The 'built-in' category is reserved for lexer, parser, and linker errors.");this.knownCategories.add(r);for(const[n,i]of Object.entries(e)){const e=i;if(Array.isArray(e))for(const i of e){const e={check:this.wrapValidationException(i,t),category:r};this.addEntry(n,e)}else if("function"==typeof e){const i={check:this.wrapValidationException(e,t),category:r};this.addEntry(n,i)}else Wi()}}wrapValidationException(e,t){return async(r,n,i)=>{await this.handleException(()=>e.call(t,r,n,i),"An error occurred during validation",n,r)}}async handleException(e,t,r,n){try{await e()}catch(i){if(ow(i))throw i;console.error(`${t}:`,i),i instanceof Error&&i.stack&&console.error(i.stack);r("error",`${t}: ${i instanceof Error?i.message:String(i)}`,{node:n})}}addEntry(e,t){if("AstNode"!==e)for(const r of this.reflection.getAllSubTypes(e))this.entries.add(r,t);else this.entries.add("AstNode",t)}getChecks(e,t){let r=nr(this.entries.get(e)).concat(this.entries.get("AstNode"));return t&&(r=r.filter(e=>t.includes(e.category))),r.map(e=>e.check)}registerBeforeDocument(e,t=this){this.entriesBefore.push(this.wrapPreparationException(e,"An error occurred during set-up of the validation",t))}registerAfterDocument(e,t=this){this.entriesAfter.push(this.wrapPreparationException(e,"An error occurred during tear-down of the validation",t))}wrapPreparationException(e,t,r){return async(n,i,a,s)=>{await this.handleException(()=>e.call(r,n,i,a,s),t,i,n)}}get checksBefore(){return this.entriesBefore}get checksAfter(){return this.entriesAfter}getAllValidationCategories(e){return this.knownCategories}},ex=Object.freeze({validateNode:!0,validateChildren:!0}),tx=class{static{ze(this,"DefaultDocumentValidator")}constructor(e){this.validationRegistry=e.validation.ValidationRegistry,this.metadata=e.LanguageMetaData,this.profiler=e.shared.profilers.LangiumProfiler,this.languageId=e.LanguageMetaData.languageId}async validateDocument(e,t={},r=ew.CancellationToken.None){const n=e.parseResult,i=[];if(await lw(r),!t.categories||t.categories.includes("built-in")){if(this.processLexingErrors(n,i,t),t.stopAfterLexingErrors&&i.some(e=>e.data?.code===Xw.LexingError))return i;if(this.processParsingErrors(n,i,t),t.stopAfterParsingErrors&&i.some(e=>e.data?.code===Xw.ParsingError))return i;if(this.processLinkingErrors(e,i,t),t.stopAfterLinkingErrors&&i.some(e=>e.data?.code===Xw.LinkingError))return i}try{i.push(...await this.validateAst(n.value,t,r))}catch(a){if(ow(a))throw a;console.error("An error occurred during validation:",a)}return await lw(r),i}processLexingErrors(e,t,r){const n=[...e.lexerErrors,...e.lexerReport?.diagnostics??[]];for(const i of n){const e=i.severity??"error",r={severity:nx(e),range:{start:{line:i.line-1,character:i.column-1},end:{line:i.line-1,character:i.column+i.length-1}},message:i.message,data:ix(e),source:this.getSource()};t.push(r)}}processParsingErrors(e,t,r){for(const n of e.parserErrors){let e;if(isNaN(n.token.startOffset)){if("previousToken"in n){const t=n.previousToken;if(isNaN(t.startOffset)){const t={line:0,character:0};e={start:t,end:t}}else{const r={line:t.endLine-1,character:t.endColumn};e={start:r,end:r}}}}else e=ki(n.token);if(e){const r={severity:nx("error"),range:e,message:n.message,data:Jw(Xw.ParsingError),source:this.getSource()};t.push(r)}}}processLinkingErrors(e,t,r){for(const n of e.references){const e=n.error;if(e){const r={node:e.info.container,range:n.$refNode?.range,property:e.info.property,index:e.info.index,data:{code:Xw.LinkingError,containerType:e.info.container.$type,property:e.info.property,refText:e.info.reference.$refText}};t.push(this.toDiagnostic("error",e.message,r))}}}async validateAst(e,t,r=ew.CancellationToken.None){const n=[],i=ze((e,t,r)=>{n.push(this.toDiagnostic(e,t,r))},"acceptor");return await this.validateAstBefore(e,t,i,r),await this.validateAstNodes(e,t,i,r),await this.validateAstAfter(e,t,i,r),n}async validateAstBefore(e,t,r,n=ew.CancellationToken.None){const i=this.validationRegistry.checksBefore;for(const a of i)await lw(n),await a(e,r,t.categories??[],n)}async validateAstNodes(e,t,r,n=ew.CancellationToken.None){if(this.profiler?.isActive("validating")){const i=this.profiler.createTask("validating",this.languageId);i.start();try{const a=mr(e).iterator();for(const e of a){i.startSubTask(e.$type);const s=this.validateSingleNodeOptions(e,t);if(s.validateNode)try{const i=this.validationRegistry.getChecks(e.$type,t.categories);for(const t of i)await t(e,r,n)}finally{i.stopSubTask(e.$type)}s.validateChildren||a.prune()}}finally{i.stop()}}else{const i=mr(e).iterator();for(const e of i){await lw(n);const a=this.validateSingleNodeOptions(e,t);if(a.validateNode){const i=this.validationRegistry.getChecks(e.$type,t.categories);for(const t of i)await t(e,r,n)}a.validateChildren||i.prune()}}}validateSingleNodeOptions(e,t){return ex}async validateAstAfter(e,t,r,n=ew.CancellationToken.None){const i=this.validationRegistry.checksAfter;for(const a of i)await lw(n),await a(e,r,t.categories??[],n)}toDiagnostic(e,t,r){return{message:t,range:rx(r),severity:nx(e),code:r.code,codeDescription:r.codeDescription,tags:r.tags,relatedInformation:r.relatedInformation,data:r.data,source:this.getSource()}}getSource(){return this.metadata.languageId}};function rx(e){if(e.range)return e.range;let t;return"string"==typeof e.property?t=Sa(e.node.$cstNode,e.property,e.index):"string"==typeof e.keyword&&(t=Na(e.node.$cstNode,e.keyword,e.index)),t??(t=e.node.$cstNode),t?t.range:{start:{line:0,character:0},end:{line:0,character:0}}}function nx(e){switch(e){case"error":return 1;case"warning":return 2;case"info":return 3;case"hint":return 4;default:throw new Error("Invalid diagnostic severity: "+e)}}function ix(e){switch(e){case"error":return Jw(Xw.LexingError);case"warning":return Jw(Xw.LexingWarning);case"info":return Jw(Xw.LexingInfo);case"hint":return Jw(Xw.LexingHint);default:throw new Error("Invalid diagnostic severity: "+e)}}ze(rx,"getDiagnosticRange"),ze(nx,"toDiagnosticSeverity"),ze(ix,"toDiagnosticData"),(Qw=Xw||(Xw={})).LexingError="lexing-error",Qw.LexingWarning="lexing-warning",Qw.LexingInfo="lexing-info",Qw.LexingHint="lexing-hint",Qw.ParsingError="parsing-error",Qw.LinkingError="linking-error";var ax=class{static{ze(this,"DefaultAstNodeDescriptionProvider")}constructor(e){this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider}createDescription(e,t,r){const n=r??ur(e);t??(t=this.nameProvider.getName(e));const i=this.astNodeLocator.getAstNodePath(e);if(!t)throw new Error(`Node at path ${i} has no name.`);let a;const s=ze(()=>a??(a=Si(this.nameProvider.getNameNode(e)??e.$cstNode)),"nameSegmentGetter");return{node:e,name:t,get nameSegment(){return s()},selectionSegment:Si(e.$cstNode),type:e.$type,documentUri:n.uri,path:i}}},sx=class{static{ze(this,"DefaultReferenceDescriptionProvider")}constructor(e){this.nodeLocator=e.workspace.AstNodeLocator}async createDescriptions(e,t=ew.CancellationToken.None){const r=[],n=e.parseResult.value;for(const i of mr(n))await lw(t),yr(i).forEach(e=>{e.reference.error||r.push(...this.createInfoDescriptions(e))});return r}createInfoDescriptions(e){const t=e.reference;if(t.error||!t.$refNode)return[];let r=[];Ut(t)&&t.$nodeDescription?r=[t.$nodeDescription]:Wt(t)&&(r=t.items.map(e=>e.$nodeDescription).filter(e=>void 0!==e));const n=ur(e.container).uri,i=this.nodeLocator.getAstNodePath(e.container),a=[],s=Si(t.$refNode);for(const o of r)a.push({sourceUri:n,sourcePath:i,targetUri:o.documentUri,targetPath:o.path,segment:s,local:vw.equals(o.documentUri,n)});return a}},ox=class{static{ze(this,"DefaultAstNodeLocator")}constructor(){this.segmentSeparator="/",this.indexSeparator="@"}getAstNodePath(e){if(e.$container){const t=this.getAstNodePath(e.$container),r=this.getPathSegment(e);return t+this.segmentSeparator+r}return""}getPathSegment({$containerProperty:e,$containerIndex:t}){if(!e)throw new Error("Missing '$containerProperty' in AST node.");return void 0!==t?e+this.indexSeparator+t:e}getAstNode(e,t){return t.split(this.segmentSeparator).reduce((e,t)=>{if(!e||0===t.length)return e;const r=t.indexOf(this.indexSeparator);if(r>0){const n=t.substring(0,r),i=parseInt(t.substring(r+1)),a=e[n];return a?.[i]}return e[t]},e)}},lx={};Ue(lx,We(Ze(),1));var cx,ux=class{static{ze(this,"DefaultConfigurationProvider")}constructor(e){this._ready=new dw,this.onConfigurationSectionUpdateEmitter=new lx.Emitter,this.settings={},this.workspaceConfig=!1,this.serviceRegistry=e.ServiceRegistry}get ready(){return this._ready.promise}initialize(e){this.workspaceConfig=e.capabilities.workspace?.configuration??!1}async initialized(e){if(this.workspaceConfig){if(e.register){const t=this.serviceRegistry.all;e.register({section:t.map(e=>this.toSectionName(e.LanguageMetaData.languageId))})}if(e.fetchConfiguration){const t=this.serviceRegistry.all.map(e=>({section:this.toSectionName(e.LanguageMetaData.languageId)})),r=await e.fetchConfiguration(t);t.forEach((e,t)=>{this.updateSectionConfiguration(e.section,r[t])})}}this._ready.resolve()}updateConfiguration(e){"object"==typeof e.settings&&null!==e.settings&&Object.entries(e.settings).forEach(([e,t])=>{this.updateSectionConfiguration(e,t),this.onConfigurationSectionUpdateEmitter.fire({section:e,configuration:t})})}updateSectionConfiguration(e,t){this.settings[e]=t}async getConfiguration(e,t){await this.ready;const r=this.toSectionName(e);if(this.settings[r])return this.settings[r][t]}toSectionName(e){return`${e}`}get onConfigurationSectionUpdate(){return this.onConfigurationSectionUpdateEmitter.event}},dx=We(zt(),1);!function(e){function t(e){return{dispose:ze(async()=>await e(),"dispose")}}ze(t,"create"),e.create=t}(cx||(cx={}));var px=class{static{ze(this,"DefaultDocumentBuilder")}constructor(e){this.updateBuildOptions={validation:{categories:["built-in","fast"]}},this.updateListeners=[],this.buildPhaseListeners=new Iw,this.documentPhaseListeners=new Iw,this.buildState=new Map,this.documentBuildWaiters=new Map,this.currentState=$w.Changed,this.langiumDocuments=e.workspace.LangiumDocuments,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.textDocuments=e.workspace.TextDocuments,this.indexManager=e.workspace.IndexManager,this.fileSystemProvider=e.workspace.FileSystemProvider,this.workspaceManager=()=>e.workspace.WorkspaceManager,this.serviceRegistry=e.ServiceRegistry}async build(e,t={},r=ew.CancellationToken.None){for(const n of e){const e=n.uri.toString();if(n.state===$w.Validated){if("boolean"==typeof t.validation&&t.validation)this.resetToState(n,$w.IndexedReferences);else if("object"==typeof t.validation){const r=this.findMissingValidationCategories(n,t);r.length>0&&(this.buildState.set(e,{completed:!1,options:{validation:{categories:r}},result:this.buildState.get(e)?.result}),n.state=$w.IndexedReferences)}}else this.buildState.delete(e)}this.currentState=$w.Changed,await this.emitUpdate(e.map(e=>e.uri),[]),await this.buildDocuments(e,t,r)}async update(e,t,r=ew.CancellationToken.None){this.currentState=$w.Changed;const n=[];for(const o of t){const e=this.langiumDocuments.deleteDocuments(o);for(const t of e)n.push(t.uri),this.cleanUpDeleted(t)}const i=(await Promise.all(e.map(e=>this.findChangedUris(e)))).flat();for(const o of i){let e=this.langiumDocuments.getDocument(o);void 0===e&&(e=this.langiumDocumentFactory.fromModel({$type:"INVALID"},o),e.state=$w.Changed,this.langiumDocuments.addDocument(e)),this.resetToState(e,$w.Changed)}const a=nr(i).concat(n).map(e=>e.toString()).toSet();this.langiumDocuments.all.filter(e=>!a.has(e.uri.toString())&&this.shouldRelink(e,a)).forEach(e=>this.resetToState(e,$w.ComputedScopes)),await this.emitUpdate(i,n),await lw(r);const s=this.sortDocuments(this.langiumDocuments.all.filter(e=>e.state<$w.Validated||!this.buildState.get(e.uri.toString())?.completed||this.resultsAreIncomplete(e,this.updateBuildOptions)).toArray());await this.buildDocuments(s,this.updateBuildOptions,r)}resultsAreIncomplete(e,t){return this.findMissingValidationCategories(e,t).length>=1}findMissingValidationCategories(e,t){const r=this.buildState.get(e.uri.toString()),n=this.serviceRegistry.getServices(e.uri).validation.ValidationRegistry.getAllValidationCategories(e),i=r?.result?.validationChecks?new Set(r?.result?.validationChecks):r?.completed?n:new Set;return nr(void 0===t||!0===t.validation?n:"object"==typeof t.validation?t.validation.categories??n:[]).filter(e=>!i.has(e)).toArray()}async findChangedUris(e){if(this.langiumDocuments.getDocument(e)??this.textDocuments?.get(e))return[e];try{const t=await this.fileSystemProvider.stat(e);if(t.isDirectory){return await this.workspaceManager().searchFolder(e)}if(this.workspaceManager().shouldIncludeEntry(t))return[e]}catch{}return[]}async emitUpdate(e,t){await Promise.all(this.updateListeners.map(r=>r(e,t)))}sortDocuments(e){let t=0,r=e.length-1;for(;t<r;){for(;t<e.length&&this.hasTextDocument(e[t]);)t++;for(;r>=0&&!this.hasTextDocument(e[r]);)r--;t<r&&([e[t],e[r]]=[e[r],e[t]])}return e}hasTextDocument(e){return Boolean(this.textDocuments?.get(e.uri))}shouldRelink(e,t){return!!e.references.some(e=>void 0!==e.error)||this.indexManager.isAffected(e,t)}onUpdate(e){return this.updateListeners.push(e),cx.create(()=>{const t=this.updateListeners.indexOf(e);t>=0&&this.updateListeners.splice(t,1)})}resetToState(e,t){switch(t){case $w.Changed:case $w.Parsed:this.indexManager.removeContent(e.uri);case $w.IndexedContent:e.localSymbols=void 0;case $w.ComputedScopes:this.serviceRegistry.getServices(e.uri).references.Linker.unlink(e);case $w.Linked:this.indexManager.removeReferences(e.uri);case $w.IndexedReferences:e.diagnostics=void 0,this.buildState.delete(e.uri.toString());case $w.Validated:}e.state>t&&(e.state=t)}cleanUpDeleted(e){this.buildState.delete(e.uri.toString()),this.indexManager.remove(e.uri),e.state=$w.Changed}async buildDocuments(e,t,r){this.prepareBuild(e,t),await this.runCancelable(e,$w.Parsed,r,e=>this.langiumDocumentFactory.update(e,r)),await this.runCancelable(e,$w.IndexedContent,r,e=>this.indexManager.updateContent(e,r)),await this.runCancelable(e,$w.ComputedScopes,r,async e=>{const t=this.serviceRegistry.getServices(e.uri).references.ScopeComputation;e.localSymbols=await t.collectLocalSymbols(e,r)});const n=e.filter(e=>this.shouldLink(e));await this.runCancelable(n,$w.Linked,r,e=>this.serviceRegistry.getServices(e.uri).references.Linker.link(e,r)),await this.runCancelable(n,$w.IndexedReferences,r,e=>this.indexManager.updateReferences(e,r));const i=e.filter(e=>!!this.shouldValidate(e)||(this.markAsCompleted(e),!1));await this.runCancelable(i,$w.Validated,r,async e=>{await this.validate(e,r),this.markAsCompleted(e)})}markAsCompleted(e){const t=this.buildState.get(e.uri.toString());t&&(t.completed=!0)}prepareBuild(e,t){for(const r of e){const e=r.uri.toString(),n=this.buildState.get(e);n&&!n.completed||this.buildState.set(e,{completed:!1,options:t,result:n?.result})}}async runCancelable(e,t,r,n){for(const a of e)a.state<t&&(await lw(r),await n(a),a.state=t,await this.notifyDocumentPhase(a,t,r));const i=e.filter(e=>e.state===t);await this.notifyBuildPhase(i,t,r),this.currentState=t}onBuildPhase(e,t){return this.buildPhaseListeners.add(e,t),cx.create(()=>{this.buildPhaseListeners.delete(e,t)})}onDocumentPhase(e,t){return this.documentPhaseListeners.add(e,t),cx.create(()=>{this.documentPhaseListeners.delete(e,t)})}waitUntil(e,t,r){let n;return t&&"path"in t?n=t:r=t,r??(r=ew.CancellationToken.None),n?this.awaitDocumentState(e,n,r):this.awaitBuilderState(e,r)}awaitDocumentState(e,t,r){const n=this.langiumDocuments.getDocument(t);return n?n.state>=e?Promise.resolve(t):r.isCancellationRequested?Promise.reject(sw):this.currentState>=e&&e>n.state?Promise.reject(new dx.ResponseError(dx.LSPErrorCodes.RequestFailed,`Document state of ${t.toString()} is ${$w[n.state]}, requiring ${$w[e]}, but workspace state is already ${$w[this.currentState]}. Returning undefined.`)):new Promise((n,i)=>{const a=this.onDocumentPhase(e,e=>{vw.equals(e.uri,t)&&(a.dispose(),s.dispose(),n(e.uri))}),s=r.onCancellationRequested(()=>{a.dispose(),s.dispose(),i(sw)})}):Promise.reject(new dx.ResponseError(dx.LSPErrorCodes.ServerCancelled,`No document found for URI: ${t.toString()}`))}awaitBuilderState(e,t){return this.currentState>=e?Promise.resolve():t.isCancellationRequested?Promise.reject(sw):new Promise((r,n)=>{const i=this.onBuildPhase(e,()=>{i.dispose(),a.dispose(),r()}),a=t.onCancellationRequested(()=>{i.dispose(),a.dispose(),n(sw)})})}async notifyDocumentPhase(e,t,r){const n=this.documentPhaseListeners.get(t).slice();for(const a of n)try{await lw(r),await a(e,r)}catch(i){if(!ow(i))throw i}}async notifyBuildPhase(e,t,r){if(0===e.length)return;const n=this.buildPhaseListeners.get(t).slice();for(const i of n)await lw(r),await i(e,r)}shouldLink(e){return this.getBuildOptions(e).eagerLinking??!0}shouldValidate(e){return Boolean(this.getBuildOptions(e).validation)}async validate(e,t){const r=this.serviceRegistry.getServices(e.uri).validation.DocumentValidator,n=this.getBuildOptions(e),i="object"==typeof n.validation?{...n.validation}:{};i.categories=this.findMissingValidationCategories(e,n);const a=await r.validateDocument(e,i,t);e.diagnostics?e.diagnostics.push(...a):e.diagnostics=a;const s=this.buildState.get(e.uri.toString());s&&(s.result??(s.result={}),s.result.validationChecks?s.result.validationChecks=nr(s.result.validationChecks).concat(i.categories).distinct().toArray():s.result.validationChecks=[...i.categories])}getBuildOptions(e){return this.buildState.get(e.uri.toString())?.options??{}}},fx=class{static{ze(this,"DefaultIndexManager")}constructor(e){this.symbolIndex=new Map,this.symbolByTypeIndex=new zw,this.referenceIndex=new Map,this.documents=e.workspace.LangiumDocuments,this.serviceRegistry=e.ServiceRegistry,this.astReflection=e.AstReflection}findAllReferences(e,t){const r=ur(e).uri,n=[];return this.referenceIndex.forEach(e=>{e.forEach(e=>{vw.equals(e.targetUri,r)&&e.targetPath===t&&n.push(e)})}),nr(n)}allElements(e,t){let r=nr(this.symbolIndex.keys());return t&&(r=r.filter(e=>!t||t.has(e))),r.map(t=>this.getFileDescriptions(t,e)).flat()}getFileDescriptions(e,t){if(!t)return this.symbolIndex.get(e)??[];return this.symbolByTypeIndex.get(e,t,()=>(this.symbolIndex.get(e)??[]).filter(e=>this.astReflection.isSubtype(e.type,t)))}remove(e){this.removeContent(e),this.removeReferences(e)}removeContent(e){const t=e.toString();this.symbolIndex.delete(t),this.symbolByTypeIndex.clear(t)}removeReferences(e){const t=e.toString();this.referenceIndex.delete(t)}async updateContent(e,t=ew.CancellationToken.None){const r=this.serviceRegistry.getServices(e.uri),n=await r.references.ScopeComputation.collectExportedSymbols(e,t),i=e.uri.toString();this.symbolIndex.set(i,n),this.symbolByTypeIndex.clear(i)}async updateReferences(e,t=ew.CancellationToken.None){const r=this.serviceRegistry.getServices(e.uri),n=await r.workspace.ReferenceDescriptionProvider.createDescriptions(e,t);this.referenceIndex.set(e.uri.toString(),n)}isAffected(e,t){const r=this.referenceIndex.get(e.uri.toString());return!!r&&r.some(e=>!e.local&&t.has(e.targetUri.toString()))}},hx=class{static{ze(this,"DefaultWorkspaceManager")}constructor(e){this.initialBuildOptions={},this._ready=new dw,this.serviceRegistry=e.ServiceRegistry,this.langiumDocuments=e.workspace.LangiumDocuments,this.documentBuilder=e.workspace.DocumentBuilder,this.fileSystemProvider=e.workspace.FileSystemProvider,this.mutex=e.workspace.WorkspaceLock}get ready(){return this._ready.promise}get workspaceFolders(){return this.folders}initialize(e){this.folders=e.workspaceFolders??void 0}initialized(e){return this.mutex.write(e=>this.initializeWorkspace(this.folders??[],e))}async initializeWorkspace(e,t=ew.CancellationToken.None){const r=await this.performStartup(e);await lw(t),await this.documentBuilder.build(r,this.initialBuildOptions,t)}async performStartup(e){const t=[],r=ze(e=>{t.push(e),this.langiumDocuments.hasDocument(e.uri)||this.langiumDocuments.addDocument(e)},"collector");await this.loadAdditionalDocuments(e,r);const n=[];await Promise.all(e.map(e=>this.getRootFolder(e)).map(async e=>this.traverseFolder(e,n)));const i=nr(n).distinct(e=>e.toString()).filter(e=>!this.langiumDocuments.hasDocument(e));return await this.loadWorkspaceDocuments(i,r),this._ready.resolve(),t}async loadWorkspaceDocuments(e,t){await Promise.all(e.map(async e=>{const r=await this.langiumDocuments.getOrCreateDocument(e);t(r)}))}loadAdditionalDocuments(e,t){return Promise.resolve()}getRootFolder(e){return Tw.parse(e.uri)}async traverseFolder(e,t){try{const r=await this.fileSystemProvider.readDirectory(e);await Promise.all(r.map(async e=>{this.shouldIncludeEntry(e)&&(e.isDirectory?await this.traverseFolder(e.uri,t):e.isFile&&t.push(e.uri))}))}catch(r){console.error("Failure to read directory content of "+e.toString(!0),r)}}async searchFolder(e){const t=[];return await this.traverseFolder(e,t),t}shouldIncludeEntry(e){const t=vw.basename(e.uri);return!t.startsWith(".")&&(e.isDirectory?"node_modules"!==t&&"out"!==t:!!e.isFile&&this.serviceRegistry.hasServices(e.uri))}},mx=class{static{ze(this,"DefaultLexerErrorMessageProvider")}buildUnexpectedCharactersMessage(e,t,r,n,i){return ky.buildUnexpectedCharactersMessage(e,t,r,n,i)}buildUnableToPopLexerModeMessage(e){return ky.buildUnableToPopLexerModeMessage(e)}},gx={mode:"full"},yx=class{static{ze(this,"DefaultLexer")}constructor(e){this.errorMessageProvider=e.parser.LexerErrorMessageProvider,this.tokenBuilder=e.parser.TokenBuilder;const t=this.tokenBuilder.buildTokens(e.Grammar,{caseInsensitive:e.LanguageMetaData.caseInsensitive});this.tokenTypes=this.toTokenTypeDictionary(t);const r=Rx(t)?Object.values(t):t,n="production"===e.LanguageMetaData.mode;this.chevrotainLexer=new wy(r,{positionTracking:"full",skipValidations:n,errorMessageProvider:this.errorMessageProvider})}get definition(){return this.tokenTypes}tokenize(e,t=gx){const r=this.chevrotainLexer.tokenize(e);return{tokens:r.tokens,errors:r.errors,hidden:r.groups.hidden??[],report:this.tokenBuilder.flushLexingReport?.(e)}}toTokenTypeDictionary(e){if(Rx(e))return e;const t=Tx(e)?Object.values(e.modes).flat():e,r={};return t.forEach(e=>r[e.name]=e),r}};function vx(e){return Array.isArray(e)&&(0===e.length||"name"in e[0])}function Tx(e){return e&&"modes"in e&&"defaultMode"in e}function Rx(e){return!vx(e)&&!Tx(e)}function $x(e,t,r){let n,i;"string"==typeof e?(i=t,n=r):(i=e.range.start,n=t),i||(i=o.create(0,0));return _x({index:0,tokens:kx({lines:Ex(e),position:i,options:Fx(n)}),position:i})}function bx(e,t){const r=Fx(t),n=Ex(e);if(0===n.length)return!1;const i=n[0],a=n[n.length-1],s=r.start,o=r.end;return Boolean(s?.exec(i))&&Boolean(o?.exec(a))}function Ex(e){let t="";t="string"==typeof e?e:e.text;return t.split(la)}ze(vx,"isTokenTypeArray"),ze(Tx,"isIMultiModeLexerDefinition"),ze(Rx,"isTokenTypeDictionary"),Je(),ze($x,"parseJSDoc"),ze(bx,"isJSDoc"),ze(Ex,"getLines");var Cx=/\s*(@([\p{L}][\p{L}\p{N}]*)?)/uy,Ax=/\{(@[\p{L}][\p{L}\p{N}]*)(\s*)([^\r\n}]+)?\}/gu;function kx(e){const t=[];let r=e.position.line,n=e.position.character;for(let i=0;i<e.lines.length;i++){const a=0===i,s=i===e.lines.length-1;let c=e.lines[i],u=0;if(a&&e.options.start){const t=e.options.start?.exec(c);t&&(u=t.index+t[0].length)}else{const t=e.options.line?.exec(c);t&&(u=t.index+t[0].length)}if(s){const t=e.options.end?.exec(c);t&&(c=c.substring(0,t.index))}c=c.substring(0,Ix(c));if(Nx(c,u)>=c.length){if(t.length>0){const e=o.create(r,n);t.push({type:"break",content:"",range:l.create(e,e)})}}else{Cx.lastIndex=u;const e=Cx.exec(c);if(e){const i=e[0],a=e[1],s=o.create(r,n+u),d=o.create(r,n+u+i.length);t.push({type:"tag",content:a,range:l.create(s,d)}),u+=i.length,u=Nx(c,u)}if(u<c.length){const e=c.substring(u),i=Array.from(e.matchAll(Ax));t.push(...Sx(i,e,r,n+u))}}r++,n=0}return t.length>0&&"break"===t[t.length-1].type?t.slice(0,-1):t}function Sx(e,t,r,n){const i=[];if(0===e.length){const e=o.create(r,n),a=o.create(r,n+t.length);i.push({type:"text",content:t,range:l.create(e,a)})}else{let a=0;for(const c of e){const e=c.index,s=t.substring(a,e);s.length>0&&i.push({type:"text",content:t.substring(a,e),range:l.create(o.create(r,a+n),o.create(r,e+n))});let u=s.length+1;const d=c[1];if(i.push({type:"inline-tag",content:d,range:l.create(o.create(r,a+u+n),o.create(r,a+u+d.length+n))}),u+=d.length,4===c.length){u+=c[2].length;const e=c[3];i.push({type:"text",content:e,range:l.create(o.create(r,a+u+n),o.create(r,a+u+e.length+n))})}else i.push({type:"text",content:"",range:l.create(o.create(r,a+u+n),o.create(r,a+u+n))});a=e+c[0].length}const s=t.substring(a);s.length>0&&i.push({type:"text",content:s,range:l.create(o.create(r,a+n),o.create(r,a+n+s.length))})}return i}ze(kx,"tokenize"),ze(Sx,"buildInlineTokens");var wx=/\S/,xx=/\s*$/;function Nx(e,t){const r=e.substring(t).match(wx);return r?t+r.index:e.length}function Ix(e){const t=e.match(xx);if(t&&"number"==typeof t.index)return t.index}function _x(e){const t=o.create(e.position.line,e.position.character);if(0===e.tokens.length)return new Kx([],l.create(t,t));const r=[];for(;e.index<e.tokens.length;){const t=Px(e,r[r.length-1]);t&&r.push(t)}const n=r[0]?.range.start??t,i=r[r.length-1]?.range.end??t;return new Kx(r,l.create(n,i))}function Px(e,t){const r=e.tokens[e.index];return"tag"===r.type?Mx(e,!1):"text"===r.type||"inline-tag"===r.type?Ox(e):(Dx(r,t),void e.index++)}function Dx(e,t){if(t){const r=new Bx("",e.range);"inlines"in t?t.inlines.push(r):t.content.inlines.push(r)}}function Ox(e){let t=e.tokens[e.index];const r=t;let n=t;const i=[];for(;t&&"break"!==t.type&&"tag"!==t.type;)i.push(Lx(e)),n=t,t=e.tokens[e.index];return new Wx(i,l.create(r.range.start,n.range.end))}function Lx(e){return"inline-tag"===e.tokens[e.index].type?Mx(e,!0):jx(e)}function Mx(e,t){const r=e.tokens[e.index++],n=r.content.substring(1),i=e.tokens[e.index];if("text"===i?.type){if(t){const i=jx(e);return new Gx(n,new Wx([i],i.range),t,l.create(r.range.start,i.range.end))}{const i=Ox(e);return new Gx(n,i,t,l.create(r.range.start,i.range.end))}}{const e=r.range;return new Gx(n,new Wx([],e),t,e)}}function jx(e){const t=e.tokens[e.index++];return new Bx(t.content,t.range)}function Fx(e){if(!e)return Fx({start:"/**",end:"*/",line:"*"});const{start:t,end:r,line:n}=e;return{start:zx(t,!0),end:zx(r,!1),line:zx(n,!0)}}function zx(e,t){if("string"==typeof e||"object"==typeof e){const r="string"==typeof e?ga(e):e.source;return t?new RegExp(`^\\s*${r}`):new RegExp(`\\s*${r}\\s*$`)}return e}ze(Nx,"skipWhitespace"),ze(Ix,"lastCharacter"),ze(_x,"parseJSDocComment"),ze(Px,"parseJSDocElement"),ze(Dx,"appendEmptyLine"),ze(Ox,"parseJSDocText"),ze(Lx,"parseJSDocInline"),ze(Mx,"parseJSDocTag"),ze(jx,"parseJSDocLine"),ze(Fx,"normalizeOptions"),ze(zx,"normalizeOption");var Kx=class{static{ze(this,"JSDocCommentImpl")}constructor(e,t){this.elements=e,this.range=t}getTag(e){return this.getAllTags().find(t=>t.name===e)}getTags(e){return this.getAllTags().filter(t=>t.name===e)}getAllTags(){return this.elements.filter(e=>"name"in e)}toString(){let e="";for(const t of this.elements)if(0===e.length)e=t.toString();else{const r=t.toString();e+=Vx(e)+r}return e.trim()}toMarkdown(e){let t="";for(const r of this.elements)if(0===t.length)t=r.toMarkdown(e);else{const n=r.toMarkdown(e);t+=Vx(t)+n}return t.trim()}},Gx=class{static{ze(this,"JSDocTagImpl")}constructor(e,t,r,n){this.name=e,this.content=t,this.inline=r,this.range=n}toString(){let e=`@${this.name}`;const t=this.content.toString();return 1===this.content.inlines.length?e=`${e} ${t}`:this.content.inlines.length>1&&(e=`${e}\n${t}`),this.inline?`{${e}}`:e}toMarkdown(e){return e?.renderTag?.(this)??this.toMarkdownDefault(e)}toMarkdownDefault(e){const t=this.content.toMarkdown(e);if(this.inline){const r=qx(this.name,t,e??{});if("string"==typeof r)return r}let r="";"italic"===e?.tag||void 0===e?.tag?r="*":"bold"===e?.tag?r="**":"bold-italic"===e?.tag&&(r="***");let n=`${r}@${this.name}${r}`;return 1===this.content.inlines.length?n=`${n} \u2014 ${t}`:this.content.inlines.length>1&&(n=`${n}\n${t}`),this.inline?`{${n}}`:n}};function qx(e,t,r){if("linkplain"===e||"linkcode"===e||"link"===e){const n=t.indexOf(" ");let i=t;if(n>0){const e=Nx(t,n);i=t.substring(e),t=t.substring(0,n)}("linkcode"===e||"link"===e&&"code"===r.link)&&(i=`\`${i}\``);return r.renderLink?.(t,i)??Ux(t,i)}}function Ux(e,t){try{return Tw.parse(e,!0),`[${t}](${e})`}catch{return e}}ze(qx,"renderInlineTag"),ze(Ux,"renderLinkDefault");var Wx=class{static{ze(this,"JSDocTextImpl")}constructor(e,t){this.inlines=e,this.range=t}toString(){let e="";for(let t=0;t<this.inlines.length;t++){const r=this.inlines[t],n=this.inlines[t+1];e+=r.toString(),n&&n.range.start.line>r.range.start.line&&(e+="\n")}return e}toMarkdown(e){let t="";for(let r=0;r<this.inlines.length;r++){const n=this.inlines[r],i=this.inlines[r+1];t+=n.toMarkdown(e),i&&i.range.start.line>n.range.start.line&&(t+="\n")}return t}},Bx=class{static{ze(this,"JSDocLineImpl")}constructor(e,t){this.text=e,this.range=t}toString(){return this.text}toMarkdown(){return this.text}};function Vx(e){return e.endsWith("\n")?"\n":"\n\n"}ze(Vx,"fillNewlines");var Hx,Yx=class{static{ze(this,"JSDocDocumentationProvider")}constructor(e){this.indexManager=e.shared.workspace.IndexManager,this.commentProvider=e.documentation.CommentProvider}getDocumentation(e){const t=this.commentProvider.getComment(e);if(t&&bx(t)){return $x(t).toMarkdown({renderLink:ze((t,r)=>this.documentationLinkRenderer(e,t,r),"renderLink"),renderTag:ze(t=>this.documentationTagRenderer(e,t),"renderTag")})}}documentationLinkRenderer(e,t,r){const n=this.findNameInLocalSymbols(e,t)??this.findNameInGlobalScope(e,t);if(n&&n.nameSegment){const e=n.nameSegment.range.start.line+1,t=n.nameSegment.range.start.character+1;return`[${r}](${n.documentUri.with({fragment:`L${e},${t}`}).toString()})`}}documentationTagRenderer(e,t){}findNameInLocalSymbols(e,t){const r=ur(e).localSymbols;if(!r)return;let n=e;do{const e=r.getStream(n).find(e=>e.name===t);if(e)return e;n=n.$container}while(n)}findNameInGlobalScope(e,t){return this.indexManager.allElements().find(e=>e.name===t)}},Jx=class{static{ze(this,"DefaultCommentProvider")}constructor(e){this.grammarConfig=()=>e.parser.GrammarConfig}getComment(e){return Uw(e)?e.$comment:_i(e.$cstNode,this.grammarConfig().multilineCommentRules)?.text}},Xx=class{static{ze(this,"DefaultAsyncParser")}constructor(e){this.syncParser=e.parser.LangiumParser}parse(e,t){return Promise.resolve(this.syncParser.parse(e))}},Qx=class{static{ze(this,"AbstractThreadedAsyncParser")}constructor(e){this.threadCount=8,this.terminationDelay=200,this.workerPool=[],this.queue=[],this.hydrator=e.serializer.Hydrator}initializeWorkers(){for(;this.workerPool.length<this.threadCount;){const e=this.createWorker();e.onReady(()=>{if(this.queue.length>0){const t=this.queue.shift();t&&(e.lock(),t.resolve(e))}}),this.workerPool.push(e)}}async parse(e,t){const r=await this.acquireParserWorker(t),n=new dw;let i;const a=t.onCancellationRequested(()=>{i=setTimeout(()=>{this.terminateWorker(r)},this.terminationDelay)});return r.parse(e).then(e=>{const t=this.hydrator.hydrate(e);n.resolve(t)}).catch(e=>{n.reject(e)}).finally(()=>{a.dispose(),clearTimeout(i)}),n.promise}terminateWorker(e){e.terminate();const t=this.workerPool.indexOf(e);t>=0&&this.workerPool.splice(t,1)}async acquireParserWorker(e){this.initializeWorkers();for(const r of this.workerPool)if(r.ready)return r.lock(),r;const t=new dw;return e.onCancellationRequested(()=>{const e=this.queue.indexOf(t);e>=0&&this.queue.splice(e,1),t.reject(sw)}),this.queue.push(t),t.promise}},Zx=class{static{ze(this,"ParserWorker")}get ready(){return this._ready}get onReady(){return this.onReadyEmitter.event}constructor(e,t,r,n){this.onReadyEmitter=new lx.Emitter,this.deferred=new dw,this._ready=!0,this._parsing=!1,this.sendMessage=e,this._terminate=n,t(e=>{const t=e;this.deferred.resolve(t),this.unlock()}),r(e=>{this.deferred.reject(e),this.unlock()})}terminate(){this.deferred.reject(sw),this._terminate()}lock(){this._ready=!1}unlock(){this._parsing=!1,this._ready=!0,this.onReadyEmitter.fire()}parse(e){if(this._parsing)throw new Error("Parser worker is busy");return this._parsing=!0,this.deferred=new dw,this.sendMessage(e),this.deferred.promise}},eN=class{static{ze(this,"DefaultWorkspaceLock")}constructor(){this.previousTokenSource=new ew.CancellationTokenSource,this.writeQueue=[],this.readQueue=[],this.done=!0}write(e){this.cancelWrite();const t=iw();return this.previousTokenSource=t,this.enqueue(this.writeQueue,e,t.token)}read(e){return this.enqueue(this.readQueue,e)}enqueue(e,t,r=ew.CancellationToken.None){const n=new dw,i={action:t,deferred:n,cancellationToken:r};return e.push(i),this.performNextOperation(),n.promise}async performNextOperation(){if(!this.done)return;const e=[];if(this.writeQueue.length>0)e.push(this.writeQueue.shift());else{if(!(this.readQueue.length>0))return;e.push(...this.readQueue.splice(0,this.readQueue.length))}this.done=!1,await Promise.all(e.map(async({action:e,deferred:t,cancellationToken:r})=>{try{const n=await Promise.resolve().then(()=>e(r));t.resolve(n)}catch(n){ow(n)?t.resolve(void 0):t.reject(n)}})),this.done=!0,this.performNextOperation()}cancelWrite(){this.previousTokenSource.cancel()}},tN=class{static{ze(this,"DefaultHydrator")}constructor(e){this.grammarElementIdMap=new _w,this.tokenTypeIdMap=new _w,this.grammar=e.Grammar,this.lexer=e.parser.Lexer,this.linker=e.references.Linker}dehydrate(e){return{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport?this.dehydrateLexerReport(e.lexerReport):void 0,parserErrors:e.parserErrors.map(e=>({...e,message:e.message})),value:this.dehydrateAstNode(e.value,this.createDehyrationContext(e.value))}}dehydrateLexerReport(e){return e}createDehyrationContext(e){const t=new Map,r=new Map;for(const n of mr(e))t.set(n,{});if(e.$cstNode)for(const n of Ei(e.$cstNode))r.set(n,{});return{astNodes:t,cstNodes:r}}dehydrateAstNode(e,t){const r=t.astNodes.get(e);r.$type=e.$type,r.$containerIndex=e.$containerIndex,r.$containerProperty=e.$containerProperty,void 0!==e.$cstNode&&(r.$cstNode=this.dehydrateCstNode(e.$cstNode,t));for(const[n,i]of Object.entries(e))if(!n.startsWith("$"))if(Array.isArray(i)){const e=[];r[n]=e;for(const r of i)qt(r)?e.push(this.dehydrateAstNode(r,t)):Ut(r)?e.push(this.dehydrateReference(r,t)):e.push(r)}else qt(i)?r[n]=this.dehydrateAstNode(i,t):Ut(i)?r[n]=this.dehydrateReference(i,t):void 0!==i&&(r[n]=i);return r}dehydrateReference(e,t){const r={};return r.$refText=e.$refText,e.$refNode&&(r.$refNode=t.cstNodes.get(e.$refNode)),r}dehydrateCstNode(e,t){const r=t.cstNodes.get(e);return Xt(e)?r.fullText=e.fullText:r.grammarSource=this.getGrammarElementId(e.grammarSource),r.hidden=e.hidden,r.astNode=t.astNodes.get(e.astNode),Yt(e)?r.content=e.content.map(e=>this.dehydrateCstNode(e,t)):Jt(e)&&(r.tokenType=e.tokenType.name,r.offset=e.offset,r.length=e.length,r.startLine=e.range.start.line,r.startColumn=e.range.start.character,r.endLine=e.range.end.line,r.endColumn=e.range.end.character),r}hydrate(e){const t=e.value,r=this.createHydrationContext(t);return"$cstNode"in t&&this.hydrateCstNode(t.$cstNode,r),{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport,parserErrors:e.parserErrors,value:this.hydrateAstNode(t,r)}}createHydrationContext(e){const t=new Map,r=new Map;for(const i of mr(e))t.set(i,{});let n;if(e.$cstNode)for(const i of Ei(e.$cstNode)){let e;"fullText"in i?(e=new vS(i.fullText),n=e):"content"in i?e=new gS:"tokenType"in i&&(e=this.hydrateCstLeafNode(i)),e&&(r.set(i,e),e.root=n)}return{astNodes:t,cstNodes:r}}hydrateAstNode(e,t){const r=t.astNodes.get(e);r.$type=e.$type,r.$containerIndex=e.$containerIndex,r.$containerProperty=e.$containerProperty,e.$cstNode&&(r.$cstNode=t.cstNodes.get(e.$cstNode));for(const[n,i]of Object.entries(e))if(!n.startsWith("$"))if(Array.isArray(i)){const e=[];r[n]=e;for(const a of i)qt(a)?e.push(this.setParent(this.hydrateAstNode(a,t),r)):Ut(a)?e.push(this.hydrateReference(a,r,n,t)):e.push(a)}else qt(i)?r[n]=this.setParent(this.hydrateAstNode(i,t),r):Ut(i)?r[n]=this.hydrateReference(i,r,n,t):void 0!==i&&(r[n]=i);return r}setParent(e,t){return e.$container=t,e}hydrateReference(e,t,r,n){return this.linker.buildReference(t,r,n.cstNodes.get(e.$refNode),e.$refText)}hydrateCstNode(e,t,r=0){const n=t.cstNodes.get(e);if("number"==typeof e.grammarSource&&(n.grammarSource=this.getGrammarElement(e.grammarSource)),n.astNode=t.astNodes.get(e.astNode),Yt(n))for(const i of e.content){const e=this.hydrateCstNode(i,t,r++);n.content.push(e)}return n}hydrateCstLeafNode(e){const t=this.getTokenType(e.tokenType),r=e.offset,n=e.length,i=e.startLine,a=e.startColumn,s=e.endLine,o=e.endColumn,l=e.hidden;return new mS(r,n,{start:{line:i,character:a},end:{line:s,character:o}},t,l)}getTokenType(e){return this.lexer.definition[e]}getGrammarElementId(e){if(e)return 0===this.grammarElementIdMap.size&&this.createGrammarElementIdMap(),this.grammarElementIdMap.get(e)}getGrammarElement(e){0===this.grammarElementIdMap.size&&this.createGrammarElementIdMap();return this.grammarElementIdMap.getKey(e)}createGrammarElementIdMap(){let e=0;for(const t of mr(this.grammar))Cr(t)&&this.grammarElementIdMap.set(t,e++)}};function rN(e){return{documentation:{CommentProvider:ze(e=>new Jx(e),"CommentProvider"),DocumentationProvider:ze(e=>new Yx(e),"DocumentationProvider")},parser:{AsyncParser:ze(e=>new Xx(e),"AsyncParser"),GrammarConfig:ze(e=>is(e),"GrammarConfig"),LangiumParser:ze(e=>YS(e),"LangiumParser"),CompletionParser:ze(e=>HS(e),"CompletionParser"),ValueConverter:ze(()=>new ZS,"ValueConverter"),TokenBuilder:ze(()=>new QS,"TokenBuilder"),Lexer:ze(e=>new yx(e),"Lexer"),ParserErrorMessageProvider:ze(()=>new AS,"ParserErrorMessageProvider"),LexerErrorMessageProvider:ze(()=>new mx,"LexerErrorMessageProvider")},workspace:{AstNodeLocator:ze(()=>new ox,"AstNodeLocator"),AstNodeDescriptionProvider:ze(e=>new ax(e),"AstNodeDescriptionProvider"),ReferenceDescriptionProvider:ze(e=>new sx(e),"ReferenceDescriptionProvider")},references:{Linker:ze(e=>new Sw(e),"Linker"),NameProvider:ze(()=>new xw,"NameProvider"),ScopeProvider:ze(e=>new qw(e),"ScopeProvider"),ScopeComputation:ze(e=>new Pw(e),"ScopeComputation"),References:ze(e=>new Nw(e),"References")},serializer:{Hydrator:ze(e=>new tN(e),"Hydrator"),JsonSerializer:ze(e=>new Hw(e),"JsonSerializer")},validation:{DocumentValidator:ze(e=>new tx(e),"DocumentValidator"),ValidationRegistry:ze(e=>new Zw(e),"ValidationRegistry")},shared:ze(()=>e.shared,"shared")}}function nN(e){return{ServiceRegistry:ze(e=>new Yw(e),"ServiceRegistry"),workspace:{LangiumDocuments:ze(e=>new Aw(e),"LangiumDocuments"),LangiumDocumentFactory:ze(e=>new Cw(e),"LangiumDocumentFactory"),DocumentBuilder:ze(e=>new px(e),"DocumentBuilder"),IndexManager:ze(e=>new fx(e),"IndexManager"),WorkspaceManager:ze(e=>new hx(e),"WorkspaceManager"),FileSystemProvider:ze(t=>e.fileSystemProvider(t),"FileSystemProvider"),WorkspaceLock:ze(()=>new eN,"WorkspaceLock"),ConfigurationProvider:ze(e=>new ux(e),"ConfigurationProvider")},profilers:{}}}function iN(e,t,r,n,i,a,s,o,l){return oN([e,t,r,n,i,a,s,o,l].reduce(uN,{}))}ze(rN,"createDefaultCoreModule"),ze(nN,"createDefaultSharedCoreModule"),(Hx||(Hx={})).merge=(e,t)=>uN(uN({},e),t),ze(iN,"inject");var aN=Symbol("isProxy");function sN(e){if(e&&e[aN])for(const t of Object.values(e))sN(t);return e}function oN(e,t){const r=new Proxy({},{deleteProperty:ze(()=>!1,"deleteProperty"),set:ze(()=>{throw new Error("Cannot set property on injected service container")},"set"),get:ze((n,i)=>i===aN||cN(n,i,e,t||r),"get"),getOwnPropertyDescriptor:ze((n,i)=>(cN(n,i,e,t||r),Object.getOwnPropertyDescriptor(n,i)),"getOwnPropertyDescriptor"),has:ze((t,r)=>r in e,"has"),ownKeys:ze(()=>[...Object.getOwnPropertyNames(e)],"ownKeys")});return r}ze(sN,"eagerLoad"),ze(oN,"_inject");var lN=Symbol();function cN(e,t,r,n){if(t in e){if(e[t]instanceof Error)throw new Error("Construction failure. Please make sure that your dependencies are constructable. Cause: "+e[t]);if(e[t]===lN)throw new Error('Cycle detected. Please make "'+String(t)+'" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies');return e[t]}if(t in r){const a=r[t];e[t]=lN;try{e[t]="function"==typeof a?a(n):oN(a,n)}catch(i){throw e[t]=i instanceof Error?i:void 0,i}return e[t]}}function uN(e,t){if(t)for(const[r,n]of Object.entries(t))if(null!=n)if("object"==typeof n){const t=e[r];e[r]=uN("object"==typeof t&&null!==t?t:{},n)}else e[r]=n;return e}ze(cN,"_resolve"),ze(uN,"_merge");var dN,pN,fN={indentTokenName:"INDENT",dedentTokenName:"DEDENT",whitespaceTokenName:"WS",ignoreIndentationDelimiters:[]};(pN=dN||(dN={})).REGULAR="indentation-sensitive",pN.IGNORE_INDENTATION="ignore-indentation";var hN=class extends QS{static{ze(this,"IndentationAwareTokenBuilder")}constructor(e=fN){super(),this.indentationStack=[0],this.whitespaceRegExp=/[ \t]+/y,this.options={...fN,...e},this.indentTokenType=Fy({name:this.options.indentTokenName,pattern:this.indentMatcher.bind(this),line_breaks:!1}),this.dedentTokenType=Fy({name:this.options.dedentTokenName,pattern:this.dedentMatcher.bind(this),line_breaks:!1})}buildTokens(e,t){const r=super.buildTokens(e,t);if(!vx(r))throw new Error("Invalid tokens built by default builder");const{indentTokenName:n,dedentTokenName:i,whitespaceTokenName:a,ignoreIndentationDelimiters:s}=this.options;let o,l,c;const u=[];for(const d of r){for(const[e,t]of s)d.name===e?d.PUSH_MODE=dN.IGNORE_INDENTATION:d.name===t&&(d.POP_MODE=!0);d.name===i?o=d:d.name===n?l=d:d.name===a?c=d:u.push(d)}if(!o||!l||!c)throw new Error("Some indentation/whitespace tokens not found!");if(s.length>0){return{modes:{[dN.REGULAR]:[o,l,...u,c],[dN.IGNORE_INDENTATION]:[...u,c]},defaultMode:dN.REGULAR}}return[o,l,c,...u]}flushLexingReport(e){return{...super.flushLexingReport(e),remainingDedents:this.flushRemainingDedents(e)}}isStartOfLine(e,t){return 0===t||"\r\n".includes(e[t-1])}matchWhitespace(e,t,r,n){this.whitespaceRegExp.lastIndex=t;const i=this.whitespaceRegExp.exec(e);return{currIndentLevel:i?.[0].length??0,prevIndentLevel:this.indentationStack.at(-1),match:i}}createIndentationTokenInstance(e,t,r,n){const i=this.getLineNumber(t,n);return Gy(e,r,n,n+r.length,i,i,1,r.length)}getLineNumber(e,t){return e.substring(0,t).split(/\r\n|\r|\n/).length}indentMatcher(e,t,r,n){if(!this.isStartOfLine(e,t))return null;const{currIndentLevel:i,prevIndentLevel:a,match:s}=this.matchWhitespace(e,t,r,n);return i<=a?null:(this.indentationStack.push(i),s)}dedentMatcher(e,t,r,n){if(!this.isStartOfLine(e,t))return null;const{currIndentLevel:i,prevIndentLevel:a,match:s}=this.matchWhitespace(e,t,r,n);if(i>=a)return null;const o=this.indentationStack.lastIndexOf(i);if(-1===o)return this.diagnostics.push({severity:"error",message:`Invalid dedent level ${i} at offset: ${t}. Current indentation stack: ${this.indentationStack}`,offset:t,length:s?.[0]?.length??0,line:this.getLineNumber(e,t),column:1}),null;const l=this.indentationStack.length-o-1,c=e.substring(0,t).match(/[\r\n]+$/)?.[0].length??1;for(let u=0;u<l;u++){const n=this.createIndentationTokenInstance(this.dedentTokenType,e,"",t-(c-1));r.push(n),this.indentationStack.pop()}return null}buildTerminalToken(e){const t=super.buildTerminalToken(e),{indentTokenName:r,dedentTokenName:n,whitespaceTokenName:i}=this.options;return t.name===r?this.indentTokenType:t.name===n?this.dedentTokenType:t.name===i?Fy({name:i,pattern:this.whitespaceRegExp,group:wy.SKIPPED}):t}flushRemainingDedents(e){const t=[];for(;this.indentationStack.length>1;)t.push(this.createIndentationTokenInstance(this.dedentTokenType,e,"",e.length)),this.indentationStack.pop();return this.indentationStack=[0],t}},mN=class extends yx{static{ze(this,"IndentationAwareLexer")}constructor(e){if(super(e),!(e.parser.TokenBuilder instanceof hN))throw new Error("IndentationAwareLexer requires an accompanying IndentationAwareTokenBuilder");this.indentationTokenBuilder=e.parser.TokenBuilder}tokenize(e,t=gx){const r=super.tokenize(e),n=r.report;"full"===t?.mode&&r.tokens.push(...n.remainingDedents),n.remainingDedents=[];const{indentTokenType:i,dedentTokenType:a}=this.indentationTokenBuilder,s=i.tokenTypeIdx,o=a.tokenTypeIdx,l=[],c=r.tokens.length-1;for(let u=0;u<c;u++){const e=r.tokens[u],t=r.tokens[u+1];e.tokenTypeIdx!==s||t.tokenTypeIdx!==o?l.push(e):u++}return c>=0&&l.push(r.tokens[c]),r.tokens=l,r}},gN={};Ge(gN,{AstUtils:()=>sr,BiMap:()=>_w,Cancellation:()=>ew,ContextCache:()=>zw,CstUtils:()=>Gt,DONE_RESULT:()=>rr,Deferred:()=>dw,Disposable:()=>cx,DisposableCache:()=>jw,DocumentCache:()=>Kw,EMPTY_STREAM:()=>tr,ErrorWithLocation:()=>Ui,GrammarUtils:()=>qi,MultiMap:()=>Iw,OperationCancelled:()=>sw,Reduction:()=>ir,RegExpUtils:()=>Vi,SimpleCache:()=>Fw,StreamImpl:()=>Qt,TreeStreamImpl:()=>ar,URI:()=>Tw,UriTrie:()=>Ew,UriUtils:()=>vw,WorkspaceCache:()=>Gw,assertCondition:()=>Bi,assertUnreachable:()=>Wi,delayNextTick:()=>tw,interruptAndCheck:()=>lw,isOperationCancelled:()=>ow,loadGrammarFromJson:()=>bN,setInterruptionPeriod:()=>aw,startCancelableOperation:()=>iw,stream:()=>nr}),Ue(gN,lx);var yN=class{static{ze(this,"EmptyFileSystemProvider")}stat(e){throw new Error("No file system is available.")}statSync(e){throw new Error("No file system is available.")}async exists(){return!1}existsSync(){return!1}readBinary(){throw new Error("No file system is available.")}readBinarySync(){throw new Error("No file system is available.")}readFile(){throw new Error("No file system is available.")}readFileSync(){throw new Error("No file system is available.")}async readDirectory(){return[]}readDirectorySync(){return[]}},vN={fileSystemProvider:ze(()=>new yN,"fileSystemProvider")},TN={Grammar:ze(()=>{},"Grammar"),LanguageMetaData:ze(()=>({caseInsensitive:!1,fileExtensions:[".langium"],languageId:"langium"}),"LanguageMetaData")},RN={AstReflection:ze(()=>new Ri,"AstReflection")};function $N(){const e=iN(nN(vN),RN),t=iN(rN({shared:e}),TN);return e.ServiceRegistry.register(t),t}function bN(e){const t=$N(),r=t.serializer.JsonSerializer.deserialize(e);return t.shared.workspace.LangiumDocumentFactory.fromModel(r,Tw.parse(`memory:/${r.name??"grammar"}.langium`)),r}ze($N,"createMinimalGrammarServices"),ze(bN,"loadGrammarFromJson"),Ue(Kt,gN);var EN,CN,AN,kN,SN,wN,xN,NN,IN,_N,PN=class{static{ze(this,"DefaultLangiumProfiler")}constructor(e){this.activeCategories=new Set,this.allCategories=new Set(["validating","parsing","linking"]),this.activeCategories=e??new Set(this.allCategories),this.records=new Iw}isActive(e){return this.activeCategories.has(e)}start(...e){e?e.forEach(e=>this.activeCategories.add(e)):this.activeCategories=new Set(this.allCategories)}stop(...e){e?e.forEach(e=>this.activeCategories.delete(e)):this.activeCategories.clear()}createTask(e,t){if(!this.isActive(e))throw new Error(`Category "${e}" is not active.`);return console.log(`Creating profiling task for '${e}.${t}'.`),new DN(t=>this.records.add(e,this.dumpRecord(e,t)),t)}dumpRecord(e,t){console.info(`Task ${e}.${t.identifier} executed in ${t.duration.toFixed(2)}ms and ended at ${t.date.toISOString()}`);const r=[];for(const a of t.entries.keys()){const e=t.entries.get(a),n=e.reduce((e,t)=>e+t);r.push({name:`${t.identifier}.${a}`,count:e.length,duration:n})}const n=t.duration-r.map(e=>e.duration).reduce((e,t)=>e+t,0);function i(e){return Math.round(100*e)/100}return r.push({name:t.identifier,count:1,duration:n}),r.sort((e,t)=>t.duration-e.duration),ze(i,"Round"),console.table(r.map(e=>({Element:e.name,Count:e.count,"Self %":i(100*e.duration/t.duration),"Time (ms)":i(e.duration)}))),t}getRecords(...e){return 0===e.length?this.records.values():this.records.entries().filter(t=>e.some(e=>e===t[0])).flatMap(e=>e[1])}},DN=class{static{ze(this,"ProfilingTask")}constructor(e,t){this.stack=[],this.entries=new Iw,this.addRecord=e,this.identifier=t}start(){if(void 0!==this.startTime)throw new Error(`Task "${this.identifier}" is already started.`);this.startTime=performance.now()}stop(){if(void 0===this.startTime)throw new Error(`Task "${this.identifier}" was not started.`);if(0!==this.stack.length)throw new Error(`Task "${this.identifier}" cannot be stopped before sub-task(s): ${this.stack.map(e=>e.id).join(", ")}.`);const e={identifier:this.identifier,date:new Date,duration:performance.now()-this.startTime,entries:this.entries};this.addRecord(e),this.startTime=void 0,this.entries.clear()}startSubTask(e){this.stack.push({id:e,start:performance.now(),content:0})}stopSubTask(e){const t=this.stack.pop();if(!t)throw new Error(`Task "${this.identifier}.${e}" was not started.`);if(t.id!==e)throw new Error(`Sub-Task "${t.id}" is not already stopped.`);const r=performance.now()-t.start;void 0!==this.stack.at(-1)&&(this.stack[this.stack.length-1].content+=r);const n=r-t.content;this.entries.add(e,n)}};(EN||(EN={})).Terminals={ARROW_DIRECTION:/L|R|T|B/,ARROW_GROUP:/\{group\}/,ARROW_INTO:/<|>/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,ID:/[\w]([-\w]*\w)?/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,ARCH_ICON:/\([\w-:]+\)/,ARCH_TITLE:/\[(?:"([^"\\]|\\.)*"|'([^'\\]|\\.)*'|[\w ]+)\]/},(CN||(CN={})).Terminals={EM_ID:/[_a-zA-Z][\w_]*/,EM_FID:/\d{1,3}/,EM_DATA_INLINE:/\{(.*)\}|"(.*)"|'(.*)'/,EM_DATA_BLOCK:/\{[\t ]*\r?\n(?:[\S\s]*?\r?\n)?\}(?:\r?\n|(?!\S))/,EM_ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,EM_ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,EM_TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,EM_WS:/\s+/,EM_YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,EM_DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,EM_SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,EM_ML_COMMENT:/\/\*[\s\S]*?\*\//,EM_SL_COMMENT:/\/\/[^\n\r]*/},(AN||(AN={})).Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,INT:/0|[1-9][0-9]*(?!\.)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,REFERENCE:/\w([-\./\w]*[-\w])?/},(kN||(kN={})).Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/},(SN||(SN={})).Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,INT:/0|[1-9][0-9]*(?!\.)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/},(wN||(wN={})).Terminals={NUMBER_PIE:/(?:-?[0-9]+\.[0-9]+(?!\.))|(?:-?(0|[1-9][0-9]*)(?!\.))/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/},(xN||(xN={})).Terminals={GRATICULE:/circle|polygon/,BOOLEAN:/true|false/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,NUMBER:/(?:[0-9]+\.[0-9]+(?!\.))|(?:0|[1-9][0-9]*(?!\.))/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,ID:/[\w]([-\w]*\w)?/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/},(NN||(NN={})).Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,TREEMAP_KEYWORD:/treemap-beta|treemap/,CLASS_DEF:/classDef\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\s+([^;\r\n]*))?(?:;)?/,STYLE_SEPARATOR:/:::/,SEPARATOR:/:/,COMMA:/,/,INDENTATION:/[ \t]{1,}/,WS:/[ \t]+/,ML_COMMENT:/\%\%[^\n]*/,NL:/\r?\n/,ID2:/[a-zA-Z_][a-zA-Z0-9_]*/,NUMBER2:/[0-9_\.\,]+/,STRING2:/"[^"]*"|'[^']*'/},(IN||(IN={})).Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,INDENTATION:/[ \t]{1,}/,WS:/[ \t]+/,ML_COMMENT:/\%\%[^\n]*/,NL:/\r?\n/,STRING2:/"[^"]*"|'[^']*'/},(_N||(_N={})).Terminals={WARDLEY_NUMBER:/[0-9]+\.[0-9]+/,ARROW:/->/,LINK_PORT:/\+<>|\+>|\+</,LINK_ARROW:/-->|-\.->|>|\+'[^']*'<>|\+'[^']*'<|\+'[^']*'>/,LINK_LABEL:/;[^\n\r]+/,STRATEGY:/build|buy|outsource|market/,KW_WARDLEY:/wardley-beta/,KW_SIZE:/size/,KW_EVOLUTION:/evolution/,KW_ANCHOR:/anchor/,KW_COMPONENT:/component/,KW_LABEL:/label/,KW_INERTIA:/inertia/,KW_EVOLVE:/evolve/,KW_PIPELINE:/pipeline/,KW_NOTE:/note/,KW_ANNOTATIONS:/annotations/,KW_ANNOTATION:/annotation/,KW_ACCELERATOR:/accelerator/,KW_DEACCELERATOR:/deaccelerator/,NAME_WITH_SPACES:/(?!title\s|accTitle|accDescr)[A-Za-z](?:[A-Za-z0-9_()&]|-(?!>))*(?:[ \t]+[A-Za-z(](?:[A-Za-z0-9_()&]|-(?!>))*)*/,WS:/[ \t]+/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,INT:/0|[1-9][0-9]*(?!\.)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,ID:/[\w]([-\w]*\w)?/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/};EN.Terminals,CN.Terminals,AN.Terminals,kN.Terminals,SN.Terminals,wN.Terminals,xN.Terminals,IN.Terminals,NN.Terminals,_N.Terminals;var ON="Accelerator",LN="name",MN="x",jN="y",FN="Anchor",zN="evolution",KN="name",GN="visibility",qN="Annotation",UN="number",WN="text",BN="x",VN="y",HN="Annotations",YN="x",JN="y",XN="Architecture",QN="accDescr",ZN="accTitle",eI="edges",tI="groups",rI="junctions",nI="services",iI="title";ze(function(e){return FO.isInstance(e,XN)},"isArchitecture");var aI="Axis",sI="label",oI="name",lI="Branch",cI="name",uI="order";ze(function(e){return FO.isInstance(e,lI)},"isBranch");var dI="Checkout",pI="branch",fI="CherryPicking",hI="id",mI="parent",gI="tags",yI="ClassDefStatement",vI="className",TI="styleText",RI="Commit",$I="id",bI="message",EI="tags",CI="type";ze(function(e){return FO.isInstance(e,RI)},"isCommit");var AI="Common",kI="accDescr",SI="accTitle",wI="title",xI="Component",NI="decorator",II="evolution",_I="inertia",PI="label",DI="name",OI="visibility",LI="Curve",MI="entries",jI="label",FI="name",zI="Deaccelerator",KI="name",GI="x",qI="y",UI="Decorator",WI="strategy",BI="Direction",VI="accDescr",HI="accTitle",YI="dir",JI="statements",XI="title",QI="Edge",ZI="lhsDir",e_="lhsGroup",t_="lhsId",r_="lhsInto",n_="rhsDir",i_="rhsGroup",a_="rhsId",s_="rhsInto",o_="title",l_="EmDataEntity",c_="dataBlockValue",u_="dataType",d_="name",p_="EmFrame",f_="EmGwt",h_="givenStatements",m_="sourceFrame",g_="thenStatements",y_="whenStatements",v_="EmGwtStatement",T_="entityIdentifier",R_="EmModelEntity",$_="name";ze(function(e){return"rmo"===e||"readmodel"===e||"ui"===e||"cmd"===e||"command"===e||"evt"===e||"event"===e||"pcr"===e||"processor"===e},"isEmModelEntityType");var b_="EmNoteEntity",E_="dataBlockValue",C_="dataType",A_="sourceFrame",k_="EmResetFrame",S_="dataInlineValue",w_="dataReference",x_="dataType",N_="entityIdentifier",I_="modelEntityType",__="name",P_="sourceFrames";function D_(e){return FO.isInstance(e,k_)}ze(D_,"isEmResetFrame");var O_="EmTimeFrame",L_="dataInlineValue",M_="dataReference",j_="dataType",F_="entityIdentifier",z_="modelEntityType",K_="name",G_="sourceFrames",q_="Entry",U_="axis",W_="value",B_="EventModel",V_="accDescr",H_="accTitle",Y_="dataEntities",J_="frames",X_="gwtEntities",Q_="modelEntities",Z_="noteEntities",eP="title",tP="Evolution",rP="stages",nP="EvolutionStage",iP="boundary",aP="name",sP="secondName",oP="Evolve",lP="component",cP="target",uP="GitGraph",dP="accDescr",pP="accTitle",fP="statements",hP="title";ze(function(e){return FO.isInstance(e,uP)},"isGitGraph");var mP="Group",gP="icon",yP="id",vP="in",TP="title",RP="Info",$P="accDescr",bP="accTitle",EP="title";ze(function(e){return FO.isInstance(e,RP)},"isInfo");var CP="Item",AP="classSelector",kP="name",SP="Junction",wP="id",xP="in",NP="Label",IP="negX",_P="negY",PP="offsetX",DP="offsetY",OP="Leaf",LP="classSelector",MP="name",jP="value",FP="Link",zP="arrow",KP="from",GP="fromPort",qP="linkLabel",UP="to",WP="toPort",BP="Merge",VP="branch",HP="id",YP="tags",JP="type";ze(function(e){return FO.isInstance(e,BP)},"isMerge");var XP="Note",QP="evolution",ZP="text",eD="visibility",tD="Option",rD="name",nD="value",iD="Packet",aD="accDescr",sD="accTitle",oD="blocks",lD="title";ze(function(e){return FO.isInstance(e,iD)},"isPacket");var cD="PacketBlock",uD="bits",dD="end",pD="label",fD="start";ze(function(e){return FO.isInstance(e,cD)},"isPacketBlock");var hD="Pie",mD="accDescr",gD="accTitle",yD="sections",vD="showData",TD="title";ze(function(e){return FO.isInstance(e,hD)},"isPie");var RD="PieSection",$D="label",bD="value";ze(function(e){return FO.isInstance(e,RD)},"isPieSection");var ED="Pipeline",CD="components",AD="parent",kD="PipelineComponent",SD="evolution",wD="label",xD="name",ND="Radar",ID="accDescr",_D="accTitle",PD="axes",DD="curves",OD="options",LD="title",MD="Section",jD="classSelector",FD="name",zD="Service",KD="icon",GD="iconText",qD="id",UD="in",WD="title",BD="Size",VD="height",HD="width",YD="Statement",JD="Treemap",XD="accDescr",QD="accTitle",ZD="title",eO="TreemapRows";ze(function(e){return FO.isInstance(e,JD)},"isTreemap");var tO="TreemapRow",rO="indent",nO="item",iO="TreeNode",aO="indent",sO="name",oO="TreeView",lO="accDescr",cO="accTitle",uO="nodes",dO="title",pO="Wardley",fO="accDescr",hO="accelerators",mO="accTitle",gO="anchors",yO="annotation",vO="annotations",TO="components",RO="deaccelerators",$O="evolution",bO="evolves",EO="links",CO="notes",AO="pipelines",kO="size",SO="title";ze(function(e){return FO.isInstance(e,pO)},"isWardley");var wO,xO,NO,IO,_O,PO,DO,OO,LO,MO,jO=class extends Ht{constructor(){super(...arguments),this.types={Accelerator:{name:ON,properties:{name:{name:LN},x:{name:MN},y:{name:jN}},superTypes:[]},Anchor:{name:FN,properties:{evolution:{name:zN},name:{name:KN},visibility:{name:GN}},superTypes:[]},Annotation:{name:qN,properties:{number:{name:UN},text:{name:WN},x:{name:BN},y:{name:VN}},superTypes:[]},Annotations:{name:HN,properties:{x:{name:YN},y:{name:JN}},superTypes:[]},Architecture:{name:XN,properties:{accDescr:{name:QN},accTitle:{name:ZN},edges:{name:eI,defaultValue:[]},groups:{name:tI,defaultValue:[]},junctions:{name:rI,defaultValue:[]},services:{name:nI,defaultValue:[]},title:{name:iI}},superTypes:[]},Axis:{name:aI,properties:{label:{name:sI},name:{name:oI}},superTypes:[]},Branch:{name:lI,properties:{name:{name:cI},order:{name:uI}},superTypes:[YD]},Checkout:{name:dI,properties:{branch:{name:pI}},superTypes:[YD]},CherryPicking:{name:fI,properties:{id:{name:hI},parent:{name:mI},tags:{name:gI,defaultValue:[]}},superTypes:[YD]},ClassDefStatement:{name:yI,properties:{className:{name:vI},styleText:{name:TI}},superTypes:[]},Commit:{name:RI,properties:{id:{name:$I},message:{name:bI},tags:{name:EI,defaultValue:[]},type:{name:CI}},superTypes:[YD]},Common:{name:AI,properties:{accDescr:{name:kI},accTitle:{name:SI},title:{name:wI}},superTypes:[]},Component:{name:xI,properties:{decorator:{name:NI},evolution:{name:II},inertia:{name:_I,defaultValue:!1},label:{name:PI},name:{name:DI},visibility:{name:OI}},superTypes:[]},Curve:{name:LI,properties:{entries:{name:MI,defaultValue:[]},label:{name:jI},name:{name:FI}},superTypes:[]},Deaccelerator:{name:zI,properties:{name:{name:KI},x:{name:GI},y:{name:qI}},superTypes:[]},Decorator:{name:UI,properties:{strategy:{name:WI}},superTypes:[]},Direction:{name:BI,properties:{accDescr:{name:VI},accTitle:{name:HI},dir:{name:YI},statements:{name:JI,defaultValue:[]},title:{name:XI}},superTypes:[uP]},Edge:{name:QI,properties:{lhsDir:{name:ZI},lhsGroup:{name:e_,defaultValue:!1},lhsId:{name:t_},lhsInto:{name:r_,defaultValue:!1},rhsDir:{name:n_},rhsGroup:{name:i_,defaultValue:!1},rhsId:{name:a_},rhsInto:{name:s_,defaultValue:!1},title:{name:o_}},superTypes:[]},EmDataEntity:{name:l_,properties:{dataBlockValue:{name:c_},dataType:{name:u_},name:{name:d_}},superTypes:[]},EmFrame:{name:p_,properties:{},superTypes:[]},EmGwt:{name:f_,properties:{givenStatements:{name:h_,defaultValue:[]},sourceFrame:{name:m_,referenceType:p_},thenStatements:{name:g_,defaultValue:[]},whenStatements:{name:y_,defaultValue:[]}},superTypes:[]},EmGwtStatement:{name:v_,properties:{entityIdentifier:{name:T_,referenceType:R_}},superTypes:[]},EmModelEntity:{name:R_,properties:{name:{name:$_}},superTypes:[]},EmNoteEntity:{name:b_,properties:{dataBlockValue:{name:E_},dataType:{name:C_},sourceFrame:{name:A_,referenceType:p_}},superTypes:[]},EmResetFrame:{name:k_,properties:{dataInlineValue:{name:S_},dataReference:{name:w_,referenceType:l_},dataType:{name:x_},entityIdentifier:{name:N_},modelEntityType:{name:I_},name:{name:__},sourceFrames:{name:P_,defaultValue:[],referenceType:p_}},superTypes:[p_]},EmTimeFrame:{name:O_,properties:{dataInlineValue:{name:L_},dataReference:{name:M_,referenceType:l_},dataType:{name:j_},entityIdentifier:{name:F_},modelEntityType:{name:z_},name:{name:K_},sourceFrames:{name:G_,defaultValue:[],referenceType:p_}},superTypes:[p_]},Entry:{name:q_,properties:{axis:{name:U_,referenceType:aI},value:{name:W_}},superTypes:[]},EventModel:{name:B_,properties:{accDescr:{name:V_},accTitle:{name:H_},dataEntities:{name:Y_,defaultValue:[]},frames:{name:J_,defaultValue:[]},gwtEntities:{name:X_,defaultValue:[]},modelEntities:{name:Q_,defaultValue:[]},noteEntities:{name:Z_,defaultValue:[]},title:{name:eP}},superTypes:[]},Evolution:{name:tP,properties:{stages:{name:rP,defaultValue:[]}},superTypes:[]},EvolutionStage:{name:nP,properties:{boundary:{name:iP},name:{name:aP},secondName:{name:sP}},superTypes:[]},Evolve:{name:oP,properties:{component:{name:lP},target:{name:cP}},superTypes:[]},GitGraph:{name:uP,properties:{accDescr:{name:dP},accTitle:{name:pP},statements:{name:fP,defaultValue:[]},title:{name:hP}},superTypes:[]},Group:{name:mP,properties:{icon:{name:gP},id:{name:yP},in:{name:vP},title:{name:TP}},superTypes:[]},Info:{name:RP,properties:{accDescr:{name:$P},accTitle:{name:bP},title:{name:EP}},superTypes:[]},Item:{name:CP,properties:{classSelector:{name:AP},name:{name:kP}},superTypes:[]},Junction:{name:SP,properties:{id:{name:wP},in:{name:xP}},superTypes:[]},Label:{name:NP,properties:{negX:{name:IP,defaultValue:!1},negY:{name:_P,defaultValue:!1},offsetX:{name:PP},offsetY:{name:DP}},superTypes:[]},Leaf:{name:OP,properties:{classSelector:{name:LP},name:{name:MP},value:{name:jP}},superTypes:[CP]},Link:{name:FP,properties:{arrow:{name:zP},from:{name:KP},fromPort:{name:GP},linkLabel:{name:qP},to:{name:UP},toPort:{name:WP}},superTypes:[]},Merge:{name:BP,properties:{branch:{name:VP},id:{name:HP},tags:{name:YP,defaultValue:[]},type:{name:JP}},superTypes:[YD]},Note:{name:XP,properties:{evolution:{name:QP},text:{name:ZP},visibility:{name:eD}},superTypes:[]},Option:{name:tD,properties:{name:{name:rD},value:{name:nD,defaultValue:!1}},superTypes:[]},Packet:{name:iD,properties:{accDescr:{name:aD},accTitle:{name:sD},blocks:{name:oD,defaultValue:[]},title:{name:lD}},superTypes:[]},PacketBlock:{name:cD,properties:{bits:{name:uD},end:{name:dD},label:{name:pD},start:{name:fD}},superTypes:[]},Pie:{name:hD,properties:{accDescr:{name:mD},accTitle:{name:gD},sections:{name:yD,defaultValue:[]},showData:{name:vD,defaultValue:!1},title:{name:TD}},superTypes:[]},PieSection:{name:RD,properties:{label:{name:$D},value:{name:bD}},superTypes:[]},Pipeline:{name:ED,properties:{components:{name:CD,defaultValue:[]},parent:{name:AD}},superTypes:[]},PipelineComponent:{name:kD,properties:{evolution:{name:SD},label:{name:wD},name:{name:xD}},superTypes:[]},Radar:{name:ND,properties:{accDescr:{name:ID},accTitle:{name:_D},axes:{name:PD,defaultValue:[]},curves:{name:DD,defaultValue:[]},options:{name:OD,defaultValue:[]},title:{name:LD}},superTypes:[]},Section:{name:MD,properties:{classSelector:{name:jD},name:{name:FD}},superTypes:[CP]},Service:{name:zD,properties:{icon:{name:KD},iconText:{name:GD},id:{name:qD},in:{name:UD},title:{name:WD}},superTypes:[]},Size:{name:BD,properties:{height:{name:VD},width:{name:HD}},superTypes:[]},Statement:{name:YD,properties:{},superTypes:[]},TreeNode:{name:iO,properties:{indent:{name:aO},name:{name:sO}},superTypes:[]},TreeView:{name:oO,properties:{accDescr:{name:lO},accTitle:{name:cO},nodes:{name:uO,defaultValue:[]},title:{name:dO}},superTypes:[]},Treemap:{name:JD,properties:{accDescr:{name:XD},accTitle:{name:QD},title:{name:ZD},TreemapRows:{name:eO,defaultValue:[]}},superTypes:[]},TreemapRow:{name:tO,properties:{indent:{name:rO},item:{name:nO}},superTypes:[]},Wardley:{name:pO,properties:{accDescr:{name:fO},accelerators:{name:hO,defaultValue:[]},accTitle:{name:mO},anchors:{name:gO,defaultValue:[]},annotation:{name:yO,defaultValue:[]},annotations:{name:vO,defaultValue:[]},components:{name:TO,defaultValue:[]},deaccelerators:{name:RO,defaultValue:[]},evolution:{name:$O},evolves:{name:bO,defaultValue:[]},links:{name:EO,defaultValue:[]},notes:{name:CO,defaultValue:[]},pipelines:{name:AO,defaultValue:[]},size:{name:kO},title:{name:SO}},superTypes:[]}}}static{ze(this,"MermaidAstReflection")}},FO=new jO,zO=ze(()=>wO??(wO=bN('{"$type":"Grammar","isDeclared":true,"name":"ArchitectureGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Architecture","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"architecture-beta"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"groups","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"services","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"junctions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"edges","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"LeftPort","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"lhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"RightPort","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"rhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Keyword","value":":"}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Arrow","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Assignment","feature":"lhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"--"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]}},{"$type":"Keyword","value":"-"}]}]},{"$type":"Assignment","feature":"rhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"Group","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Service","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"service"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"iconText","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Junction","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"junction"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Edge","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"lhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"lhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"rhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"rhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"ARROW_DIRECTION","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"L"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"R"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"T"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"B"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_GROUP","definition":{"$type":"RegexToken","regex":"/\\\\{group\\\\}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_INTO","definition":{"$type":"RegexToken","regex":"/<|>/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@18"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@19"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","name":"ARCH_ICON","definition":{"$type":"RegexToken","regex":"/\\\\([\\\\w-:]+\\\\)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TITLE","definition":{"$type":"RegexToken","regex":"/\\\\[(?:\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'|[\\\\w ]+)\\\\]/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[],"types":[]}')),"ArchitectureGrammarGrammar"),KO=ze(()=>xO??(xO=bN('{"$type":"Grammar","isDeclared":true,"name":"EventModeling","interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"rules":[{"$type":"ParserRule","entry":true,"name":"EventModel","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"eventmodeling"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"modelEntities","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"frames","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"dataEntities","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"noteEntities","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"gwtEntities","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmModelEntityType","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"rmo"},{"$type":"Keyword","value":"readmodel"},{"$type":"Keyword","value":"ui"},{"$type":"Keyword","value":"cmd"},{"$type":"Keyword","value":"command"},{"$type":"Keyword","value":"evt"},{"$type":"Keyword","value":"event"},{"$type":"Keyword","value":"pcr"},{"$type":"Keyword","value":"processor"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmDataType","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"json"},{"$type":"Keyword","value":"jsobj"},{"$type":"Keyword","value":"figma"},{"$type":"Keyword","value":"salt"},{"$type":"Keyword","value":"uri"},{"$type":"Keyword","value":"md"},{"$type":"Keyword","value":"html"},{"$type":"Keyword","value":"text"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"EmDataInline","definition":{"$type":"Group","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"`"},{"$type":"Assignment","feature":"dataType","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Keyword","value":"`"}],"cardinality":"?"},{"$type":"Assignment","feature":"dataInlineValue","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"EmDataBlock","definition":{"$type":"Group","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"`"},{"$type":"Assignment","feature":"dataType","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Keyword","value":"`"}],"cardinality":"?"},{"$type":"Assignment","feature":"dataBlockValue","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"QualifiedName","dataType":"string","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"."},{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}],"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmTimeFrame","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"tf"},{"$type":"Keyword","value":"timeframe"}]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"modelEntityType","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"entityIdentifier","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"->>"},{"$type":"Assignment","feature":"sourceFrames","operator":"+=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@8"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}}],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"[["},{"$type":"Assignment","feature":"dataReference","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@10"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"Keyword","value":"]]"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmResetFrame","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"rf"},{"$type":"Keyword","value":"resetframe"}]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"modelEntityType","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"entityIdentifier","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"->>"},{"$type":"Assignment","feature":"sourceFrames","operator":"+=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@8"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}}],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"[["},{"$type":"Assignment","feature":"dataReference","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@10"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"Keyword","value":"]]"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmFrame","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmModelEntity","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"entity"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmDataEntity","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"data"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmNoteEntity","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"note"},{"$type":"Assignment","feature":"sourceFrame","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@8"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmGwt","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"gwt"},{"$type":"Assignment","feature":"sourceFrame","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@8"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"Keyword","value":"given"},{"$type":"Assignment","feature":"givenStatements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"+"},{"$type":"Group","elements":[{"$type":"Keyword","value":"when"},{"$type":"Assignment","feature":"whenStatements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"+"}],"cardinality":"?"},{"$type":"Keyword","value":"then"},{"$type":"Assignment","feature":"thenStatements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"+"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmGwtStatement","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},{"$type":"Assignment","feature":"entityIdentifier","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@9"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EM_EID","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EM_FI","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"EM_ID","definition":{"$type":"RegexToken","regex":"/[_a-zA-Z][\\\\w_]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_FID","definition":{"$type":"RegexToken","regex":"/\\\\d{1,3}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_DATA_INLINE","definition":{"$type":"RegexToken","regex":"/\\\\{(.*)\\\\}|\\"(.*)\\"|\'(.*)\'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_DATA_BLOCK","definition":{"$type":"RegexToken","regex":"/\\\\{[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?\\\\}(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"EM_WS","definition":{"$type":"RegexToken","regex":"/\\\\s+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_SL_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\/[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"imports":[],"types":[]}')),"EventModelingGrammar"),GO=ze(()=>NO??(NO=bN('{"$type":"Grammar","isDeclared":true,"name":"GitGraphGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"GitGraph","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Keyword","value":":"}]},{"$type":"Keyword","value":"gitGraph:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Keyword","value":":"}]}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"Assignment","feature":"statements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Direction","definition":{"$type":"Assignment","feature":"dir","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"LR"},{"$type":"Keyword","value":"TB"},{"$type":"Keyword","value":"BT"}]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Commit","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"commit"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"msg:","cardinality":"?"},{"$type":"Assignment","feature":"message","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Branch","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"branch"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"order:"},{"$type":"Assignment","feature":"order","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Merge","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"merge"},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Checkout","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"checkout"},{"$type":"Keyword","value":"switch"}]},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"CherryPicking","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"cherry-pick"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"parent:"},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@14"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","name":"REFERENCE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\w([-\\\\./\\\\w]*[-\\\\w])?/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[],"types":[]}')),"GitGraphGrammarGrammar"),qO=ze(()=>IO??(IO=bN('{"$type":"Grammar","isDeclared":true,"name":"InfoGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Info","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"info"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"showInfo"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"?"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@7"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}')),"InfoGrammarGrammar"),UO=ze(()=>_O??(_O=bN('{"$type":"Grammar","isDeclared":true,"name":"PacketGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Packet","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"packet"},{"$type":"Keyword","value":"packet-beta"}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PacketBlock","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"start","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"end","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}],"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"+"},{"$type":"Assignment","feature":"bits","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]}]},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@9"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}')),"PacketGrammarGrammar"),WO=ze(()=>PO??(PO=bN('{"$type":"Grammar","isDeclared":true,"name":"PieGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Pie","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"pie"},{"$type":"Assignment","feature":"showData","operator":"?=","terminal":{"$type":"Keyword","value":"showData"},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PieSection","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"FLOAT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?(0|[1-9][0-9]*)(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@2"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@3"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@11"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@12"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}')),"PieGrammarGrammar"),BO=ze(()=>DO??(DO=bN('{"$type":"Grammar","isDeclared":true,"name":"RadarGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Radar","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":"radar-beta:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"axis"},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"curve"},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Label","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"Axis","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Curve","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Keyword","value":"}"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Entries","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"DetailedEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"axis","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@2"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"NumberEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Option","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"showLegend"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"ticks"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"max"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"min"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"graticule"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"GRATICULE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"circle"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"polygon"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@16"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[{"$type":"Interface","name":"Entry","attributes":[{"$type":"TypeAttribute","name":"axis","isOptional":true,"type":{"$type":"ReferenceType","referenceType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@2"}},"isMulti":false}},{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}],"superTypes":[]}],"types":[]}')),"RadarGrammarGrammar"),VO=ze(()=>OO??(OO=bN('{"$type":"Grammar","isDeclared":true,"name":"TreemapGrammar","rules":[{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","entry":true,"name":"Treemap","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Assignment","feature":"TreemapRows","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"TREEMAP_KEYWORD","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap-beta"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"CLASS_DEF","definition":{"$type":"RegexToken","regex":"/classDef\\\\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\\\\s+([^;\\\\r\\\\n]*))?(?:;)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STYLE_SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":::"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"COMMA","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":","},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INDENTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]{1,}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\%\\\\%[^\\\\n]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false},{"$type":"ParserRule","name":"TreemapRow","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"indent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"item","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"ClassDef","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Item","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Section","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Leaf","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[],"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[],"cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"ID2","definition":{"$type":"RegexToken","regex":"/[a-zA-Z_][a-zA-Z0-9_]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER2","definition":{"$type":"RegexToken","regex":"/[0-9_\\\\.\\\\,]+/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"MyNumber","dataType":"number","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"STRING2","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|\'[^\']*\'/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[{"$type":"Interface","name":"Item","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"classSelector","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]},{"$type":"Interface","name":"Section","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[]},{"$type":"Interface","name":"Leaf","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}]},{"$type":"Interface","name":"ClassDefStatement","attributes":[{"$type":"TypeAttribute","name":"className","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"styleText","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"Treemap","attributes":[{"$type":"TypeAttribute","name":"TreemapRows","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@15"}}},"isOptional":false},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"imports":[],"types":[],"$comment":"/**\\n * Treemap grammar for Langium\\n * Converted from mindmap grammar\\n *\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\n * before the treemap keyword, allowing for empty lines and comments before the\\n * treemap declaration.\\n */"}')),"TreemapGrammarGrammar"),HO=ze(()=>LO??(LO=bN('{"$type":"Grammar","isDeclared":true,"name":"TreeViewGrammar","rules":[{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","entry":true,"name":"TreeView","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"treeView-beta"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[],"cardinality":"?"},{"$type":"Assignment","feature":"nodes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"INDENTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]{1,}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\%\\\\%[^\\\\n]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false},{"$type":"ParserRule","name":"TreeNode","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"indent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"STRING2","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|\'[^\']*\'/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[{"$type":"Interface","name":"TreeView","attributes":[{"$type":"TypeAttribute","name":"nodes","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@9"}}},"isOptional":false},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"imports":[],"types":[],"$comment":"/**\\n * TreeView grammar for Langium\\n * Converted from treemap grammar\\n *\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\n * before the treemap keyword, allowing for empty lines and comments before the\\n * treeView declaration.\\n */"}')),"TreeViewGrammarGrammar"),YO=ze(()=>MO??(MO=bN('{"$type":"Grammar","isDeclared":true,"name":"WardleyGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Wardley","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@42"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"size","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"anchors","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"components","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"links","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"evolves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"pipelines","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"notes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"annotations","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Assignment","feature":"annotation","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"accelerators","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"Assignment","feature":"deaccelerators","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"Size","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[]},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"width","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"height","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Evolution","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@27"},"arguments":[]},{"$type":"Assignment","feature":"stages","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]},{"$type":"Assignment","feature":"stages","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}],"cardinality":"+"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EvolutionStage","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"@"},{"$type":"Assignment","feature":"boundary","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}}],"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"/"},{"$type":"Assignment","feature":"secondName","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}}],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Anchor","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"visibility","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Component","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"visibility","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"decorator","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"inertia","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@31"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"inertia","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@31"},"arguments":[]}},{"$type":"Keyword","value":")"}]}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Label","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@30"},"arguments":[]},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"negX","operator":"?=","terminal":{"$type":"Keyword","value":"-"},"cardinality":"?"},{"$type":"Assignment","feature":"offsetX","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"negY","operator":"?=","terminal":{"$type":"Keyword","value":"-"},"cardinality":"?"},{"$type":"Assignment","feature":"offsetY","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Decorator","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"strategy","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Link","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"from","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Assignment","feature":"fromPort","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"arrow","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]},"cardinality":"?"},{"$type":"Assignment","feature":"to","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Assignment","feature":"toPort","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"linkLabel","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Evolve","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@32"},"arguments":[]},{"$type":"Assignment","feature":"component","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Pipeline","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@33"},"arguments":[]},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[],"cardinality":"+"},{"$type":"Assignment","feature":"components","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},"cardinality":"+"},{"$type":"Keyword","value":"}"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PipelineComponent","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Note","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@34"},"arguments":[]},{"$type":"Assignment","feature":"text","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"visibility","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Annotations","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@35"},"arguments":[]},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"x","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"y","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Annotation","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@36"},"arguments":[]},{"$type":"Assignment","feature":"number","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"x","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"y","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"Assignment","feature":"text","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"CoordinateValue","dataType":"number","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Accelerator","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@37"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"x","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"y","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Deaccelerator","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@38"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"x","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"y","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"WARDLEY_NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"->"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"LINK_PORT","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"+<>"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"+>"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"+<"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"LINK_ARROW","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"--\x3e"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"-.->"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":">"},"parenthesized":false}],"parenthesized":false},{"$type":"RegexToken","regex":"/\\\\+\'[^\']*\'<>/","parenthesized":false}],"parenthesized":false},{"$type":"RegexToken","regex":"/\\\\+\'[^\']*\'</","parenthesized":false}],"parenthesized":false},{"$type":"RegexToken","regex":"/\\\\+\'[^\']*\'>/","parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"LINK_LABEL","definition":{"$type":"RegexToken","regex":"/;[^\\\\n\\\\r]+/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRATEGY","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"build"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"buy"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"outsource"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"market"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_WARDLEY","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"wardley-beta"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_SIZE","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"size"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_EVOLUTION","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"evolution"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_ANCHOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"anchor"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_COMPONENT","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"component"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_LABEL","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"label"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_INERTIA","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"inertia"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_EVOLVE","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"evolve"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_PIPELINE","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"pipeline"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_NOTE","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"note"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_ANNOTATIONS","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"annotations"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_ANNOTATION","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"annotation"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_ACCELERATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"accelerator"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_DEACCELERATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"deaccelerator"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NAME_WITH_SPACES","definition":{"$type":"RegexToken","regex":"/(?!title\\\\s|accTitle|accDescr)[A-Za-z](?:[A-Za-z0-9_()&]|-(?!>))*(?:[ \\\\t]+[A-Za-z(](?:[A-Za-z0-9_()&]|-(?!>))*)*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/","parenthesized":false},"fragment":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@44"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@45"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@46"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@47"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@48"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}')),"WardleyGrammarGrammar"),JO={languageId:"architecture",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},XO={languageId:"eventmodeling",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},QO={languageId:"gitGraph",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},ZO={languageId:"info",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},eL={languageId:"packet",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},tL={languageId:"pie",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},rL={languageId:"radar",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},nL={languageId:"treemap",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},iL={languageId:"treeView",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},aL={languageId:"wardley",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},sL={AstReflection:ze(()=>new jO,"AstReflection")},oL={Grammar:ze(()=>zO(),"Grammar"),LanguageMetaData:ze(()=>JO,"LanguageMetaData"),parser:{}},lL={Grammar:ze(()=>KO(),"Grammar"),LanguageMetaData:ze(()=>XO,"LanguageMetaData"),parser:{}},cL={Grammar:ze(()=>GO(),"Grammar"),LanguageMetaData:ze(()=>QO,"LanguageMetaData"),parser:{}},uL={Grammar:ze(()=>qO(),"Grammar"),LanguageMetaData:ze(()=>ZO,"LanguageMetaData"),parser:{}},dL={Grammar:ze(()=>UO(),"Grammar"),LanguageMetaData:ze(()=>eL,"LanguageMetaData"),parser:{}},pL={Grammar:ze(()=>WO(),"Grammar"),LanguageMetaData:ze(()=>tL,"LanguageMetaData"),parser:{}},fL={Grammar:ze(()=>BO(),"Grammar"),LanguageMetaData:ze(()=>rL,"LanguageMetaData"),parser:{}},hL={Grammar:ze(()=>VO(),"Grammar"),LanguageMetaData:ze(()=>nL,"LanguageMetaData"),parser:{}},mL={Grammar:ze(()=>HO(),"Grammar"),LanguageMetaData:ze(()=>iL,"LanguageMetaData"),parser:{}},gL={Grammar:ze(()=>YO(),"Grammar"),LanguageMetaData:ze(()=>aL,"LanguageMetaData"),parser:{}},yL={ACC_DESCR:/accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/accTitle[\t ]*:([^\n\r]*)/,TITLE:/title([\t ][^\n\r]*|)/},vL=class extends ZS{static{ze(this,"AbstractMermaidValueConverter")}runConverter(e,t,r){let n=this.runCommonConverter(e,t,r);return void 0===n&&(n=this.runCustomConverter(e,t,r)),void 0===n?super.runConverter(e,t,r):n}runCommonConverter(e,t,r){const n=yL[e.name];if(void 0===n)return;const i=n.exec(t);return null!==i?void 0!==i[1]?i[1].trim().replace(/[\t ]{2,}/gm," "):void 0!==i[2]?i[2].replace(/^\s*/gm,"").replace(/\s+$/gm,"").replace(/[\t ]{2,}/gm," ").replace(/[\n\r]{2,}/gm,"\n"):void 0:void 0}},TL=class extends vL{static{ze(this,"CommonValueConverter")}runCustomConverter(e,t,r){}},RL=class extends QS{static{ze(this,"AbstractMermaidTokenBuilder")}constructor(e){super(),this.keywords=new Set(e)}buildKeywordTokens(e,t,r){const n=super.buildKeywordTokens(e,t,r);return n.forEach(e=>{this.keywords.has(e.name)&&void 0!==e.PATTERN&&(e.PATTERN=new RegExp(e.PATTERN.toString()+"(?:(?=%%)|(?!\\S))"))}),n}};(class extends RL{static{ze(this,"CommonTokenBuilder")}})},4837(e,t,r){r.d(t,{J:()=>s});var n=r(9302),i=class extends n.dg{static{(0,n.K2)(this,"WardleyValueConverter")}runCustomConverter(e,t,r){if("LINK_LABEL"===e.name.toUpperCase())return t.substring(1).trim()}},a={parser:{ValueConverter:(0,n.K2)(()=>new i,"ValueConverter")}};function s(e=n.DD){const t=(0,n.WQ)((0,n.uM)(e),n.sr),r=(0,n.WQ)((0,n.tG)({shared:t}),n.Xr,a);return t.ServiceRegistry.register(r),{shared:t,Wardley:r}}(0,n.K2)(s,"createWardleyServices")},3398(e,t,r){r.d(t,{b:()=>s});var n=r(9302),i=class extends n.mR{static{(0,n.K2)(this,"GitGraphTokenBuilder")}constructor(){super(["gitGraph"])}},a={parser:{TokenBuilder:(0,n.K2)(()=>new i,"TokenBuilder"),ValueConverter:(0,n.K2)(()=>new n.Tm,"ValueConverter")}};function s(e=n.DD){const t=(0,n.WQ)((0,n.uM)(e),n.sr),r=(0,n.WQ)((0,n.tG)({shared:t}),n.d$,a);return t.ServiceRegistry.register(r),{shared:t,GitGraph:r}}(0,n.K2)(s,"createGitGraphServices")},5738(e,t,r){r.d(t,{I:()=>o});var n=r(9302),i=class extends n.dg{static{(0,n.K2)(this,"TreeViewValueConverter")}runCustomConverter(e,t,r){return"INDENTATION"===e.name?t?.length||0:"STRING2"===e.name?t.substring(1,t.length-1):void 0}},a=class extends n.mR{static{(0,n.K2)(this,"TreeViewTokenBuilder")}constructor(){super(["treeView-beta"])}},s={parser:{TokenBuilder:(0,n.K2)(()=>new a,"TokenBuilder"),ValueConverter:(0,n.K2)(()=>new i,"ValueConverter")}};function o(e=n.DD){const t=(0,n.WQ)((0,n.uM)(e),n.sr),r=(0,n.WQ)((0,n.tG)({shared:t}),n.CZ,s);return t.ServiceRegistry.register(r),{shared:t,TreeView:r}}(0,n.K2)(o,"createTreeViewServices")},8731(e,t,r){r.d(t,{F5:()=>n.F5,qg:()=>s});r(5160),r(1681),r(4837),r(3398),r(9511),r(4824),r(532),r(5738),r(5016),r(2968);var n=r(9302),i={},a={info:(0,n.K2)(async()=>{const{createInfoServices:e}=await r.e(6288).then(r.bind(r,6288)),t=e().Info.parser.LangiumParser;i.info=t},"info"),packet:(0,n.K2)(async()=>{const{createPacketServices:e}=await r.e(7180).then(r.bind(r,7180)),t=e().Packet.parser.LangiumParser;i.packet=t},"packet"),pie:(0,n.K2)(async()=>{const{createPieServices:e}=await r.e(4737).then(r.bind(r,4737)),t=e().Pie.parser.LangiumParser;i.pie=t},"pie"),treeView:(0,n.K2)(async()=>{const{createTreeViewServices:e}=await r.e(3674).then(r.bind(r,3674)),t=e().TreeView.parser.LangiumParser;i.treeView=t},"treeView"),architecture:(0,n.K2)(async()=>{const{createArchitectureServices:e}=await r.e(6402).then(r.bind(r,6402)),t=e().Architecture.parser.LangiumParser;i.architecture=t},"architecture"),gitGraph:(0,n.K2)(async()=>{const{createGitGraphServices:e}=await r.e(8119).then(r.bind(r,8119)),t=e().GitGraph.parser.LangiumParser;i.gitGraph=t},"gitGraph"),eventmodeling:(0,n.K2)(async()=>{const{createEventModelingServices:e}=await r.e(6735).then(r.bind(r,6735)),t=e().EventModel.parser.LangiumParser;i.eventmodeling=t},"eventmodeling"),radar:(0,n.K2)(async()=>{const{createRadarServices:e}=await r.e(3872).then(r.bind(r,3872)),t=e().Radar.parser.LangiumParser;i.radar=t},"radar"),treemap:(0,n.K2)(async()=>{const{createTreemapServices:e}=await r.e(2014).then(r.bind(r,2014)),t=e().Treemap.parser.LangiumParser;i.treemap=t},"treemap"),wardley:(0,n.K2)(async()=>{const{createWardleyServices:e}=await r.e(2555).then(r.bind(r,2555)),t=e().Wardley.parser.LangiumParser;i.wardley=t},"wardley")};async function s(e,t){const r=a[e];if(!r)throw new Error(`Unknown diagram type: ${e}`);i[e]||await r();const n=i[e].parse(t);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new o(n);return n.value}(0,n.K2)(s,"parse");var o=class extends Error{constructor(e){super(`Parsing failed: ${e.lexerErrors.map(e=>`Lexer error on line ${void 0===e.line||isNaN(e.line)?"?":e.line}, column ${void 0===e.column||isNaN(e.column)?"?":e.column}: ${e.message}`).join("\n")} ${e.parserErrors.map(e=>`Parse error on line ${void 0===e.token.startLine||isNaN(e.token.startLine)?"?":e.token.startLine}, column ${void 0===e.token.startColumn||isNaN(e.token.startColumn)?"?":e.token.startColumn}: ${e.message}`).join("\n")}`),this.result=e}static{(0,n.K2)(this,"MermaidParseError")}}},4345(e,t,r){r.d(t,{P:()=>a});var n=r(3706),i=r(797),a=(0,i.K2)((e,t,r,a)=>{e.attr("class",r);const{width:l,height:c,x:u,y:d}=s(e,t);(0,n.a$)(e,c,l,a);const p=o(u,d,l,c,t);e.attr("viewBox",p),i.Rm.debug(`viewBox configured: ${p} with padding: ${t}`)},"setupViewPortForSVG"),s=(0,i.K2)((e,t)=>{const r=e.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:r.width+2*t,height:r.height+2*t,x:r.x,y:r.y}},"calculateDimensionsWithPadding"),o=(0,i.K2)((e,t,r,n,i)=>`${e-i} ${t-i} ${r} ${n}`,"createViewBox")},5871(e,t,r){function n(e,t){e.accDescr&&t.setAccDescription?.(e.accDescr),e.accTitle&&t.setAccTitle?.(e.accTitle),e.title&&t.setDiagramTitle?.(e.title)}r.d(t,{S:()=>n}),(0,r(797).K2)(n,"populateCommonDb")},9625(e,t,r){r.d(t,{A:()=>a});var n=r(797),i=r(451),a=(0,n.K2)((e,t)=>{let r;"sandbox"===t&&(r=(0,i.Ltv)("#i"+e));return("sandbox"===t?(0,i.Ltv)(r.nodes()[0].contentDocument.body):(0,i.Ltv)("body")).select(`[id="${e}"]`)},"getDiagramElement")},2501(e,t,r){r.d(t,{o:()=>n});var n=(0,r(797).K2)(()=>"\n /* Font Awesome icon styling - consolidated */\n .label-icon {\n display: inline-block;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n }\n \n .node .label-icon path {\n fill: currentColor;\n stroke: revert;\n stroke-width: revert;\n }\n","getIconStyles")},8343(e,t,r){r.d(t,{CP:()=>d,Ck:()=>h,HT:()=>f,PB:()=>p,aC:()=>u,lC:()=>l,m:()=>c,tk:()=>o});var n=r(3706),i=r(797),a=r(6750),s=r(451),o=(0,i.K2)((e,t)=>{const r=e.append("rect");if(r.attr("x",t.x),r.attr("y",t.y),r.attr("fill",t.fill),r.attr("stroke",t.stroke),r.attr("width",t.width),r.attr("height",t.height),t.name&&r.attr("name",t.name),t.rx&&r.attr("rx",t.rx),t.ry&&r.attr("ry",t.ry),void 0!==t.attrs)for(const n in t.attrs)r.attr(n,t.attrs[n]);return t.class&&r.attr("class",t.class),r},"drawRect"),l=(0,i.K2)((e,t)=>{const r={x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:"rect"};o(e,r).lower()},"drawBackgroundRect"),c=(0,i.K2)((e,t)=>{const r=t.text.replace(n.H1," "),i=e.append("text");i.attr("x",t.x),i.attr("y",t.y),i.attr("class","legend"),i.style("text-anchor",t.anchor),t.class&&i.attr("class",t.class);const a=i.append("tspan");return a.attr("x",t.x+2*t.textMargin),a.text(r),i},"drawText"),u=(0,i.K2)((e,t,r,n)=>{const i=e.append("image");i.attr("x",t),i.attr("y",r);const s=(0,a.J)(n);i.attr("xlink:href",s)},"drawImage"),d=(0,i.K2)((e,t,r,n)=>{const i=e.append("use");i.attr("x",t),i.attr("y",r);const s=(0,a.J)(n);i.attr("xlink:href",`#${s}`)},"drawEmbeddedImage"),p=(0,i.K2)(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),f=(0,i.K2)(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj"),h=(0,i.K2)(()=>{let e=(0,s.Ltv)(".mermaidTooltip");return e.empty()&&(e=(0,s.Ltv)("body").append("div").attr("class","mermaidTooltip").style("opacity",0).style("position","absolute").style("text-align","center").style("max-width","200px").style("padding","2px").style("font-size","12px").style("background","#ffffde").style("border","1px solid #333").style("border-radius","2px").style("pointer-events","none").style("z-index","100")),e},"createTooltip")}}]); \ No newline at end of file diff --git a/docs/build/assets/js/ec6d3eb8.ca081994.js b/docs/build/assets/js/ec6d3eb8.ca081994.js deleted file mode 100644 index 994215d95..000000000 --- a/docs/build/assets/js/ec6d3eb8.ca081994.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[5359],{5741(e,t,n){n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>c,frontMatter:()=>o,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"tutorials/user/first-launch","title":"Open Doriath for the first time","description":"Open Doriath, create your first vault entry, and confirm the encryption back end is connected.","source":"@site/tutorials/user/01-first-launch.md","sourceDirName":"tutorials/user","slug":"/tutorials/user/first-launch","permalink":"/docs/tutorials/user/first-launch","draft":false,"unlisted":false,"editUrl":"https://github.com/ConductionNL/doriath/tree/development/docs/tutorials/user/01-first-launch.md","tags":[],"version":"current","sidebarPosition":1,"frontMatter":{"sidebar_position":1,"title":"Open Doriath for the first time","description":"Open Doriath, create your first vault entry, and confirm the encryption back end is connected."},"sidebar":"tutorialSidebar","previous":{"title":"User guide","permalink":"/docs/category/user-guide"},"next":{"title":"Admin guide","permalink":"/docs/category/admin-guide"}}');var r=n(4848),s=n(8453);const o={sidebar_position:1,title:"Open Doriath for the first time",description:"Open Doriath, create your first vault entry, and confirm the encryption back end is connected."},a="Open Doriath for the first time",d={},l=[{value:"Goal",id:"goal",level:2},{value:"Prerequisites",id:"prerequisites",level:2},{value:"Steps",id:"steps",level:2},{value:"Verification",id:"verification",level:2},{value:"Common issues",id:"common-issues",level:2},{value:"Reference",id:"reference",level:2}];function h(e){const t={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.header,{children:(0,r.jsx)(t.h1,{id:"open-doriath-for-the-first-time",children:"Open Doriath for the first time"})}),"\n",(0,r.jsx)(t.p,{children:"A first look at Doriath \u2014 where the app lives in Nextcloud, what the\nnavigation gives you, and how to add your first secret."}),"\n",(0,r.jsxs)(t.blockquote,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"This guide is being written as Doriath approaches feature-completeness."}),"\nThe structure below mirrors the journeydoc shape the rest of the\nfleet uses; bodies and screenshots fill in once the UI lands. Follow\nthe ",(0,r.jsx)(t.a,{href:"https://github.com/ConductionNL/doriath",children:"GitHub repository"})," for\nmilestones."]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"goal",children:"Goal"}),"\n",(0,r.jsx)(t.p,{children:"By the end of this guide you will have opened Doriath from the Nextcloud\napp menu, added your first vault entry (a password or an API key),\nconfirmed that the value is encrypted at rest, and located the entry\nagain from the search bar."}),"\n",(0,r.jsx)(t.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["A Nextcloud account on an instance where the ",(0,r.jsx)(t.strong,{children:"Doriath"})," app is\ninstalled and enabled."]}),"\n",(0,r.jsxs)(t.li,{children:["The ",(0,r.jsx)(t.strong,{children:"OpenRegister"})," app installed and enabled \u2014 Doriath stores its\nvault data through OpenRegister, so it is a hard dependency."]}),"\n",(0,r.jsx)(t.li,{children:"A Nextcloud master encryption key configured (the platform's own\nserver-side encryption; Doriath layers per-entry encryption on top)."}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"steps",children:"Steps"}),"\n",(0,r.jsxs)(t.p,{children:["The numbered steps land here once the UI is built. Each step that\nwarrants a screenshot will get a matching shoot() call in the\n",(0,r.jsx)(t.code,{children:"docs-screenshots"})," capture spec (see ADR-030 / journeydoc)."]}),"\n",(0,r.jsx)(t.h2,{id:"verification",children:"Verification"}),"\n",(0,r.jsx)(t.p,{children:'You are set up correctly when: Doriath renders the empty-vault state on\nfirst launch, adding an entry returns to a list view with the entry\npresent, and reopening the entry shows the value behind a "Reveal"\ngate \u2014 never inline as plain text.'}),"\n",(0,r.jsx)(t.h2,{id:"common-issues",children:"Common issues"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Symptom"}),(0,r.jsx)(t.th,{children:"Fix"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Doriath is missing from the app menu"}),(0,r.jsx)(t.td,{children:"The app is not enabled for your account \u2014 ask an administrator to enable it."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:'"OpenRegister is not installed or enabled" banner'}),(0,r.jsx)(t.td,{children:"Install and enable OpenRegister, then reload Doriath."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Vault entries appear as plain text"}),(0,r.jsxs)(t.td,{children:["Nextcloud server-side encryption is not configured; see the ",(0,r.jsx)(t.a,{href:"/docs/tutorials/admin/admin-settings",children:"Admin guide"}),"."]})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"reference",children:"Reference"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.a,{href:"/docs/tutorials/admin/admin-settings",children:"Manage Doriath settings"})," \u2014 encryption setup, group-level policies."]}),"\n",(0,r.jsxs)(t.li,{children:["Doriath on GitHub: ",(0,r.jsx)(t.a,{href:"https://github.com/ConductionNL/doriath",children:"ConductionNL/doriath"}),"."]}),"\n"]})]})}function c(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}}}]); \ No newline at end of file diff --git a/docs/build/assets/js/f622ed5e.84a45866.js b/docs/build/assets/js/f622ed5e.84a45866.js deleted file mode 100644 index 96cb7f762..000000000 --- a/docs/build/assets/js/f622ed5e.84a45866.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[9062],{53(a){a.exports=JSON.parse('{"name":"conduction-features-page","id":"default"}')}}]); \ No newline at end of file diff --git a/docs/build/assets/js/main.90d140f6.js b/docs/build/assets/js/main.90d140f6.js deleted file mode 100644 index 04e2e55a7..000000000 --- a/docs/build/assets/js/main.90d140f6.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.90d140f6.js.LICENSE.txt */ -(globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[]).push([[8792],{8328(e,t,n){"use strict";n.d(t,{A:()=>p});n(6540);var r=n(3259),a=n.n(r),o=n(4054);const i={"11b43341":[()=>n.e(2256).then(n.t.bind(n,7674,19)),"@generated/docusaurus-plugin-content-docs/default/p/docs-7fc.json",7674],"14eb3368":[()=>Promise.all([n.e(1869),n.e(6969)]).then(n.bind(n,8059)),"@theme/DocCategoryGeneratedIndexPage",8059],17896441:[()=>Promise.all([n.e(1869),n.e(2076),n.e(8007),n.e(8401)]).then(n.bind(n,1719)),"@theme/DocItem",1719],"1e9767c5":[()=>Promise.all([n.e(2076),n.e(9348)]).then(n.bind(n,7596)),"@site/ARCHITECTURE.md",7596],"2e5b4b03":[()=>Promise.all([n.e(2076),n.e(5680)]).then(n.bind(n,7535)),"@site/intro.md",7535],"3b3e214a":[()=>Promise.all([n.e(2076),n.e(9366)]).then(n.bind(n,7961)),"@site/DESIGN-REFERENCES.md",7961],"4081bc5c":[()=>Promise.all([n.e(1869),n.e(931)]).then(n.bind(n,832)),"/home/rubenlinde/nextcloud-docker-dev/workspace/server/apps-extra/doriath/docs/node_modules/@conduction/docusaurus-preset/src/components/FeaturesPage/FeaturesPage.jsx",832],"5e95c892":[()=>n.e(9647).then(n.bind(n,7121)),"@theme/DocsRoot",7121],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,4784)),"@generated/docusaurus.config",4784],"6f7f7b1d":[()=>Promise.all([n.e(2076),n.e(8336)]).then(n.bind(n,8199)),"@site/FEATURES.md",8199],"8cb5fad5":[()=>n.e(4673).then(n.t.bind(n,5261,19)),"@generated/docusaurus-plugin-content-docs/default/p/docs-category-admin-guide-e8c.json",5261],"922e3df9":[()=>Promise.all([n.e(2076),n.e(9011)]).then(n.bind(n,9408)),"@site/tutorials/admin/01-admin-settings.md",9408],a7456010:[()=>n.e(1235).then(n.t.bind(n,8552,19)),"@generated/docusaurus-plugin-content-pages/default/__plugin.json",8552],a7bd4aaa:[()=>n.e(7098).then(n.bind(n,1723)),"@theme/DocVersionRoot",1723],a94703ab:[()=>Promise.all([n.e(1869),n.e(9048)]).then(n.bind(n,461)),"@theme/DocRoot",461],aba21aa0:[()=>n.e(5742).then(n.t.bind(n,7093,19)),"@generated/docusaurus-plugin-content-docs/default/__plugin.json",7093],af516ec7:[()=>n.e(1645).then(n.t.bind(n,5582,19)),"/home/rubenlinde/nextcloud-docker-dev/workspace/server/apps-extra/doriath/docs/.docusaurus/conduction-features-page/default/conduction-features-page.json",5582],af75b968:[()=>n.e(6687).then(n.t.bind(n,4255,19)),"@generated/docusaurus-plugin-content-docs/default/p/docs-category-tutorials-344.json",4255],b1abb4d6:[()=>n.e(9705).then(n.t.bind(n,4381,19)),"@generated/docusaurus-plugin-content-docs/default/p/docs-category-user-guide-846.json",4381],c4f5d8e4:[()=>Promise.all([n.e(1869),n.e(8007),n.e(2634)]).then(n.bind(n,192)),"@site/src/pages/index.js",192],ec6d3eb8:[()=>Promise.all([n.e(2076),n.e(5359)]).then(n.bind(n,5741)),"@site/tutorials/user/01-first-launch.md",5741],f622ed5e:[()=>n.e(9062).then(n.t.bind(n,53,19)),"@generated/conduction-features-page/default/__plugin.json",53]};var l=n(4848);function s({error:e,retry:t,pastDelay:n}){return e?(0,l.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,l.jsx)("p",{children:String(e)}),(0,l.jsx)("div",{children:(0,l.jsx)("button",{type:"button",onClick:t,children:"Retry"})})]}):n?(0,l.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,l.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,l.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,l.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var c=n(6921),u=n(3102);function d(e,t){if("*"===e)return a()({loading:s,loader:()=>Promise.all([n.e(1869),n.e(2237)]).then(n.bind(n,2237)),modules:["@theme/NotFound"],webpack:()=>[2237],render(e,t){const n=e.default;return(0,l.jsx)(u.W,{value:{plugin:{name:"native",id:"default"}},children:(0,l.jsx)(n,{...t})})}});const r=o[`${e}-${t}`],d={},p=[],f=[],h=(0,c.A)(r);return Object.entries(h).forEach(([e,t])=>{const n=i[t];n&&(d[e]=n[0],p.push(n[1]),f.push(n[2]))}),a().Map({loading:s,loader:d,modules:p,webpack:()=>f,render(t,n){const a=JSON.parse(JSON.stringify(r));Object.entries(t).forEach(([t,n])=>{const r=n.default;if(!r)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof r&&"function"!=typeof r||Object.keys(n).filter(e=>"default"!==e).forEach(e=>{r[e]=n[e]});let o=a;const i=t.split(".");i.slice(0,-1).forEach(e=>{o=o[e]}),o[i[i.length-1]]=r});const o=a.__comp;delete a.__comp;const i=a.__context;delete a.__context;const s=a.__props;return delete a.__props,(0,l.jsx)(u.W,{value:i,children:(0,l.jsx)(o,{...a,...s,...n})})}})}const p=[{path:"/features/",component:d("/features/","1d2"),exact:!0},{path:"/docs/",component:d("/docs/","7e4"),routes:[{path:"/docs/",component:d("/docs/","305"),routes:[{path:"/docs/",component:d("/docs/","940"),routes:[{path:"/docs/ARCHITECTURE/",component:d("/docs/ARCHITECTURE/","34e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/category/admin-guide/",component:d("/docs/category/admin-guide/","bc9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/category/tutorials/",component:d("/docs/category/tutorials/","ae9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/category/user-guide/",component:d("/docs/category/user-guide/","a58"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/DESIGN-REFERENCES/",component:d("/docs/DESIGN-REFERENCES/","7fb"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/FEATURES/",component:d("/docs/FEATURES/","fcf"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/intro/",component:d("/docs/intro/","224"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/tutorials/admin/admin-settings/",component:d("/docs/tutorials/admin/admin-settings/","944"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/tutorials/user/first-launch/",component:d("/docs/tutorials/user/first-launch/","391"),exact:!0,sidebar:"tutorialSidebar"}]}]}]},{path:"/",component:d("/","2e1"),exact:!0},{path:"*",component:d("*")}]},8903(e,t,n){"use strict";n.d(t,{A:()=>u});var r=n(6540),a=n(2303),o=n(1312);const i={modal:"modal_zIZY",overlay:"overlay_poid",panel:"panel_H2Bg",close:"close_BDR2",eyebrow:"eyebrow_Xeup",title:"title_TMh8",subtitle:"subtitle_KO1I",scorePill:"scorePill_Saaj",progress:"progress_T26X",progressLabel:"progressLabel_p8uc",progressBar:"progressBar_U8As",progressFill:"progressFill_rTU0",grid:"grid_GCc_",gridItem:"gridItem_Nwqd",gridItemFound:"gridItemFound_bJ8w",gridHex:"gridHex_a8lU",cta:"cta_K6Qw",actions:"actions_sWON",btnSecondary:"btnSecondary_pgRe",btnPrimary:"btnPrimary_ZZIQ"};var l=n(4848);const s="conduction:minigames",c=[{id:"hexrain",label:"Twelve apps \xb7 hex rain"},{id:"boats",label:"Sink the boats \xb7 footer canal"},{id:"invaders",label:"Hex-vaders \xb7 cookie CLI"},{id:"logo-memory",label:"Logo memory \xb7 clients marquee"},{id:"kade-cyclist",label:"Kade cyclist \xb7 footer kade"}];function u({games:e=c,className:t}){const n=(0,a.A)(),[u,d]=(0,r.useState)(!1),[p,f]=(0,r.useState)(null),[h,g]=(0,r.useState)({});(0,r.useEffect)(()=>{if(n)return g(function(){if("undefined"==typeof window)return{};try{const e=window.localStorage.getItem(s);return e?JSON.parse(e):{}}catch(e){return{}}}()),window.addEventListener("connext:gameend",e),()=>window.removeEventListener("connext:gameend",e);function e(e){const t=e.detail||{};f(t),d(!0),t.id&&g(n=>{if(n[t.id])return n;const r={...n,[t.id]:!0};return function(t){if("undefined"!=typeof window)try{window.localStorage.setItem(s,JSON.stringify(t))}catch(e){}}(r),r})}},[n]),(0,r.useEffect)(()=>{if(n&&u)return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e);function e(e){"Escape"===e.key&&d(!1)}},[n,u]);const m=(0,r.useCallback)(()=>{p?.id&&Promise.resolve().then(()=>{window.dispatchEvent(new CustomEvent("connext:gameclose",{detail:{id:p.id}}))}),d(!1)},[p]),y=(0,r.useCallback)(()=>{p?.id&&Promise.resolve().then(()=>{window.dispatchEvent(new CustomEvent("connext:gamereplay",{detail:{id:p.id}}))}),d(!1)},[p]),b=(0,r.useMemo)(()=>Object.values(h).filter(Boolean).length,[h]),v=e.length,w=v>0?Math.round(b/v*100):0;if(!n||!u||!p)return null;const x=p.won?(0,o.T)({id:"preset.gameModal.eyebrow.won",message:"Mini-game complete",description:"Eyebrow above the game-over heading when the player won"}):(0,o.T)({id:"preset.gameModal.eyebrow.lost",message:"Game over",description:"Eyebrow above the game-over heading when the player lost"}),k=p.title||(p.won?(0,o.T)({id:"preset.gameModal.title.won",message:"Nice run.",description:"Default headline on the game-over modal when the player won"}):(0,o.T)({id:"preset.gameModal.title.lost",message:"That's all of them.",description:"Default headline on the game-over modal when the player lost"})),S=p.subtitle||(p.won?(0,o.T)({id:"preset.gameModal.subtitle.won",message:"You've cleared a hidden Conduction mini-game.",description:"Default subtitle on the game-over modal when the player won"}):(0,o.T)({id:"preset.gameModal.subtitle.lost",message:"Try again any time, the rain doesn't stop.",description:"Default subtitle on the game-over modal when the player lost"}));return(0,l.jsxs)("div",{className:[i.modal,t].filter(Boolean).join(" "),role:"dialog","aria-modal":"true","aria-labelledby":"gm-title",children:[(0,l.jsx)("div",{className:i.overlay,onClick:m}),(0,l.jsxs)("div",{className:i.panel,children:[(0,l.jsx)("button",{type:"button",className:i.close,onClick:m,"aria-label":(0,o.T)({id:"preset.gameModal.close",message:"Close",description:"Accessible label for the close (\xd7) button on the game-over modal"}),children:"\xd7"}),(0,l.jsx)("p",{className:i.eyebrow,children:x}),(0,l.jsx)("h2",{className:i.title,id:"gm-title",children:k}),(0,l.jsx)("p",{className:i.subtitle,children:S}),void 0!==p.score&&(0,l.jsx)("span",{className:i.scorePill,children:p.summary||(0,o.T)({id:"preset.gameModal.scorePill",message:"score: {score}",description:"Default score pill text. {score} is the numeric score."},{score:p.score})}),(0,l.jsxs)("div",{className:i.progress,children:[(0,l.jsxs)("div",{className:i.progressLabel,children:[(0,l.jsx)("span",{children:(0,l.jsx)(o.A,{id:"preset.gameModal.progress.found",description:"Progress label below the game-over copy. {found} bolded count of games discovered; {total} is the total.",values:{found:(0,l.jsx)("strong",{children:b}),total:v},children:"{found} / {total} mini-games found"})}),(0,l.jsxs)("span",{children:[w,"%"]})]}),(0,l.jsx)("div",{className:i.progressBar,children:(0,l.jsx)("div",{className:i.progressFill,style:{width:w+"%"}})})]}),(0,l.jsx)("ul",{className:i.grid,children:e.map(e=>(0,l.jsxs)("li",{className:h[e.id]?i.gridItemFound:i.gridItem,children:[(0,l.jsx)("span",{className:i.gridHex,"aria-hidden":"true"}),(0,l.jsx)("span",{children:e.label})]},e.id))}),(0,l.jsx)("p",{className:i.cta,children:b<v?(0,o.T)({id:"preset.gameModal.cta.remaining",message:"{remaining, plural, one {# more game hidden somewhere. Keep clicking.} other {# more games hidden somewhere. Keep clicking.}}",description:"CTA text on the game-over modal when at least one game is still hidden. {remaining} is the count of games still hidden."},{remaining:v-b}):(0,o.T)({id:"preset.gameModal.cta.allFound",message:"All five found. You read the kit.",description:"CTA text on the game-over modal when the player has discovered every mini-game."})}),(0,l.jsxs)("div",{className:i.actions,children:[(0,l.jsx)("button",{type:"button",className:i.btnSecondary,onClick:m,children:(0,l.jsx)(o.A,{id:"preset.gameModal.action.close",description:"Close button label on the game-over modal",children:"Close"})}),(0,l.jsx)("button",{type:"button",className:i.btnPrimary,onClick:y,children:(0,l.jsx)(o.A,{id:"preset.gameModal.action.replay",description:"Replay button label on the game-over modal",children:"Play again"})})]})]})]})}},2966(e,t,n){"use strict";n.d(t,{Z:()=>a});n(6540);var r=n(4848);const a={github:(0,r.jsx)("svg",{viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:(0,r.jsx)("path",{d:"M12 .5C5.65.5.5 5.65.5 12c0 5.08 3.29 9.39 7.86 10.91.57.1.78-.25.78-.55v-2.16c-3.2.69-3.87-1.36-3.87-1.36-.52-1.33-1.27-1.69-1.27-1.69-1.04-.71.08-.7.08-.7 1.15.08 1.76 1.18 1.76 1.18 1.02 1.75 2.68 1.25 3.34.95.1-.74.4-1.25.73-1.54-2.55-.29-5.23-1.28-5.23-5.69 0-1.26.45-2.28 1.18-3.09-.12-.29-.51-1.46.11-3.05 0 0 .97-.31 3.18 1.18a11 11 0 015.8 0c2.2-1.49 3.17-1.18 3.17-1.18.63 1.59.23 2.76.11 3.05.74.81 1.18 1.83 1.18 3.09 0 4.42-2.69 5.4-5.25 5.68.41.36.78 1.06.78 2.13v3.16c0 .3.21.66.79.55C20.21 21.39 23.5 17.08 23.5 12 23.5 5.65 18.35.5 12 .5z"})}),apiDocs:(0,r.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,r.jsx)("path",{d:"M4 4h6a2 2 0 012 2v14a2 2 0 00-2-2H4z"}),(0,r.jsx)("path",{d:"M20 4h-6a2 2 0 00-2 2v14a2 2 0 012-2h6z"}),(0,r.jsx)("path",{d:"M8 9h2M8 13h2M16 9h-2M16 13h-2"})]}),arrowRight:(0,r.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,r.jsx)("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),(0,r.jsx)("polyline",{points:"13 6 19 12 13 18"})]})}},7225(e,t,n){"use strict";n.d(t,{Nu:()=>s,nN:()=>o,r5:()=>l});n(6540);var r=n(4848);const a=[{name:"connext",match:/^(?:\/nl)?\/connext(?:\/|$)/,home:"/connext",label:"ConNext",wordmark:(0,r.jsxs)(r.Fragment,{children:["Con",(0,r.jsx)("span",{className:"next-blue",children:"Next"})]})},{name:"commonground",match:/^(?:\/nl)?\/commonground(?:\/|$)/,home:"/commonground",label:"Common Ground+",wordmark:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"cg-plus-common",children:"Common"})," ",(0,r.jsx)("span",{className:"cg-yellow",children:"Ground"}),(0,r.jsx)("span",{className:"cg-plus-plus",children:"+"})]})}];function o(e,t){for(const n of a)if(n.match.test(e))return{...n,source:"path"};if(t)for(const n of a)if(n.label===t)return{...n,source:"title"};return null}const i=["OpenAI","Open","Docu","My","Pipe","Pro","Decid","Schol","Larping"];function l(e,t){if(!e)return null;if(t&&e.startsWith(t)&&e.length>t.length)return{prefix:t,rest:e.slice(t.length)};for(const n of i)if(e.startsWith(n)&&e.length>n.length)return{prefix:n,rest:e.slice(n.length)};return null}function s(e){if(!e||"string"!=typeof e)return"Stable";const t=e.match(/-(alpha|beta|rc)(?:\.|$|-)/i);if(t){const e=t[1].toLowerCase();return"rc"===e?"RC":"alpha"===e?"Alpha":"Beta"}const n=e.match(/^(\d+)\./);return n&&0===parseInt(n[1],10)?"Beta":"Stable"}},6573(e,t,n){"use strict";n.d(t,{B:()=>o});var r=n(6540),a=n(2303);function o(e,t){const n=(0,a.A)();(0,r.useEffect)(()=>{if(!n)return;if(!e)return;if(document.querySelector(`script[data-lazy-script="${t}"]`))return;const r=document.createElement("script");r.src=e,r.async=!0,r.dataset.lazyScript=t,document.body.appendChild(r)},[n,e,t])}},3730(e,t,n){"use strict";n.d(t,{s:()=>o});var r=n(6540),a=n(2303);function o(e,t){const n=(0,a.A)();(0,r.useEffect)(()=>{if(!n)return;if(!e)return;if(document.querySelector(`link[data-lazy-stylesheet="${t}"]`))return;const r=document.createElement("link");r.rel="stylesheet",r.href=e,r.dataset.lazyStylesheet=t,document.head.appendChild(r)},[n,e,t])}},6125(e,t,n){"use strict";n.d(t,{o:()=>o,x:()=>i});var r=n(6540),a=n(4848);const o=r.createContext(!1);function i({children:e}){const[t,n]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{n(!0)},[]),(0,a.jsx)(o.Provider,{value:t,children:e})}},8600(e,t,n){"use strict";var r=n(6540),a=n(5338),o=n(545),i=n(4625),l=n(4784),s=n(8193);const c=[n(119),n(6134),n(6294),n(1043),n(6136)];var u=n(8328),d=n(6347),p=n(2831),f=n(4848);function h({children:e}){return(0,f.jsx)(f.Fragment,{children:e})}var g=n(4563);const m=e=>e.defaultFormatter(e);function y({children:e}){return(0,f.jsx)(g.AL,{formatter:m,children:e})}function b({children:e}){return(0,f.jsx)(y,{children:e})}var v=n(5260),w=n(4586),x=n(6025),k=n(6342),S=n(5500),E=n(2131);var j=n(440),_=n(1463);function C(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,w.A)(),r=(0,E.o)(),a=n[e].htmlLang,o=e=>e.replace("-","_");return(0,f.jsxs)(v.A,{children:[Object.entries(n).map(([e,{htmlLang:t}])=>(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:e,fullyQualified:!0}),hrefLang:t},e)),(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,f.jsx)("meta",{property:"og:locale",content:o(a)}),Object.values(n).filter(e=>a!==e.htmlLang).map(e=>(0,f.jsx)("meta",{property:"og:locale:alternate",content:o(e.htmlLang)},`meta-og-${e.htmlLang}`))]})}function L({permalink:e}){const{siteConfig:{url:t}}=(0,w.A)(),n=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,w.A)(),{pathname:r}=(0,d.zy)();return e+(0,j.Ks)((0,x.Ay)(r),{trailingSlash:n,baseUrl:t})}(),r=e?`${t}${e}`:n;return(0,f.jsxs)(v.A,{children:[(0,f.jsx)("meta",{property:"og:url",content:r}),(0,f.jsx)("link",{rel:"canonical",href:r})]})}function A(){const{i18n:{currentLocale:e}}=(0,w.A)(),{metadata:t,image:n}=(0,k.p)();return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(v.A,{children:[(0,f.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,f.jsx)("body",{})]}),n&&(0,f.jsx)(S.be,{image:n}),(0,f.jsx)(L,{}),(0,f.jsx)(C,{}),(0,f.jsx)(_.A,{tag:"default",locale:e}),(0,f.jsx)(v.A,{children:t.map((e,t)=>(0,f.jsx)("meta",{...e},t))})]})}const T=new Map;var N=n(6125),P=n(6988),R=n(205);function O(e,...t){const n=c.map(n=>{const r=n.default?.[e]??n[e];return r?.(...t)});return()=>n.forEach(e=>e?.())}const D=function({children:e,location:t,previousLocation:n}){return(0,R.A)(()=>{n!==t&&(!function({location:e,previousLocation:t}){if(!t)return;const n=e.pathname===t.pathname,r=e.hash===t.hash,a=e.search===t.search;if(n&&r&&!a)return;const{hash:o}=e;if(o){const e=decodeURIComponent(o.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:t,previousLocation:n}),O("onRouteDidUpdate",{previousLocation:n,location:t}))},[n,t]),e};function I(e){const t=Array.from(new Set([e,decodeURI(e)])).map(e=>(0,p.u)(u.A,e)).flat();return Promise.all(t.map(e=>e.route.component.preload?.()))}class F extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=s.A.canUseDOM?O("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=O("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),I(n.pathname).then(()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})}).catch(e=>{console.warn(e),window.location.reload()}),!1}render(){const{children:e,location:t}=this.props;return(0,f.jsx)(D,{previousLocation:this.previousLocation,location:t,children:(0,f.jsx)(d.qh,{location:t,render:()=>e})})}}const M=F,z="__docusaurus-base-url-issue-banner-suggestion-container";function B(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '__docusaurus-base-url-issue-banner-container';\n var bannerHtml = ${JSON.stringify(function(e){return`\n<div id="__docusaurus-base-url-issue-banner" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">${e}</span> ${"/"===e?" (default value)":""}</p>\n <p>We suggest trying baseUrl = <span id="${z}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n document.body.prepend(bannerContainer);\n var suggestionContainer = document.getElementById('${z}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function $(){const{siteConfig:{baseUrl:e}}=(0,w.A)();return(0,f.jsx)(f.Fragment,{children:!s.A.canUseDOM&&(0,f.jsx)(v.A,{children:(0,f.jsx)("script",{children:B(e)})})})}function U(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,w.A)(),{pathname:n}=(0,d.zy)();return t&&n===e?(0,f.jsx)($,{}):null}function q(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:r,localeConfigs:a}}=(0,w.A)(),o=(0,x.Ay)(e),{htmlLang:i,direction:l}=a[r];return(0,f.jsxs)(v.A,{children:[(0,f.jsx)("html",{lang:i,dir:l}),(0,f.jsx)("title",{children:t}),(0,f.jsx)("meta",{property:"og:title",content:t}),(0,f.jsx)("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&(0,f.jsx)("meta",{name:"robots",content:"noindex, nofollow"}),e&&(0,f.jsx)("link",{rel:"icon",href:o})]})}var H=n(7489),G=n(2303);function W(){const e=(0,G.A)();return(0,f.jsx)(v.A,{children:(0,f.jsx)("html",{"data-has-hydrated":e})})}const V=(0,p.v)(u.A);function Q(){const e=function(e){if(T.has(e.pathname))return{...e,pathname:T.get(e.pathname)};if((0,p.u)(u.A,e.pathname).some(({route:e})=>!0===e.exact))return T.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,t),{...e,pathname:t}}((0,d.zy)());return(0,f.jsx)(M,{location:e,children:V})}function Z(){return(0,f.jsx)(H.A,{children:(0,f.jsx)(P.l,{children:(0,f.jsxs)(N.x,{children:[(0,f.jsx)(h,{children:(0,f.jsxs)(b,{children:[(0,f.jsx)(q,{}),(0,f.jsx)(A,{}),(0,f.jsx)(U,{}),(0,f.jsx)(Q,{})]})}),(0,f.jsx)(W,{})]})})})}var K=n(4054);const Y=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)})}:function(e){return new Promise((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)})};var X=n(6921);const J=new Set,ee=new Set,te=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ne={prefetch:e=>{if(!(e=>!te()&&!ee.has(e)&&!J.has(e))(e))return!1;J.add(e);const t=(0,p.u)(u.A,e).flatMap(e=>{return t=e.route.path,Object.entries(K).filter(([e])=>e.replace(/-[^-]+$/,"")===t).flatMap(([,e])=>Object.values((0,X.A)(e)));var t});return Promise.all(t.map(e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Y(t).catch(()=>{}):Promise.resolve()}))},preload:e=>!!(e=>!te()&&!ee.has(e))(e)&&(ee.add(e),I(e))},re=Object.freeze(ne);function ae({children:e}){return"hash"===l.default.future.experimental_router?(0,f.jsx)(i.I9,{children:e}):(0,f.jsx)(i.Kd,{children:e})}const oe=Boolean(!0);if(s.A.canUseDOM){window.docusaurus=re;const e=document.getElementById("__docusaurus"),t=(0,f.jsx)(o.vd,{children:(0,f.jsx)(ae,{children:(0,f.jsx)(Z,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},i=()=>{if(window.docusaurusRoot)window.docusaurusRoot.render(t);else if(oe)window.docusaurusRoot=a.hydrateRoot(e,t,{onRecoverableError:n});else{const r=a.createRoot(e,{onRecoverableError:n});r.render(t),window.docusaurusRoot=r}};I(window.location.pathname).then(()=>{(0,r.startTransition)(i)})}},6988(e,t,n){"use strict";n.d(t,{o:()=>d,l:()=>p});var r=n(6540),a=n(4784);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"intro","docs":[{"id":"ARCHITECTURE","path":"/docs/ARCHITECTURE","sidebar":"tutorialSidebar"},{"id":"DESIGN-REFERENCES","path":"/docs/DESIGN-REFERENCES","sidebar":"tutorialSidebar"},{"id":"FEATURES","path":"/docs/FEATURES","sidebar":"tutorialSidebar"},{"id":"intro","path":"/docs/intro","sidebar":"tutorialSidebar"},{"id":"tutorials/admin/admin-settings","path":"/docs/tutorials/admin/admin-settings","sidebar":"tutorialSidebar"},{"id":"tutorials/user/first-launch","path":"/docs/tutorials/user/first-launch","sidebar":"tutorialSidebar"},{"id":"/category/tutorials","path":"/docs/category/tutorials","sidebar":"tutorialSidebar"},{"id":"/category/user-guide","path":"/docs/category/user-guide","sidebar":"tutorialSidebar"},{"id":"/category/admin-guide","path":"/docs/category/admin-guide","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/docs/intro","label":"intro"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en","translate":false,"url":"https://doriath.conduction.nl","baseUrl":"/"}}}');var l=n(2654);const s=JSON.parse('{"docusaurusVersion":"3.10.1","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.10.1"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.10.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.10.1"},"docusaurus-plugin-svgr":{"type":"package","name":"@docusaurus/plugin-svgr","version":"3.10.1"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.10.1"},"conduction-ai-crawling":{"type":"package","name":"@conduction/docusaurus-preset","version":"3.9.0"},"conduction-indexnow":{"type":"package","name":"@conduction/docusaurus-preset","version":"3.9.0"},"conduction-features-page":{"type":"package","name":"@conduction/docusaurus-preset","version":"3.9.0"},"@conduction/docusaurus-theme":{"type":"package","name":"@conduction/docusaurus-preset","version":"3.9.0"},"docusaurus-theme-mermaid":{"type":"package","name":"@docusaurus/theme-mermaid","version":"3.10.1"}}}');var c=n(4848);const u={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},d=r.createContext(u);function p({children:e}){return(0,c.jsx)(d.Provider,{value:u,children:e})}},7489(e,t,n){"use strict";n.d(t,{A:()=>g});var r=n(6540),a=n(8193),o=n(5260),i=n(440),l=n(1827),s=n(3102),c=n(4848);function u({error:e,tryAgain:t}){return(0,c.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,c.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,c.jsx)("button",{type:"button",onClick:t,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,c.jsx)(d,{error:e})]})}function d({error:e}){const t=(0,i.rA)(e).map(e=>e.message).join("\n\nCause:\n");return(0,c.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:t})}function p({children:e}){return(0,c.jsx)(s.W,{value:{plugin:{name:"docusaurus-core-error-boundary",id:"default"}},children:e})}function f({error:e,tryAgain:t}){return(0,c.jsx)(p,{children:(0,c.jsxs)(g,{fallback:()=>(0,c.jsx)(u,{error:e,tryAgain:t}),children:[(0,c.jsx)(o.A,{children:(0,c.jsx)("title",{children:"Page Error"})}),(0,c.jsx)(l.A,{children:(0,c.jsx)(u,{error:e,tryAgain:t})})]})})}const h=e=>(0,c.jsx)(f,{...e});class g extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.A.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??h)(e)}return e??null}}},8193(e,t,n){"use strict";n.d(t,{A:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5260(e,t,n){"use strict";n.d(t,{A:()=>o});n(6540);var r=n(545),a=n(4848);function o(e){return(0,a.jsx)(r.mg,{...e})}},8774(e,t,n){"use strict";n.d(t,{A:()=>f});var r=n(6540),a=n(4625),o=n(440),i=n(4586),l=n(6654),s=n(8193),c=n(3427),u=n(6025),d=n(4848);function p({isNavLink:e,to:t,href:n,activeClassName:p,isActive:f,"data-noBrokenLinkCheck":h,autoAddBaseUrl:g=!0,...m},y){const{siteConfig:b}=(0,i.A)(),{trailingSlash:v,baseUrl:w}=b,x=b.future.experimental_router,{withBaseUrl:k}=(0,u.hH)(),S=(0,c.A)(),E=(0,r.useRef)(null);(0,r.useImperativeHandle)(y,()=>E.current);const j=t||n;const _=(0,l.A)(j),C=j?.replace("pathname://","");let L=void 0!==C?(A=C,g&&(e=>e.startsWith("/"))(A)?k(A):A):void 0;var A;"hash"===x&&L?.startsWith("./")&&(L=L?.slice(1)),L&&_&&(L=(0,o.Ks)(L,{trailingSlash:v,baseUrl:w}));const T=(0,r.useRef)(!1),N=e?a.k2:a.N_,P=s.A.canUseIntersectionObserver,R=(0,r.useRef)(void 0),O=()=>{T.current||null==L||(window.docusaurus.preload(L),T.current=!0)};(0,r.useEffect)(()=>(!P&&_&&s.A.canUseDOM&&null!=L&&window.docusaurus.prefetch(L),()=>{P&&R.current&&R.current.disconnect()}),[R,L,P,_]);const D=L?.startsWith("#")??!1,I=!m.target||"_self"===m.target,F=!L||!_||!I||D&&"hash"!==x;h||!D&&F||S.collectLink(L),m.id&&S.collectAnchor(m.id);const M={};return F?(0,d.jsx)("a",{ref:E,href:L,...j&&!_&&{target:"_blank",rel:"noopener noreferrer"},...m,...M}):(0,d.jsx)(N,{...m,onMouseEnter:O,onTouchStart:O,innerRef:e=>{E.current=e,P&&e&&_&&(R.current=new window.IntersectionObserver(t=>{t.forEach(t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(R.current.unobserve(e),R.current.disconnect(),null!=L&&window.docusaurus.prefetch(L))})}),R.current.observe(e))},to:L,...e&&{isActive:f,activeClassName:p},...M})}const f=r.forwardRef(p)},1312(e,t,n){"use strict";n.d(t,{A:()=>c,T:()=>s});var r=n(6540),a=n(4848);function o(e,t){const n=e.split(/(\{\w+\})/).map((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e});return n.some(e=>(0,r.isValidElement)(e))?n.map((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e).filter(e=>""!==e):n.join("")}var i=n(2654);function l({id:e,message:t}){if(void 0===e&&void 0===t)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[e??t]??t??e}function s({message:e,id:t},n){return o(l({message:e,id:t}),n)}function c({children:e,id:t,values:n}){if(e&&"string"!=typeof e)throw console.warn("Illegal <Translate> children",e),new Error("The Docusaurus <Translate> component only accept simple string values");const r=l({message:e,id:t});return(0,a.jsx)(a.Fragment,{children:o(r,n)})}},7065(e,t,n){"use strict";n.d(t,{W:()=>r});const r="default"},6654(e,t,n){"use strict";function r(e){return/^(?:[A-Za-z][A-Za-z\d+.-]*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{A:()=>a,z:()=>r})},6025(e,t,n){"use strict";n.d(t,{Ay:()=>l,hH:()=>i});var r=n(6540),a=n(4586),o=n(6654);function i(){const{siteConfig:e}=(0,a.A)(),{baseUrl:t,url:n}=e,i=e.future.experimental_router,l=(0,r.useCallback)((e,r)=>function({siteUrl:e,baseUrl:t,url:n,options:{forcePrependBaseUrl:r=!1,absolute:a=!1}={},router:i}){if(!n||n.startsWith("#")||(0,o.z)(n))return n;if("hash"===i)return n.startsWith("/")?`.${n}`:`./${n}`;if(r)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return a?e+l:l}({siteUrl:n,baseUrl:t,url:e,options:r,router:i}),[n,t,i]);return{withBaseUrl:l}}function l(e,t={}){const{withBaseUrl:n}=i();return n(e,t)}},3427(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(6540);n(4848);const a=r.createContext({collectAnchor:()=>{},collectLink:()=>{}});function o(){return(0,r.useContext)(a)}},4586(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(6988);function o(){return(0,r.useContext)(a.o)}},6588(e,t,n){"use strict";n.d(t,{P_:()=>i,kh:()=>o});var r=n(4586),a=n(7065);function o(e,t={}){const n=function(){const{globalData:e}=(0,r.A)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}function i(e,t=a.W,n={}){const r=o(e),i=r?.[t];if(!i&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return i}},2303(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(6125);function o(){return(0,r.useContext)(a.o)}},205(e,t,n){"use strict";n.d(t,{A:()=>a});var r=n(6540);const a=n(8193).A.canUseDOM?r.useLayoutEffect:r.useEffect},6803(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(3102);function o(){const e=r.useContext(a.o);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}},6921(e,t,n){"use strict";n.d(t,{A:()=>r});function r(e){const t={};return function e(n,r){Object.entries(n).forEach(([n,a])=>{const o=r?`${r}.${n}`:n;var i;"object"==typeof(i=a)&&i&&Object.keys(i).length>0?e(a,o):t[o]=a})}(e),t}},3102(e,t,n){"use strict";n.d(t,{W:()=>i,o:()=>o});var r=n(6540),a=n(4848);const o=r.createContext(null);function i({children:e,value:t}){const n=r.useContext(o),i=(0,r.useMemo)(()=>function({parent:e,value:t}){if(!e){if(!t)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in t))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return t}const n={...e.data,...t?.data};return{plugin:e.plugin,data:n}}({parent:n,value:t}),[n,t]);return(0,a.jsx)(o.Provider,{value:i,children:e})}},3886(e,t,n){"use strict";n.d(t,{VQ:()=>y,g1:()=>v});var r=n(6540),a=n(8295),o=n(7065),i=n(6342),l=n(679),s=n(9532),c=n(4848);const u=e=>`docs-preferred-version-${e}`,d=(e,t,n)=>{(0,l.Wf)(u(e),{persistence:t}).set(n)},p=(e,t)=>(0,l.Wf)(u(e),{persistence:t}).get(),f=(e,t)=>{(0,l.Wf)(u(e),{persistence:t}).del()};const h=r.createContext(null);function g(){const e=(0,a.Gy)(),t=(0,i.p)().docs.versionPersistence,n=(0,r.useMemo)(()=>Object.keys(e),[e]),[o,l]=(0,r.useState)(()=>(e=>Object.fromEntries(e.map(e=>[e,{preferredVersionName:null}])))(n));(0,r.useEffect)(()=>{l(function({pluginIds:e,versionPersistence:t,allDocsData:n}){function r(e){const r=p(e,t);return n[e].versions.some(e=>e.name===r)?{preferredVersionName:r}:(f(e,t),{preferredVersionName:null})}return Object.fromEntries(e.map(e=>[e,r(e)]))}({allDocsData:e,versionPersistence:t,pluginIds:n}))},[e,t,n]);return[o,(0,r.useMemo)(()=>({savePreferredVersion:function(e,n){d(e,t,n),l(t=>({...t,[e]:{preferredVersionName:n}}))}}),[t])]}function m({children:e}){const t=g();return(0,c.jsx)(h.Provider,{value:t,children:e})}function y({children:e}){return(0,c.jsx)(m,{children:e})}function b(){const e=(0,r.useContext)(h);if(!e)throw new s.dV("DocsPreferredVersionContextProvider");return e}function v(e=o.W){const t=(0,a.ht)(e),[n,i]=b(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find(e=>e.name===l)??null,savePreferredVersionName:(0,r.useCallback)(t=>{i.savePreferredVersion(e,t)},[i,e])}}},609(e,t,n){"use strict";n.d(t,{V:()=>s,t:()=>c});var r=n(6540),a=n(9532),o=n(4848);const i=Symbol("EmptyContext"),l=r.createContext(i);function s({children:e,name:t,items:n}){const a=(0,r.useMemo)(()=>t&&n?{name:t,items:n}:null,[t,n]);return(0,o.jsx)(l.Provider,{value:a,children:e})}function c(){const e=(0,r.useContext)(l);if(e===i)throw new a.dV("DocsSidebarProvider");return e}},4718(e,t,n){"use strict";n.d(t,{d1:()=>_,Nr:()=>f,w8:()=>y,$S:()=>h,a4:()=>g,cC:()=>p,B5:()=>j,Vd:()=>k,QB:()=>E,fW:()=>S,OF:()=>x,Y:()=>v});var r=n(6540),a=n(6347),o=n(2831),i=n(8295),l=n(9169);function s(e){return Array.from(new Set(e))}var c=n(3886),u=n(3025),d=n(609);function p(e){const t=(0,u.r)();if(!e)return;const n=t.docs[e];if(!n)throw new Error(`no version doc found by id=${e}`);return n}function f(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=f(t);if(e)return e}}(e):void 0:e.href}function h(){const{pathname:e}=(0,a.zy)(),t=(0,d.t)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=w({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(`${e} is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.`);return n}function g(){const{pathname:e}=(0,a.zy)(),t=(0,d.t)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=w({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];return n?.items??t.items}const m=(e,t)=>void 0!==e&&(0,l.ys)(e,t);function y(e,t){return"link"===e.type?m(e.href,t):"category"===e.type&&(m(e.href,t)||((e,t)=>e.some(e=>y(e,t)))(e.items,t))}function b(e,t){switch(e.type){case"category":return y(e,t)||void 0!==e.href&&!e.linkUnlisted||e.items.some(e=>b(e,t));case"link":return!e.unlisted||y(e,t);default:return!0}}function v(e,t){return(0,r.useMemo)(()=>e.filter(e=>b(e,t)),[e,t])}function w({sidebarItems:e,pathname:t,onlyCategories:n=!1}){const r=[];return function e(a){for(const o of a)if("category"===o.type){if((0,l.ys)(o.href,t)||e(o.items))return r.unshift(o),!0}else if("link"===o.type&&o.docId&&(0,l.ys)(o.href,t))return n||r.unshift(o),!0;return!1}(e),r}function x(){const e=(0,d.t)(),{pathname:t}=(0,a.zy)(),n=(0,i.vT)()?.pluginData.breadcrumbs;return!1!==n&&e?w({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,i.zK)(e),{preferredVersion:n}=(0,c.g1)(e),a=(0,i.r7)(e);return(0,r.useMemo)(()=>s([t,n,a].filter(Boolean)),[t,n,a])}function S(e,t){const n=k(t);return(0,r.useMemo)(()=>{const t=n.flatMap(e=>e.sidebars?Object.entries(e.sidebars):[]),r=t.find(t=>t[0]===e);if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map(e=>e.name).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map(e=>e[0]).join("\n- ")}`);return r[1]},[e,n])}function E(e,t){const n=k(t);return(0,r.useMemo)(()=>{const t=n.flatMap(e=>e.docs),r=t.find(t=>t.id===e);if(!r){if(n.flatMap(e=>e.draftIds).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map(e=>e.name).join(", ")}".\nAvailable doc ids are:\n- ${s(t.map(e=>e.id)).join("\n- ")}`)}return r},[e,n])}function j({route:e}){const t=(0,a.zy)(),n=(0,u.r)(),r=e.routes,i=r.find(e=>(0,a.B6)(t.pathname,e));if(!i)return null;const l=i.sidebar,s=l?n.docsSidebars[l]:void 0;return{docElement:(0,o.v)(r),sidebarName:l,sidebarItems:s}}function _(e){return e.filter(e=>!("category"===e.type||"link"===e.type)||!!f(e))}},3025(e,t,n){"use strict";n.d(t,{n:()=>l,r:()=>s});var r=n(6540),a=n(9532),o=n(4848);const i=r.createContext(null);function l({children:e,version:t}){return(0,o.jsx)(i.Provider,{value:t,children:e})}function s(){const e=(0,r.useContext)(i);if(null===e)throw new a.dV("DocsVersionProvider");return e}},8295(e,t,n){"use strict";n.d(t,{zK:()=>f,vT:()=>u,Gy:()=>s,HW:()=>h,ht:()=>c,r7:()=>p,jh:()=>d});var r=n(6347),a=n(6588);const o=e=>e.versions.find(e=>e.isLast);function i(e,t){const n=function(e,t){return[...e.versions].sort((e,t)=>e.path===t.path?0:e.path.includes(t.path)?-1:t.path.includes(e.path)?1:0).find(e=>!!(0,r.B6)(t,{path:e.path,exact:!1,strict:!1}))}(e,t),a=n?.docs.find(e=>!!(0,r.B6)(t,{path:e.path,exact:!0,strict:!1}));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach(e=>{e.docs.forEach(r=>{r.id===t&&(n[e.name]=r)})}),n}(a.id):{}}}const l={},s=()=>(0,a.kh)("docusaurus-plugin-content-docs")??l,c=e=>{try{return(0,a.P_)("docusaurus-plugin-content-docs",e,{failfast:!0})}catch(t){throw new Error("You are using a feature of the Docusaurus docs plugin, but this plugin does not seem to be enabled"+("Default"===e?"":` (pluginId=${e}`),{cause:t})}};function u(e={}){const t=s(),{pathname:n}=(0,r.zy)();return function(e,t,n={}){const a=Object.entries(e).sort((e,t)=>t[1].path.localeCompare(e[1].path)).find(([,e])=>!!(0,r.B6)(t,{path:e.path,exact:!1,strict:!1})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map(e=>e.path).join(", ")}`);return o}(t,n,e)}function d(e){return c(e).versions}function p(e){const t=c(e);return o(t)}function f(e){const t=c(e),{pathname:n}=(0,r.zy)();return i(t,n)}function h(e){const t=c(e),{pathname:n}=(0,r.zy)();return function(e,t){const n=o(e);return{latestDocSuggestion:i(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},6294(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(5947),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate({location:e,previousLocation:t}){if(t&&e.pathname!==t.pathname){const e=window.setTimeout(()=>{a().start()},200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},6134(e,t,n){"use strict";var r=n(4876),a=n(4784);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t,o=globalThis.Prism;globalThis.Prism=e,r.forEach(e=>{"php"===e&&n(9700),n(8692)(`./prism-${e}`)}),delete globalThis.Prism,void 0!==o&&(globalThis.Prism=e)}(r.My)},3186(e,t,n){"use strict";n.d(t,{A:()=>i});n(6540);var r=n(1312);const a="iconExternalLink_nPIU";var o=n(4848);function i({width:e=13.5,height:t=13.5}){return(0,o.jsx)("svg",{width:e,height:t,"aria-label":(0,r.T)({id:"theme.IconExternalLink.ariaLabel",message:"(opens in new tab)",description:"The ARIA label for the external link icon"}),className:a,children:(0,o.jsx)("use",{href:"#theme-svg-external-link"})})}},1827(e,t,n){"use strict";n.d(t,{A:()=>Et});var r=n(6540),a=n(8215),o=n(7489),i=n(5500),l=n(6347),s=n(1312),c=n(5062),u=n(4848);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,l.W6)(),n=(0,r.useCallback)(e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)},[]);return(0,c.$)(({location:n})=>{e.current&&!n.hash&&"PUSH"===t&&p(e.current)}),{containerRef:e,onClick:n}}const h=(0,s.T)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function g(e){const t=e.children??h,{containerRef:n,onClick:r}=f();return(0,u.jsx)("div",{ref:n,role:"region","aria-label":h,children:(0,u.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var m=n(7559);const y="skipToContent_fXgn";function b(){return(0,u.jsx)(g,{className:y})}var v=n(6342),w=n(5041);function x({width:e=21,height:t=21,color:n="currentColor",strokeWidth:r=1.2,className:a,...o}){return(0,u.jsx)("svg",{viewBox:"0 0 15 15",width:e,height:t,...o,children:(0,u.jsx)("g",{stroke:n,strokeWidth:r,children:(0,u.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const k="closeButton_CVFx";function S(e){return(0,u.jsx)("button",{type:"button","aria-label":(0,s.T)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,a.A)("clean-btn close",k,e.className),children:(0,u.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const E="content_knG7";function j(e){const{announcementBar:t}=(0,v.p)(),{content:n}=t;return(0,u.jsx)("div",{...e,className:(0,a.A)(E,e.className),dangerouslySetInnerHTML:{__html:n}})}const _="announcementBar_mb4j",C="announcementBarPlaceholder_vyr4",L="announcementBarClose_gvF7",A="announcementBarContent_xLdY";function T(){const{announcementBar:e}=(0,v.p)(),{isActive:t,close:n}=(0,w.M)();if(!t)return null;const{backgroundColor:r,textColor:o,isCloseable:i}=e;return(0,u.jsxs)("div",{className:(0,a.A)(m.G.announcementBar.container,_),style:{backgroundColor:r,color:o},role:"banner",children:[i&&(0,u.jsx)("div",{className:C}),(0,u.jsx)(j,{className:A}),i&&(0,u.jsx)(S,{onClick:n,className:L})]})}var N=n(8774),P=n(6025),R=n(4586),O=n(2131),D=n(7485);function I(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var F=n(1422),M=n(9169);var z=n(6654),B=n(3186);function $({activeBasePath:e,activeBaseRegex:t,to:n,href:r,label:a,html:o,isDropdownLink:i,prependBaseUrlToHref:l,...s}){const c=(0,P.Ay)(n),d=(0,P.Ay)(e),p=(0,P.Ay)(r,{forcePrependBaseUrl:!0}),f=a&&r&&!(0,z.A)(r),h=o?{dangerouslySetInnerHTML:{__html:o}}:{children:(0,u.jsxs)(u.Fragment,{children:[a,f&&(0,u.jsx)(B.A,{...i&&{width:12,height:12}})]})};return r?(0,u.jsx)(N.A,{href:l?p:r,...s,...h}):(0,u.jsx)(N.A,{to:c,isNavLink:!0,...(e||t)&&{isActive:(e,n)=>t?I(t,n.pathname):n.pathname.startsWith(d)},...s,...h})}function U({className:e,isDropdownItem:t,...n}){return(0,u.jsx)("li",{className:"menu__list-item",children:(0,u.jsx)($,{className:(0,a.A)("menu__link",e),...n})})}function q({className:e,isDropdownItem:t=!1,...n}){const r=(0,u.jsx)($,{className:(0,a.A)(t?"dropdown__link":"navbar__item navbar__link",e),isDropdownLink:t,...n});return t?(0,u.jsx)("li",{children:r}):r}function H({mobile:e=!1,position:t,...n}){const r=e?U:q;return(0,u.jsx)(r,{...n,activeClassName:n.activeClassName??(e?"menu__link--active":"navbar__link--active")})}const G=()=>null;(Object.getOwnPropertyDescriptor(G,"name")||{}).writable||Object.defineProperty(G,"name",{value:"default",configurable:!0});const W="navbarSearchContainer_Bca1";function V({children:e,className:t}){return(0,u.jsx)("div",{className:(0,a.A)(t,W),children:e})}var Q=n(8295),Z=n(4718);var K=n(3886);function Y({docsPluginId:e,configs:t}){return function(e,t){if(t){const n=new Map(e.map(e=>[e.name,e])),r=(t,r)=>{const a=n.get(t);if(!a)throw new Error(`No docs version exist for name '${t}', please verify your 'docsVersionDropdown' navbar item versions config.\nAvailable version names:\n- ${e.map(e=>`${e.name}`).join("\n- ")}`);return{version:a,label:r?.label??a.label}};return Array.isArray(t)?t.map(e=>r(e,void 0)):Object.entries(t).map(([e,t])=>r(e,t))}return e.map(e=>({version:e,label:e.label}))}((0,Q.jh)(e),t)}function X(e,t){return t.alternateDocVersions[e.name]??function(e){return e.docs.find(t=>t.id===e.mainDocId)}(e)}const J={default:H,localeDropdown:ue,search:function({mobile:e,className:t}){return e?null:(0,u.jsx)(V,{className:t,children:(0,u.jsx)(G,{})})},dropdown:ie,html:function({value:e,className:t,mobile:n=!1,isDropdownItem:r=!1}){const o=r?"li":"div";return(0,u.jsx)(o,{className:(0,a.A)({navbar__item:!n&&!r,"menu__list-item":n},t),dangerouslySetInnerHTML:{__html:e}})},doc:function({docId:e,label:t,docsPluginId:n,...r}){const{activeDoc:a}=(0,Q.zK)(n),o=(0,Z.QB)(e,n),i=a?.path===o?.path;return null===o||o.unlisted&&!i?null:(0,u.jsx)(H,{exact:!0,...r,isActive:()=>i||!!a?.sidebar&&a.sidebar===o.sidebar,label:t??o.id,to:o.path})},docSidebar:function({sidebarId:e,label:t,docsPluginId:n,...r}){const{activeDoc:a}=(0,Q.zK)(n),o=(0,Z.fW)(e,n).link;if(!o)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${e}" doesn't have anything to be linked to.`);return(0,u.jsx)(H,{exact:!0,...r,isActive:()=>a?.sidebar===e,label:t??o.label,to:o.path})},docsVersion:function({label:e,to:t,docsPluginId:n,...r}){const a=(0,Z.Vd)(n)[0],o=e??a.label,i=t??(e=>e.docs.find(t=>t.id===e.mainDocId))(a).path;return(0,u.jsx)(H,{...r,label:o,to:i})},docsVersionDropdown:function({mobile:e,docsPluginId:t,dropdownActiveClassDisabled:n,dropdownItemsBefore:r,dropdownItemsAfter:a,versions:o,...i}){const l=(0,D.Hl)(e=>e.location.search),c=(0,D.Hl)(e=>e.location.hash),d=(0,Q.zK)(t),{savePreferredVersionName:p}=(0,K.g1)(t),f=Y({docsPluginId:t,configs:o}),h=function({docsPluginId:e,versionItems:t}){return(0,Z.Vd)(e).map(e=>t.find(t=>t.version===e)).filter(e=>void 0!==e)[0]??t[0]}({docsPluginId:t,versionItems:f}),g=[...r,...f.map(function({version:e,label:t}){return{label:t,to:`${X(e,d).path}${l}${c}`,isActive:()=>e===d.activeVersion,onClick:()=>p(e.name)}}),...a],m=e&&g.length>1?(0,s.T)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):h.label,y=e&&g.length>1?void 0:X(h.version,d).path;return g.length<=1?(0,u.jsx)(H,{...i,mobile:e,label:m,to:y,isActive:n?()=>!1:void 0}):(0,u.jsx)(ie,{...i,mobile:e,label:m,to:y,items:g,isActive:n?()=>!1:void 0})}};function ee({type:e,...t}){const n=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(e,t),r=J[n];if(!r)throw new Error(`No NavbarItem component found for type "${e}".`);return(0,u.jsx)(r,{...t})}const te="dropdownNavbarItemMobile_J0Sd";function ne(e,t){return e.some(e=>function(e,t){return!!(0,M.ys)(e.to,t)||!!I(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t))}function re({collapsed:e,onClick:t}){return(0,u.jsx)("button",{"aria-label":e?(0,s.T)({id:"theme.navbar.mobileDropdown.collapseButton.expandAriaLabel",message:"Expand the dropdown",description:"The ARIA label of the button to expand the mobile dropdown navbar item"}):(0,s.T)({id:"theme.navbar.mobileDropdown.collapseButton.collapseAriaLabel",message:"Collapse the dropdown",description:"The ARIA label of the button to collapse the mobile dropdown navbar item"}),"aria-expanded":!e,type:"button",className:"clean-btn menu__caret",onClick:t})}function ae({items:e,className:t,position:n,onClick:o,...i}){const s=function(){const{siteConfig:{baseUrl:e}}=(0,R.A)(),{pathname:t}=(0,l.zy)();return t.replace(e,"/")}(),c=(0,M.ys)(i.to,s),d=ne(e,s),{collapsed:p,toggleCollapsed:f}=function({active:e}){const{collapsed:t,toggleCollapsed:n,setCollapsed:a}=(0,F.u)({initialState:()=>!e});return(0,r.useEffect)(()=>{e&&a(!1)},[e,a]),{collapsed:t,toggleCollapsed:n}}({active:c||d}),h=i.to?void 0:"#";return(0,u.jsxs)("li",{className:(0,a.A)("menu__list-item",{"menu__list-item--collapsed":p}),children:[(0,u.jsxs)("div",{className:(0,a.A)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":c}),children:[(0,u.jsx)($,{role:"button",className:(0,a.A)(te,"menu__link menu__link--sublist",t),href:h,...i,onClick:e=>{"#"===h&&e.preventDefault(),f()},children:i.children??i.label}),(0,u.jsx)(re,{collapsed:p,onClick:e=>{e.preventDefault(),f()}})]}),(0,u.jsx)(F.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:p,children:e.map((e,t)=>(0,r.createElement)(ee,{mobile:!0,isDropdownItem:!0,onClick:o,activeClassName:"menu__link--active",...e,key:t}))})]})}function oe({items:e,position:t,className:n,onClick:o,...i}){const l=(0,r.useRef)(null),[s,c]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{const e=e=>{l.current&&!l.current.contains(e.target)&&c(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}},[l]),(0,u.jsxs)("div",{ref:l,className:(0,a.A)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===t,"dropdown--show":s}),children:[(0,u.jsx)($,{"aria-haspopup":"true","aria-expanded":s,role:"button",href:i.to?void 0:"#",className:(0,a.A)("navbar__link",n),...i,onClick:i.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),c(!s))},children:i.children??i.label}),(0,u.jsx)("ul",{className:"dropdown__menu",children:e.map((e,t)=>(0,r.createElement)(ee,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t}))})]})}function ie({mobile:e=!1,...t}){const n=e?ae:oe;return(0,u.jsx)(n,{...t})}function le({width:e=20,height:t=20,...n}){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:e,height:t,"aria-hidden":!0,...n,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const se="iconLanguage_nlXk";function ce(){const{siteConfig:e,i18n:{localeConfigs:t}}=(0,R.A)(),n=(0,O.o)(),r=(0,D.Hl)(e=>e.location.search),a=(0,D.Hl)(e=>e.location.hash),o=e=>{const n=t[e];if(!n)throw new Error(`Docusaurus bug, no locale config found for locale=${e}`);return n};return{getURL:(t,i)=>{const l=(0,D.jy)([r,i.queryString],"append");return`${(t=>o(t).url===e.url?`pathname://${n.createUrl({locale:t,fullyQualified:!1})}`:n.createUrl({locale:t,fullyQualified:!0}))(t)}${l}${a}`},getLabel:e=>o(e).label,getLang:e=>o(e).htmlLang}}function ue({mobile:e,dropdownItemsBefore:t,dropdownItemsAfter:n,queryString:r,...a}){const o=ce(),{i18n:{currentLocale:i,locales:l}}=(0,R.A)(),c=[...t,...l.map(t=>({label:o.getLabel(t),lang:o.getLang(t),to:o.getURL(t,{queryString:r}),target:"_self",autoAddBaseUrl:!1,className:t===i?e?"menu__link--active":"dropdown__link--active":""})),...n],d=e?(0,s.T)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):o.getLabel(i);return(0,u.jsx)(ie,{...a,mobile:e,label:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(le,{className:se}),d]}),items:c})}var de=n(7225),pe=n(2966);const fe="nav_MuJ0",he="left__6eY",ge="wordmark_mhs1",me="wordmarkIcon_boru",ye="wordmarkText_r1t1",be="wordmarkPrefix_iNit",ve="links_cXJT",we="link_CwQh",xe="linkActive_jOIb",ke="ctas_jpo4",Se="ghost_SGJf",Ee="cta_G5Px",je="localeWrapper__Pip",_e="iconGlyph_nphr",Ce="iconLink_GxoH",Le="iconLabelLink_Ea3j",Ae="versionPill_sLGf";function Te(e,t){return e.type===t||e.type==="custom-"+t}function Ne({item:e,location:t,appVersion:n}){if("localeDropdown"===e.type)return(0,u.jsx)("div",{className:je,children:(0,u.jsx)(ue,{mobile:!1,...e})});if(Te(e,"github"))return(0,u.jsx)("a",{href:e.href||"https://codeberg.org/Conduction",className:Ce,target:"_blank",rel:"noopener noreferrer","aria-label":e["aria-label"]||(0,s.T)({id:"preset.navbar.github.ariaLabel",message:"GitHub repository",description:"Default accessible label for the icon-only GitHub link in the navbar"}),title:"GitHub",children:(0,u.jsx)("span",{className:_e,"aria-hidden":"true",children:pe.Z.github})});if(Te(e,"apiDocs")){const n=e.label||(0,s.T)({id:"preset.navbar.apiDocs.label",message:"API Documentation",description:"Default label for the API Documentation navbar link when the consuming site does not set one"}),r=e.to||"/api",a=e.href,o=!a&&(t?.pathname===r||t?.pathname?.startsWith(r+"/")),i=`${we} ${Le} ${o?xe:""}`,l=(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)("span",{className:_e,"aria-hidden":"true",children:pe.Z.apiDocs}),n]});return a?(0,u.jsx)("a",{href:a,className:i,target:a.startsWith("http")?"_blank":void 0,rel:a.startsWith("http")?"noopener noreferrer":void 0,children:l}):(0,u.jsx)(N.A,{to:r,className:i,children:l})}if(Te(e,"versionPill")){if(!n)return null;const t=e.prefix||(0,de.Nu)(n);return(0,u.jsxs)("span",{className:Ae,title:`${t} \xb7 v${n}`,children:[t," \xb7 v",n]})}if(e.href&&!e.to){const t=!0===e.cta;return(0,u.jsxs)("a",{href:e.href,className:t?Ee:Se,target:e.href.startsWith("http")?"_blank":void 0,rel:e.href.startsWith("http")?"noopener noreferrer":void 0,children:[e.label,t&&" \u2192"]})}if(e.to){const n=!0===e.cta,r=t?.pathname===e.to||t?.pathname?.startsWith(e.to+"/");return(0,u.jsxs)(N.A,{to:e.to,className:n?Ee:`${we} ${r?xe:""}`,children:[e.label,n&&" \u2192"]})}return null}function Pe(){const{navbar:e}=(0,v.p)(),{siteConfig:t}=(0,R.A)(),n=t?.customFields?.appVersion,r=(0,l.zy)(),a=e.items||[],o=(0,de.nN)(r.pathname,e.title);let i;if(o)i=o.wordmark;else{const t=(0,de.r5)(e.title,e.brandPrefix);i=t?(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)("span",{className:be,children:t.prefix}),t.rest]}):e.title}const c="path"===o?.source?o.home:"/",d=e.logo?.src,p=(0,P.Ay)(d||""),f=e.logo?.alt||(0,s.T)({id:"preset.navbar.logoAlt",message:"{title} avatar",description:"Default alt text for the navbar logo. {title} is the site title."},{title:e.title}),h=new Set(["localeDropdown","github","custom-github","apiDocs","custom-apiDocs","versionPill","custom-versionPill"]),g=a.filter(e=>"right"!==e.position&&!h.has(e.type)),m=a.filter(e=>"right"===e.position||h.has(e.type));return(0,u.jsxs)("nav",{className:`navbar ${fe}`,role:"navigation","aria-label":"Main",children:[(0,u.jsxs)("div",{className:he,children:[(0,u.jsxs)(N.A,{to:c,className:ge,children:[d&&(0,u.jsx)("img",{src:p,alt:f,className:me,width:"32",height:"32"}),(0,u.jsx)("span",{className:ye,children:i})]}),(0,u.jsx)("div",{className:ve,children:g.map((e,t)=>(0,u.jsx)(Ne,{item:e,location:r,appVersion:n},t))})]}),(0,u.jsx)("div",{className:ke,children:m.map((e,t)=>(0,u.jsx)(Ne,{item:e,location:r,appVersion:n},t))})]})}var Re=n(2303),Oe=n(6573),De=n(3730),Ie=n(8903);function Fe({label:e,href:t,to:n}){if(t){const n=t.startsWith("http");return(0,u.jsx)("a",{href:t,target:n?"_blank":void 0,rel:n?"noopener noreferrer":void 0,children:e})}return(0,u.jsx)(N.A,{to:n,children:e})}function Me(){const e=(0,v.p)(),{footer:t,navbar:n}=e,a=!1!==e.minigames,o=e.footerBrand||null,i=e.legalLinks||{},c=(e,t)=>!1===i[e]?null:"string"==typeof i[e]&&i[e]?i[e]:t,d=c("privacy","/privacy"),p=c("terms","/terms"),f=c("iso","/iso"),h=void 0!==i.isoCertifications?Boolean(i.isoCertifications):Boolean(f),g=(0,l.zy)(),m=(0,de.nN)(g.pathname,n?.title),y=o?.wordmark||"Conduction",b=m?m.wordmark:y,w=!m&&Array.isArray(o?.brands)?o.brands:null;(0,Oe.B)("/lib/canal-footer.js","canal-footer"),(0,De.s)("/lib/canal-footer.css","canal-footer"),(0,Oe.B)(a?"/lib/kade-cyclist.js":null,"kade-cyclist"),(0,De.s)(a?"/lib/kade-cyclist.css":null,"kade-cyclist");const x=(0,Re.A)();if((0,r.useEffect)(()=>{if(!x)return;let e=!1;return function t(){if(e)return;const n=!!window.CanalFooter?.hydrate,r=!a||!!window.KadeCyclist?.hydrate;n&&window.CanalFooter.hydrate(),r&&a&&window.KadeCyclist.hydrate(),n&&r||requestAnimationFrame(t)}(),()=>{e=!0}},[x,g.pathname,a]),!t)return null;const{links:k=[],copyright:S}=t;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsxs)("footer",{className:"canal-footer","aria-label":"Site footer",children:[(0,u.jsx)("div",{className:"skyline",role:"presentation"}),(0,u.jsx)("div",{className:"kade",children:(0,u.jsxs)("div",{className:"kade-items",children:[(0,u.jsxs)("svg",{className:"ki ki-bike-1",width:"22",height:"16",viewBox:"0 -2 22 18","aria-hidden":"true",children:[(0,u.jsxs)("g",{stroke:"var(--c-cobalt-900)",strokeWidth:"1.4",fill:"none",strokeLinecap:"round",children:[(0,u.jsx)("circle",{cx:"4",cy:"12",r:"3"}),(0,u.jsx)("circle",{cx:"18",cy:"12",r:"3"}),(0,u.jsx)("line",{x1:"4",y1:"12",x2:"11",y2:"6"}),(0,u.jsx)("line",{x1:"11",y1:"6",x2:"18",y2:"12"}),(0,u.jsx)("line",{x1:"11",y1:"6",x2:"14",y2:"12"}),(0,u.jsx)("line",{x1:"11",y1:"6",x2:"11",y2:"3"}),(0,u.jsx)("line",{x1:"11",y1:"3",x2:"14",y2:"6"})]}),(0,u.jsx)("circle",{cx:"11",cy:"1.5",r:"1.6",fill:"var(--c-cobalt-900)"})]}),(0,u.jsxs)("svg",{className:"ki ki-car-1",width:"38",height:"16",viewBox:"0 0 38 16","aria-hidden":"true",children:[(0,u.jsx)("rect",{x:"0",y:"6",width:"38",height:"6",rx:"2",fill:"#C8482F"}),(0,u.jsx)("path",{d:"M 5,6 L 9,2 L 29,2 L 33,6 Z",fill:"#C8482F"}),(0,u.jsx)("rect",{x:"11",y:"3",width:"6",height:"3",fill:"rgba(255,255,255,0.5)"}),(0,u.jsx)("rect",{x:"20",y:"3",width:"6",height:"3",fill:"rgba(255,255,255,0.5)"}),(0,u.jsx)("circle",{cx:"9",cy:"13",r:"2",fill:"var(--c-cobalt-900)"}),(0,u.jsx)("circle",{cx:"29",cy:"13",r:"2",fill:"var(--c-cobalt-900)"})]}),(0,u.jsxs)("svg",{className:"ki ki-bike-2",width:"22",height:"16",viewBox:"0 -2 22 18","aria-hidden":"true",children:[(0,u.jsxs)("g",{stroke:"var(--c-cobalt-900)",strokeWidth:"1.4",fill:"none",strokeLinecap:"round",children:[(0,u.jsx)("circle",{cx:"4",cy:"12",r:"3"}),(0,u.jsx)("circle",{cx:"18",cy:"12",r:"3"}),(0,u.jsx)("line",{x1:"4",y1:"12",x2:"11",y2:"6"}),(0,u.jsx)("line",{x1:"11",y1:"6",x2:"18",y2:"12"}),(0,u.jsx)("line",{x1:"11",y1:"6",x2:"14",y2:"12"}),(0,u.jsx)("line",{x1:"11",y1:"6",x2:"11",y2:"3"}),(0,u.jsx)("line",{x1:"11",y1:"3",x2:"14",y2:"6"})]}),(0,u.jsx)("circle",{cx:"11",cy:"1.5",r:"1.6",fill:"var(--c-cobalt-900)"})]}),(0,u.jsxs)("svg",{className:"ki ki-car-2",width:"38",height:"16",viewBox:"0 0 38 16","aria-hidden":"true",children:[(0,u.jsx)("rect",{x:"0",y:"6",width:"38",height:"6",rx:"2",fill:"var(--c-cobalt-900)"}),(0,u.jsx)("path",{d:"M 5,6 L 9,2 L 29,2 L 33,6 Z",fill:"var(--c-cobalt-900)"}),(0,u.jsx)("rect",{x:"11",y:"3",width:"6",height:"3",fill:"rgba(255,255,255,0.4)"}),(0,u.jsx)("rect",{x:"20",y:"3",width:"6",height:"3",fill:"rgba(255,255,255,0.4)"}),(0,u.jsx)("circle",{cx:"9",cy:"13",r:"2",fill:"#C8482F"}),(0,u.jsx)("circle",{cx:"29",cy:"13",r:"2",fill:"#C8482F"})]})]})}),(0,u.jsxs)("div",{className:"water",children:[(0,u.jsxs)("div",{className:"canal-items",children:[(0,u.jsxs)("svg",{className:"ci ci-cruise",width:"120",height:"28",viewBox:"0 -10 120 28","aria-hidden":"true",children:[(0,u.jsx)("line",{x1:"2",y1:"14",x2:"2",y2:"-9",stroke:"var(--c-orange-knvb)",strokeWidth:"0.9"}),(0,u.jsx)("rect",{x:"2.5",y:"-9",width:"9",height:"2",fill:"#AE1C28"}),(0,u.jsx)("rect",{x:"2.5",y:"-7",width:"9",height:"2",fill:"#FFFFFF"}),(0,u.jsx)("rect",{x:"2.5",y:"-5",width:"9",height:"2",fill:"#21468B"}),(0,u.jsx)("path",{d:"M 0,16 L 6,18 L 114,18 L 120,16 L 120,11 L 0,11 Z",fill:"var(--c-orange-knvb)"}),(0,u.jsx)("rect",{x:"8",y:"5",width:"104",height:"6",fill:"var(--c-orange-knvb)"}),(0,u.jsx)("path",{d:"M 8,5 Q 60,0 112,5 L 8,5 Z",fill:"var(--c-orange-knvb)"}),(0,u.jsxs)("g",{fill:"rgba(255,247,210,0.85)",children:[(0,u.jsx)("rect",{x:"14",y:"7",width:"6",height:"3"}),(0,u.jsx)("rect",{x:"22",y:"7",width:"6",height:"3"}),(0,u.jsx)("rect",{x:"30",y:"7",width:"6",height:"3"}),(0,u.jsx)("rect",{x:"38",y:"7",width:"6",height:"3"}),(0,u.jsx)("rect",{x:"46",y:"7",width:"6",height:"3"}),(0,u.jsx)("rect",{x:"54",y:"7",width:"6",height:"3"}),(0,u.jsx)("rect",{x:"62",y:"7",width:"6",height:"3"}),(0,u.jsx)("rect",{x:"70",y:"7",width:"6",height:"3"}),(0,u.jsx)("rect",{x:"78",y:"7",width:"6",height:"3"}),(0,u.jsx)("rect",{x:"86",y:"7",width:"6",height:"3"}),(0,u.jsx)("rect",{x:"94",y:"7",width:"6",height:"3"}),(0,u.jsx)("rect",{x:"102",y:"7",width:"6",height:"3"})]})]}),(0,u.jsxs)("svg",{className:"ci ci-sloep",width:"50",height:"20",viewBox:"0 -2 50 20","aria-hidden":"true",children:[(0,u.jsx)("path",{d:"M 0,12 L 4,16 L 46,16 L 50,12 L 50,8 L 0,8 Z",fill:"var(--c-orange-knvb)"}),(0,u.jsx)("rect",{x:"20",y:"2",width:"12",height:"6",rx:"1",fill:"var(--c-orange-knvb)"}),(0,u.jsx)("circle",{cx:"26",cy:"0",r:"1.4",fill:"var(--c-orange-knvb)"})]}),(0,u.jsxs)("svg",{className:"ci ci-row",width:"44",height:"16",viewBox:"-2 0 48 16","aria-hidden":"true",children:[(0,u.jsx)("path",{d:"M 0,10 L 4,14 L 40,14 L 44,10 Z",fill:"var(--c-orange-knvb)"}),(0,u.jsx)("line",{x1:"8",y1:"10",x2:"0",y2:"3",stroke:"var(--c-orange-knvb)",strokeWidth:"1.2",strokeLinecap:"round"}),(0,u.jsx)("line",{x1:"36",y1:"10",x2:"44",y2:"3",stroke:"var(--c-orange-knvb)",strokeWidth:"1.2",strokeLinecap:"round"}),(0,u.jsx)("circle",{cx:"22",cy:"7",r:"1.6",fill:"var(--c-orange-knvb)"})]}),(0,u.jsxs)("svg",{className:"ci ci-swim",width:"26",height:"10",viewBox:"-3 0 30 10","aria-hidden":"true",children:[(0,u.jsx)("ellipse",{cx:"13",cy:"6",rx:"7",ry:"1.4",fill:"var(--c-orange-knvb)"}),(0,u.jsx)("circle",{cx:"17",cy:"4",r:"1.7",fill:"var(--c-orange-knvb)"}),(0,u.jsx)("line",{x1:"13",y1:"5",x2:"11",y2:"3",stroke:"var(--c-orange-knvb)",strokeWidth:"1",strokeLinecap:"round"}),(0,u.jsx)("line",{x1:"-3",y1:"6",x2:"2",y2:"6",stroke:"var(--c-orange-knvb)",strokeWidth:"0.7",opacity:"0.55"}),(0,u.jsx)("line",{x1:"0",y1:"8",x2:"3",y2:"8",stroke:"var(--c-orange-knvb)",strokeWidth:"0.7",opacity:"0.4"})]}),(0,u.jsxs)("svg",{className:"ci ci-periscope",width:"14",height:"26",viewBox:"-3 -2 18 28","aria-hidden":"true",children:[(0,u.jsx)("rect",{x:"4",y:"4",width:"2",height:"18",fill:"var(--c-orange-knvb)"}),(0,u.jsx)("rect",{x:"0",y:"0",width:"9",height:"3",fill:"var(--c-orange-knvb)"}),(0,u.jsx)("rect",{x:"4",y:"3",width:"2",height:"2",fill:"var(--c-orange-knvb)"}),(0,u.jsx)("ellipse",{cx:"5",cy:"24",rx:"7",ry:"0.9",fill:"var(--c-orange-knvb)",opacity:"0.5"})]}),(0,u.jsxs)("svg",{className:"ci ci-whale",width:"76",height:"18",viewBox:"-3 -4 82 22","aria-hidden":"true",children:[(0,u.jsx)("path",{d:"M 0,12 Q 0,4 26,3 Q 54,2 64,7 L 72,4 L 68,9 L 72,14 L 64,11 Q 54,14 26,14 Q 6,14 0,12 Z",fill:"var(--c-orange-knvb)"}),(0,u.jsxs)("g",{opacity:"0.55",stroke:"var(--c-orange-knvb)",strokeWidth:"1",strokeLinecap:"round",children:[(0,u.jsx)("line",{x1:"22",y1:"2",x2:"20",y2:"-3"}),(0,u.jsx)("line",{x1:"25",y1:"2",x2:"25",y2:"-4"}),(0,u.jsx)("line",{x1:"28",y1:"2",x2:"30",y2:"-3"})]})]}),(0,u.jsxs)("svg",{className:"ci ci-hover",width:"74",height:"26",viewBox:"0 -4 74 28","aria-hidden":"true",children:[(0,u.jsx)("ellipse",{cx:"37",cy:"22",rx:"37",ry:"2.5",fill:"var(--c-orange-knvb)",opacity:"0.4"}),(0,u.jsx)("path",{d:"M 6,18 L 10,10 L 64,10 L 68,18 Z",fill:"var(--c-orange-knvb)"}),(0,u.jsx)("path",{d:"M 14,10 Q 37,-4 60,10 L 14,10 Z",fill:"var(--c-orange-knvb)"}),(0,u.jsx)("ellipse",{cx:"37",cy:"4",rx:"16",ry:"3.2",fill:"rgba(255,247,210,0.7)"}),(0,u.jsx)("polygon",{points:"37,11 42,13.5 42,16.5 37,19 32,16.5 32,13.5",fill:"#FFFFFF"}),(0,u.jsx)("text",{x:"37",y:"17.4",fontSize:"4",textAnchor:"middle",fill:"var(--c-orange-knvb)",fontFamily:"sans-serif",fontWeight:"900",children:"C"}),(0,u.jsxs)("g",{stroke:"var(--c-orange-knvb)",strokeWidth:"0.7",opacity:"0.6",children:[(0,u.jsx)("line",{x1:"8",y1:"22",x2:"12",y2:"22"}),(0,u.jsx)("line",{x1:"16",y1:"22",x2:"20",y2:"22"}),(0,u.jsx)("line",{x1:"26",y1:"22",x2:"30",y2:"22"}),(0,u.jsx)("line",{x1:"36",y1:"22",x2:"40",y2:"22"}),(0,u.jsx)("line",{x1:"46",y1:"22",x2:"50",y2:"22"}),(0,u.jsx)("line",{x1:"56",y1:"22",x2:"60",y2:"22"})]})]})]}),a&&(0,u.jsxs)(u.Fragment,{children:[(0,u.jsxs)("div",{className:"game-hud","aria-live":"polite","aria-label":(0,s.T)({id:"preset.footer.game.ariaLabel",message:"Boat-sinking mini game",description:"Accessible name for the footer minigame region"}),children:[(0,u.jsxs)("div",{className:"hud-block hud-counter",children:[(0,u.jsx)("span",{className:"hud-num","data-counter":"",children:"100"}),(0,u.jsx)("span",{className:"hud-label",children:(0,u.jsx)(s.A,{id:"preset.footer.game.boatsLeft",description:"HUD label counting boats remaining",children:"Boats left"})})]}),(0,u.jsxs)("div",{className:"hud-block hud-timer",children:[(0,u.jsx)("span",{className:"hud-num","data-timer":"",children:"60"}),(0,u.jsx)("span",{className:"hud-label",children:(0,u.jsx)(s.A,{id:"preset.footer.game.seconds",description:"HUD label for the seconds-remaining timer",children:"Seconds"})})]})]}),(0,u.jsxs)("div",{className:"game-over",role:"dialog","aria-label":(0,s.T)({id:"preset.footer.game.overAriaLabel",message:"Mini game over",description:"Accessible name for the game-over dialog"}),children:[(0,u.jsx)("p",{className:"go-title","data-go-title":"",children:(0,u.jsx)(s.A,{id:"preset.footer.game.timesUp",description:"Default headline shown when the minigame timer hits zero",children:"Time's up"})}),(0,u.jsxs)("p",{className:"go-stat",children:[(0,u.jsx)("span",{"data-go-sunk":"",children:"0"})," ",(0,u.jsx)(s.A,{id:"preset.footer.game.sunk",description:"Suffix after the number of boats sunk in the game-over stat",children:"sunk"})]}),(0,u.jsx)("button",{type:"button","data-restart":"",children:(0,u.jsx)(s.A,{id:"preset.footer.game.playAgain",description:"Button label to restart the minigame",children:"Play again"})})]})]}),(0,u.jsxs)("svg",{className:"canal-waves",viewBox:"0 0 1400 500",preserveAspectRatio:"none","aria-hidden":"true",children:[(0,u.jsx)("path",{className:"w1",d:"M 0,96 L 140,82 L 280,96 L 420,82 L 560,96 L 700,82 L 840,96 L 980,82 L 1120,96 L 1260,82 L 1400,96"}),(0,u.jsx)("path",{className:"w2",d:"M 0,206 L 180,182 L 360,206 L 540,182 L 720,206 L 900,182 L 1080,206 L 1260,182 L 1400,200"}),(0,u.jsx)("path",{className:"w3",d:"M 0,362 L 220,332 L 440,362 L 660,332 L 880,362 L 1100,332 L 1320,362 L 1400,348"})]}),(0,u.jsxs)("div",{className:"footer-grid",children:[(0,u.jsxs)("div",{className:"brand",children:[w?(0,u.jsx)("div",{className:"wm-row",style:{display:"flex",alignItems:"center",gap:"1.25rem",flexWrap:"wrap"},children:w.map((e,t)=>{const n=e.logo?(0,u.jsx)("img",{src:e.logo,alt:e.wordmark,style:{height:32,width:"auto",display:"block"}}):(0,u.jsx)("span",{className:"wm",children:e.wordmark});return e.href?(0,u.jsx)("a",{href:e.href,target:e.href.startsWith("http")?"_blank":void 0,rel:e.href.startsWith("http")?"noopener noreferrer":void 0,"aria-label":e.wordmark,style:{textDecoration:"none"},children:n},t):(0,u.jsx)(r.Fragment,{children:n},t)})}):(0,u.jsx)("div",{className:"wm",children:b}),(0,u.jsx)("p",{children:(0,u.jsx)(s.A,{id:"preset.footer.brandBlurb",description:"Footer brand-citation paragraph. {nextcloud} is the styled Nextcloud word.",values:{nextcloud:(0,u.jsx)("span",{className:"next-blue",children:"Nextcloud"})},children:"Open-source apps for {nextcloud}. Built and maintained by Conduction in Amsterdam, released under EUPL-1.2."})}),(0,u.jsx)("div",{className:"triad",children:(0,u.jsxs)("span",{children:[(0,u.jsx)("span",{className:"h"}),"Conduction",m&&(0,u.jsxs)(u.Fragment,{children:[" \xb7 ",m.label]}),w&&w.filter(e=>e.wordmark&&"Conduction"!==e.wordmark).map((e,t)=>(0,u.jsxs)(r.Fragment,{children:[" \xb7 ",e.wordmark]},t))," ",(0,u.jsx)("svg",{className:"heart",viewBox:"0 0 24 24",fill:"currentColor","aria-label":"loves",role:"img",children:(0,u.jsx)("path",{d:"M12 21s-6.7-4.35-9.2-8.4C.8 9.2 2 5.5 5.2 4.7c2-.5 3.8.4 4.8 1.9 1-1.5 2.8-2.4 4.8-1.9 3.2.8 4.4 4.5 2.4 7.9C18.7 16.65 12 21 12 21z"})})," ",(0,u.jsx)("a",{href:"https://nextcloud.com",target:"_blank",rel:"noopener noreferrer",className:"next-blue",children:"Nextcloud"})]})}),(0,u.jsxs)("div",{className:"socials",children:[(0,u.jsx)("a",{href:"https://codeberg.org/Conduction","aria-label":"GitHub",target:"_blank",rel:"noopener noreferrer",children:(0,u.jsx)("svg",{viewBox:"0 0 24 24","aria-hidden":"true",children:(0,u.jsx)("path",{className:"filled",d:"M12 2a10 10 0 0 0-3.16 19.49c.5.09.68-.22.68-.48v-1.7c-2.78.6-3.37-1.34-3.37-1.34-.45-1.16-1.11-1.47-1.11-1.47-.91-.62.07-.61.07-.61 1 .07 1.53 1.04 1.53 1.04.9 1.53 2.36 1.09 2.93.83.09-.65.35-1.09.63-1.34-2.22-.25-4.55-1.11-4.55-4.94 0-1.09.39-1.98 1.03-2.68-.1-.25-.45-1.27.1-2.65 0 0 .84-.27 2.75 1.02a9.6 9.6 0 0 1 5 0c1.91-1.29 2.75-1.02 2.75-1.02.55 1.38.2 2.4.1 2.65.64.7 1.03 1.59 1.03 2.68 0 3.84-2.34 4.69-4.57 4.93.36.31.68.92.68 1.86v2.76c0 .27.18.58.69.48A10 10 0 0 0 12 2z"})})}),(0,u.jsx)("a",{href:"https://www.linkedin.com/company/conduction","aria-label":"LinkedIn",target:"_blank",rel:"noopener noreferrer",children:(0,u.jsxs)("svg",{viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,u.jsx)("path",{d:"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-4 0v7h-4v-7a6 6 0 0 1 6-6z"}),(0,u.jsx)("rect",{x:"2",y:"9",width:"4",height:"12"}),(0,u.jsx)("circle",{className:"filled",cx:"4",cy:"4",r:"2"})]})}),(0,u.jsx)("a",{href:"mailto:info@conduction.nl","aria-label":"Email info@conduction.nl",children:(0,u.jsxs)("svg",{viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,u.jsx)("rect",{x:"3",y:"5",width:"18",height:"14",rx:"2"}),(0,u.jsx)("path",{d:"M3 7l9 6 9-6"})]})}),(0,u.jsx)("a",{href:"tel:+31853036840","aria-label":"Phone +31 (0)85 303 6840",children:(0,u.jsx)("svg",{viewBox:"0 0 24 24","aria-hidden":"true",children:(0,u.jsx)("path",{d:"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.96.37 1.9.72 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.91.35 1.85.59 2.81.72A2 2 0 0 1 22 16.92z"})})}),(0,u.jsx)("a",{href:"https://maps.google.com/?q=Lauriergracht+14h+Amsterdam","aria-label":"Lauriergracht 14h, Amsterdam, open in Google Maps",target:"_blank",rel:"noopener noreferrer",children:(0,u.jsxs)("svg",{viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,u.jsx)("path",{d:"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"}),(0,u.jsx)("circle",{cx:"12",cy:"10",r:"3"})]})})]})]}),k.map((e,t)=>(0,u.jsxs)("div",{children:[e.title&&(0,u.jsx)("h4",{children:e.title}),(0,u.jsx)("ul",{children:(e.items||[]).map((e,t)=>(0,u.jsx)("li",{children:(0,u.jsx)(Fe,{...e})},t))})]},t))]}),S&&(0,u.jsxs)("div",{className:"legal-bar",children:[(0,u.jsxs)("div",{className:"left",children:[(0,u.jsx)("span",{children:S}),(d||p||f)&&(0,u.jsxs)("span",{className:"legal-links",children:[d&&(0,u.jsx)(N.A,{to:d,children:"Privacy"}),d&&p&&(0,u.jsx)("span",{className:"sep",children:"\xb7"}),p&&(0,u.jsx)(N.A,{to:p,children:"Terms"}),(d||p)&&f&&(0,u.jsx)("span",{className:"sep",children:"\xb7"}),f&&(0,u.jsx)(N.A,{to:f,children:"ISO"})]})]}),h&&(0,u.jsxs)("div",{className:"right",children:[(0,u.jsxs)(N.A,{to:f||"/iso",className:"iso-badge","aria-label":"ISO 9001:2015 certified, see details",children:[(0,u.jsx)("span",{className:"iso-mark",children:"ISO"}),(0,u.jsx)("span",{className:"iso-num",children:"9001:2015"})]}),(0,u.jsxs)(N.A,{to:f||"/iso",className:"iso-badge","aria-label":"ISO 27001:2022 certified, see details",children:[(0,u.jsx)("span",{className:"iso-mark",children:"ISO"}),(0,u.jsx)("span",{className:"iso-num",children:"27001:2022"})]})]})]})]})]}),(0,u.jsx)(ze,{includeBoats:a}),a&&(0,u.jsx)(Ie.A,{})]})}function ze({includeBoats:e=!0}){const t=Be+(e?$e:"");return(0,u.jsx)("div",{style:{display:"none"},"aria-hidden":"true",dangerouslySetInnerHTML:{__html:t}})}const Be='\n <template id="tpl-h-a">\n <svg class="house h-a" viewBox="0 -2 80 202" xmlns="http://www.w3.org/2000/svg">\n <path d="M 0,200 L 0,38 L 8,38 L 8,26 L 16,26 L 16,14 L 24,14 L 24,8 L 56,8 L 56,14 L 64,14 L 64,26 L 72,26 L 72,38 L 80,38 L 80,200 Z" fill="var(--c-orange-knvb)"/>\n <rect x="22" y="68" width="10" height="16" fill="rgba(255,247,210,0.95)"/>\n <rect x="48" y="68" width="10" height="16" fill="rgba(11,32,73,0.35)"/>\n <rect x="22" y="98" width="10" height="16" fill="rgba(11,32,73,0.35)"/>\n <rect x="48" y="98" width="10" height="16" fill="rgba(255,247,210,0.6)"/>\n <rect x="22" y="128" width="10" height="16" fill="rgba(11,32,73,0.35)"/>\n <rect x="48" y="128" width="10" height="16" fill="rgba(11,32,73,0.35)"/>\n <rect x="32" y="160" width="16" height="34" fill="rgba(11,32,73,0.55)"/>\n </svg>\n </template>\n <template id="tpl-h-b">\n <svg class="house h-b" viewBox="0 0 100 220" xmlns="http://www.w3.org/2000/svg">\n <path d="M 0,220 L 0,58 L 8,58 L 8,47 L 16,47 L 16,36 L 24,36 L 24,25 L 32,25 L 32,14 L 50,4 L 68,14 L 68,25 L 76,25 L 76,36 L 84,36 L 84,47 L 92,47 L 92,58 L 100,58 L 100,220 Z" fill="var(--c-orange-knvb)"/>\n <rect x="14" y="80" width="14" height="20" fill="rgba(255,247,210,0.85)"/>\n <rect x="43" y="80" width="14" height="20" fill="rgba(11,32,73,0.35)"/>\n <rect x="72" y="80" width="14" height="20" fill="rgba(255,247,210,0.55)"/>\n <rect x="14" y="115" width="14" height="20" fill="rgba(11,32,73,0.35)"/>\n <rect x="43" y="115" width="14" height="20" fill="rgba(11,32,73,0.35)"/>\n <rect x="72" y="115" width="14" height="20" fill="rgba(11,32,73,0.35)"/>\n <rect x="14" y="150" width="14" height="20" fill="rgba(11,32,73,0.35)"/>\n <rect x="43" y="150" width="14" height="20" fill="rgba(255,247,210,0.7)"/>\n <rect x="72" y="150" width="14" height="20" fill="rgba(11,32,73,0.35)"/>\n <rect x="42" y="180" width="16" height="34" fill="rgba(11,32,73,0.55)"/>\n </svg>\n </template>\n <template id="tpl-h-c">\n <svg class="house h-c" viewBox="0 0 70 240" xmlns="http://www.w3.org/2000/svg">\n <path d="M 0,240 L 0,48 L 5,48 L 5,41 L 10,41 L 10,34 L 15,34 L 15,27 L 20,27 L 20,20 L 25,20 L 25,15 L 45,15 L 45,20 L 50,20 L 50,27 L 55,27 L 55,34 L 60,34 L 60,41 L 65,41 L 65,48 L 70,48 L 70,240 Z" fill="var(--c-orange-knvb)"/>\n <rect x="14" y="70" width="12" height="18" fill="rgba(255,247,210,0.55)"/>\n <rect x="44" y="70" width="12" height="18" fill="rgba(255,247,210,0.85)"/>\n <rect x="14" y="100" width="12" height="18" fill="rgba(11,32,73,0.35)"/>\n <rect x="44" y="100" width="12" height="18" fill="rgba(11,32,73,0.35)"/>\n <rect x="14" y="130" width="12" height="18" fill="rgba(255,247,210,0.7)"/>\n <rect x="44" y="130" width="12" height="18" fill="rgba(11,32,73,0.35)"/>\n <rect x="14" y="160" width="12" height="18" fill="rgba(11,32,73,0.35)"/>\n <rect x="44" y="160" width="12" height="18" fill="rgba(11,32,73,0.35)"/>\n <rect x="27" y="200" width="16" height="34" fill="rgba(11,32,73,0.55)"/>\n </svg>\n </template>\n <template id="tpl-h-d">\n <svg class="house h-d" viewBox="0 -10 90 180" xmlns="http://www.w3.org/2000/svg">\n <path d="M 0,170 L 0,30 L 8,30 L 8,20 L 16,20 L 16,10 L 24,10 L 24,4 L 66,4 L 66,10 L 74,10 L 74,20 L 82,20 L 82,30 L 90,30 L 90,170 Z" fill="var(--c-orange-knvb)"/>\n <rect x="12" y="60" width="14" height="20" fill="rgba(11,32,73,0.35)"/>\n <rect x="38" y="60" width="14" height="20" fill="rgba(255,247,210,0.85)"/>\n <rect x="64" y="60" width="14" height="20" fill="rgba(11,32,73,0.35)"/>\n <rect x="12" y="100" width="14" height="20" fill="rgba(255,247,210,0.6)"/>\n <rect x="38" y="100" width="14" height="20" fill="rgba(11,32,73,0.35)"/>\n <rect x="64" y="100" width="14" height="20" fill="rgba(11,32,73,0.35)"/>\n <rect x="37" y="130" width="16" height="34" fill="rgba(11,32,73,0.55)"/>\n </svg>\n </template>\n <template id="tpl-h-e">\n <svg class="house h-e" viewBox="0 0 95 210" xmlns="http://www.w3.org/2000/svg">\n <path d="M 0,210 L 0,55 L 8,55 L 8,44 L 16,44 L 16,33 L 24,33 L 24,22 L 32,22 L 32,11 L 35,11 L 35,6 L 59,6 L 59,11 L 63,11 L 63,22 L 71,22 L 71,33 L 79,33 L 79,44 L 87,44 L 87,55 L 95,55 L 95,210 Z" fill="var(--c-orange-knvb)"/>\n <rect x="13" y="75" width="14" height="20" fill="rgba(11,32,73,0.35)"/>\n <rect x="40" y="75" width="14" height="20" fill="rgba(255,247,210,0.65)"/>\n <rect x="68" y="75" width="14" height="20" fill="rgba(11,32,73,0.35)"/>\n <rect x="13" y="110" width="14" height="20" fill="rgba(255,247,210,0.8)"/>\n <rect x="40" y="110" width="14" height="20" fill="rgba(11,32,73,0.35)"/>\n <rect x="68" y="110" width="14" height="20" fill="rgba(11,32,73,0.35)"/>\n <rect x="13" y="145" width="14" height="20" fill="rgba(11,32,73,0.35)"/>\n <rect x="40" y="145" width="14" height="20" fill="rgba(11,32,73,0.35)"/>\n <rect x="68" y="145" width="14" height="20" fill="rgba(255,247,210,0.55)"/>\n <rect x="39.5" y="175" width="16" height="34" fill="rgba(11,32,73,0.55)"/>\n </svg>\n </template>\n',$e='\n <template id="tpl-ship-sailing">\n <svg class="ci ci-sailing" width="100" height="60" viewBox="-4 -42 108 60" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">\n <path d="M 0,12 L 6,16 L 90,16 L 96,12 L 96,8 L 0,8 Z" fill="var(--c-orange-knvb)"/>\n <line x1="0" y1="11" x2="-4" y2="6" stroke="var(--c-orange-knvb)" stroke-width="1.6" stroke-linecap="round"/>\n <line x1="48" y1="8" x2="48" y2="-40" stroke="#3a4553" stroke-width="1.4"/>\n <rect x="44.5" y="-30" width="7" height="2.5" fill="#3a4553"/>\n <line x1="22" y1="-12" x2="74" y2="-12" stroke="#3a4553" stroke-width="0.9"/>\n <path d="M 24,-12 Q 48,-7 72,-12 L 72,4 Q 48,8 24,4 Z" fill="rgba(255,247,210,0.92)"/>\n <line x1="24" y1="-26" x2="72" y2="-26" stroke="#3a4553" stroke-width="0.9"/>\n <path d="M 26,-26 Q 48,-22 70,-26 L 70,-13 Q 48,-9 26,-13 Z" fill="rgba(255,247,210,0.92)"/>\n <line x1="34" y1="-38" x2="62" y2="-38" stroke="#3a4553" stroke-width="0.9"/>\n <path d="M 35,-38 Q 48,-35 61,-38 L 61,-28 Q 48,-25 35,-28 Z" fill="rgba(255,247,210,0.92)"/>\n <path d="M 48,-40 L 58,-39 L 56,-37 L 58,-35 L 48,-36 Z" fill="#AE1C28"/>\n </svg>\n </template>\n <template id="tpl-ship-cargo">\n <svg class="ci ci-cargo" width="180" height="44" viewBox="0 -28 180 44" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">\n <path d="M 0,14 L 6,16 L 174,16 L 180,14 L 180,10 L 0,10 Z" fill="var(--c-orange-knvb)"/>\n <g>\n <rect x="14" y="0" width="14" height="9" fill="#C8482F"/>\n <rect x="30" y="0" width="14" height="9" fill="var(--c-cobalt-900)"/>\n <rect x="46" y="0" width="14" height="9" fill="rgba(255,247,210,0.9)"/>\n <rect x="62" y="0" width="14" height="9" fill="#C8482F"/>\n <rect x="78" y="0" width="14" height="9" fill="var(--c-cobalt-900)"/>\n <rect x="94" y="0" width="14" height="9" fill="rgba(255,247,210,0.9)"/>\n <rect x="110" y="0" width="14" height="9" fill="#C8482F"/>\n <rect x="14" y="-9" width="14" height="9" fill="var(--c-cobalt-900)"/>\n <rect x="30" y="-9" width="14" height="9" fill="rgba(255,247,210,0.9)"/>\n <rect x="62" y="-9" width="14" height="9" fill="var(--c-cobalt-900)"/>\n <rect x="94" y="-9" width="14" height="9" fill="#C8482F"/>\n <rect x="14" y="-18" width="14" height="9" fill="rgba(255,247,210,0.9)"/>\n <rect x="62" y="-18" width="14" height="9" fill="#C8482F"/>\n </g>\n <rect x="138" y="-18" width="22" height="27" fill="#5a6573"/>\n <rect x="142" y="-14" width="14" height="3" fill="rgba(255,247,210,0.85)"/>\n <rect x="142" y="-9" width="14" height="3" fill="rgba(255,247,210,0.6)"/>\n <rect x="142" y="-4" width="14" height="3" fill="rgba(255,247,210,0.6)"/>\n <rect x="146" y="-26" width="8" height="8" fill="#3a4553"/>\n <rect x="146" y="-22" width="8" height="2" fill="var(--c-orange-knvb)"/>\n </svg>\n </template>\n <template id="tpl-ship-frigate">\n <svg class="ci ci-frigate" width="130" height="36" viewBox="0 -20 130 36" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">\n <path d="M 0,14 L 6,16 L 124,16 L 130,14 L 130,10 L 0,10 Z" fill="#5a6573"/>\n <rect x="0" y="9" width="130" height="1.4" fill="var(--c-orange-knvb)"/>\n <rect x="14" y="6" width="14" height="4" rx="1.5" fill="#6a7583"/>\n <line x1="21" y1="8" x2="40" y2="6" stroke="#3a4553" stroke-width="1.6" stroke-linecap="round"/>\n <rect x="42" y="-2" width="48" height="12" fill="#6a7583"/>\n <rect x="58" y="-12" width="16" height="10" fill="#7a8593"/>\n <rect x="60" y="-9" width="12" height="2.5" fill="rgba(255,247,210,0.85)"/>\n <line x1="66" y1="-12" x2="66" y2="-18" stroke="#3a4553" stroke-width="1"/>\n <rect x="82" y="-7" width="6" height="5" fill="#3a4553"/>\n <rect x="82" y="-5" width="6" height="1.5" fill="var(--c-orange-knvb)"/>\n <rect x="100" y="6" width="14" height="4" rx="1.5" fill="#6a7583"/>\n </svg>\n </template>\n <template id="tpl-battleship">\n <svg class="ci ci-battleship boss" width="220" height="56" viewBox="0 -22 220 56" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">\n <path d="M 0,18 L 8,28 L 212,28 L 220,18 L 220,12 L 0,12 Z" fill="#4a5663"/>\n <rect x="0" y="11" width="220" height="2" fill="var(--c-orange-knvb)"/>\n <rect x="50" y="0" width="120" height="12" fill="#5a6573"/>\n <rect x="92" y="-12" width="36" height="12" fill="#6a7583"/>\n <rect x="96" y="-9" width="28" height="3" fill="rgba(255,247,210,0.85)"/>\n <rect x="138" y="-7" width="10" height="7" fill="#3a4553"/>\n <rect x="138" y="-4" width="10" height="2" fill="var(--c-orange-knvb)"/>\n <line x1="110" y1="-12" x2="110" y2="-20" stroke="#3a4553" stroke-width="1.4"/>\n <rect x="22" y="6" width="22" height="6" rx="2" fill="#6a7583"/>\n <line x1="32" y1="9" x2="56" y2="6" stroke="#3a4553" stroke-width="2.2" stroke-linecap="round"/>\n <line x1="32" y1="9" x2="8" y2="6" stroke="#3a4553" stroke-width="2.2" stroke-linecap="round"/>\n <rect x="176" y="6" width="22" height="6" rx="2" fill="#6a7583"/>\n <line x1="186" y1="9" x2="210" y2="6" stroke="#3a4553" stroke-width="2.2" stroke-linecap="round"/>\n <line x1="186" y1="9" x2="162" y2="6" stroke="#3a4553" stroke-width="2.2" stroke-linecap="round"/>\n <g class="hp-pips" transform="translate(58, -18)">\n <circle class="pip" cx="0" cy="0" r="2.4" fill="var(--c-orange-knvb)"/>\n <circle class="pip" cx="11" cy="0" r="2.4" fill="var(--c-orange-knvb)"/>\n <circle class="pip" cx="22" cy="0" r="2.4" fill="var(--c-orange-knvb)"/>\n <circle class="pip" cx="33" cy="0" r="2.4" fill="var(--c-orange-knvb)"/>\n <circle class="pip" cx="44" cy="0" r="2.4" fill="var(--c-orange-knvb)"/>\n <circle class="pip" cx="55" cy="0" r="2.4" fill="var(--c-orange-knvb)"/>\n <circle class="pip" cx="66" cy="0" r="2.4" fill="var(--c-orange-knvb)"/>\n <circle class="pip" cx="77" cy="0" r="2.4" fill="var(--c-orange-knvb)"/>\n <circle class="pip" cx="88" cy="0" r="2.4" fill="var(--c-orange-knvb)"/>\n <circle class="pip" cx="99" cy="0" r="2.4" fill="var(--c-orange-knvb)"/>\n </g>\n </svg>\n </template>\n';var Ue=n(9532),qe=n(5293),He=n(3104),Ge=n(2069),We=n(5600);const Ve=r.createContext(null);function Qe({children:e}){const t=function(){const e=(0,Ge.M)(),t=(0,We.YL)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,Ue.ZC)(o);return(0,r.useEffect)(()=>{o&&!i&&a(!0)},[o,i]),(0,r.useEffect)(()=>{o?e.shown||a(!0):a(!1)},[e.shown,o]),(0,r.useMemo)(()=>[n,a],[n])}();return(0,u.jsx)(Ve.Provider,{value:t,children:e})}const Ze=(0,Ue.fM)([qe.a,w.o,He.Tv,K.VQ,i.Jx,function({children:e}){return(0,u.jsx)(We.y_,{children:(0,u.jsx)(Ge.e,{children:(0,u.jsx)(Qe,{children:e})})})}]);function Ke({children:e}){return(0,u.jsx)(Ze,{children:e})}var Ye=n(2181);const Xe="page_mwbl",Je="scene_io3B",et="houses_jKFQ",tt="windows_rkUS",nt="svg_zm7R",rt="gushGroup_XqhH",at="waves_SXDf",ot="droplets_BhSQ",it="d1_sQeR",lt="d2_BpfO",st="d3_VLXW",ct="d4_rChk",ut="d5_C2FU",dt="tag_zSPY",pt="copy_rJGn",ft="eyebrow_DmtM",ht="title_tmNc",gt="lede_fHWD",mt="actions_hYZl",yt="tryButton_ak7v",bt="homeLink_IU8p",vt="details_cCPi",wt="detailsBody_tZna";function xt(){return(0,u.jsx)("div",{className:Je,"aria-hidden":"true",children:(0,u.jsxs)("svg",{viewBox:"0 0 800 360",preserveAspectRatio:"xMidYMid slice",className:nt,children:[(0,u.jsx)("rect",{x:"0",y:"0",width:"800",height:"200",fill:"var(--c-cobalt-50)"}),(0,u.jsxs)("g",{className:et,fill:"var(--c-orange-knvb)",children:[(0,u.jsx)("path",{d:"M20,240 L20,80 L24,80 L24,72 L32,72 L32,64 L40,64 L40,60 L56,60 L56,64 L64,64 L64,72 L72,72 L72,80 L76,80 L76,240 Z"}),(0,u.jsx)("path",{d:"M86,240 L86,98 Q86,72 108,72 Q130,72 130,98 L130,240 Z"}),(0,u.jsx)("path",{d:"M140,240 L140,60 L146,60 L146,50 L154,50 L154,40 L162,40 L162,28 L178,28 L178,40 L186,40 L186,50 L194,50 L194,60 L200,60 L200,240 Z"}),(0,u.jsx)("path",{d:"M210,240 L210,100 L234,72 L258,100 L258,240 Z"}),(0,u.jsx)("path",{d:"M268,240 L268,96 L274,96 L274,86 L282,86 L282,76 L290,76 L290,68 L308,68 L308,76 L316,76 L316,86 L324,86 L324,96 L330,96 L330,240 Z"}),(0,u.jsx)("path",{d:"M340,240 L340,80 L356,80 L356,68 L360,68 L360,46 L364,32 L368,46 L368,68 L372,68 L372,80 L388,80 L388,240 Z"})]}),(0,u.jsxs)("g",{className:tt,children:[(0,u.jsx)("rect",{x:"32",y:"106",width:"8",height:"12",fill:"rgba(255,247,210,0.92)"}),(0,u.jsx)("rect",{x:"56",y:"106",width:"8",height:"12",fill:"rgba(11,32,73,0.35)"}),(0,u.jsx)("rect",{x:"32",y:"138",width:"8",height:"12",fill:"rgba(11,32,73,0.35)"}),(0,u.jsx)("rect",{x:"56",y:"138",width:"8",height:"12",fill:"rgba(255,247,210,0.6)"}),(0,u.jsx)("rect",{x:"32",y:"170",width:"8",height:"12",fill:"rgba(11,32,73,0.35)"}),(0,u.jsx)("rect",{x:"56",y:"170",width:"8",height:"12",fill:"rgba(11,32,73,0.35)"}),(0,u.jsx)("rect",{x:"92",y:"118",width:"10",height:"14",fill:"rgba(255,247,210,0.85)"}),(0,u.jsx)("rect",{x:"114",y:"118",width:"10",height:"14",fill:"rgba(11,32,73,0.35)"}),(0,u.jsx)("rect",{x:"92",y:"146",width:"10",height:"14",fill:"rgba(11,32,73,0.35)"}),(0,u.jsx)("rect",{x:"114",y:"146",width:"10",height:"14",fill:"rgba(11,32,73,0.35)"}),(0,u.jsx)("rect",{x:"92",y:"174",width:"10",height:"14",fill:"rgba(11,32,73,0.35)"}),(0,u.jsx)("rect",{x:"114",y:"174",width:"10",height:"14",fill:"rgba(255,247,210,0.6)"}),(0,u.jsx)("rect",{x:"150",y:"80",width:"10",height:"14",fill:"rgba(255,247,210,0.85)"}),(0,u.jsx)("rect",{x:"178",y:"80",width:"10",height:"14",fill:"rgba(11,32,73,0.35)"}),(0,u.jsx)("rect",{x:"150",y:"108",width:"10",height:"14",fill:"rgba(11,32,73,0.35)"}),(0,u.jsx)("rect",{x:"178",y:"108",width:"10",height:"14",fill:"rgba(11,32,73,0.35)"}),(0,u.jsx)("rect",{x:"150",y:"138",width:"10",height:"14",fill:"rgba(11,32,73,0.35)"}),(0,u.jsx)("rect",{x:"178",y:"138",width:"10",height:"14",fill:"rgba(255,247,210,0.7)"}),(0,u.jsx)("rect",{x:"150",y:"166",width:"10",height:"14",fill:"rgba(11,32,73,0.35)"}),(0,u.jsx)("rect",{x:"178",y:"166",width:"10",height:"14",fill:"rgba(11,32,73,0.35)"}),(0,u.jsx)("rect",{x:"220",y:"118",width:"10",height:"14",fill:"rgba(11,32,73,0.35)"}),(0,u.jsx)("rect",{x:"240",y:"118",width:"10",height:"14",fill:"rgba(255,247,210,0.85)"}),(0,u.jsx)("rect",{x:"220",y:"148",width:"10",height:"14",fill:"rgba(11,32,73,0.35)"}),(0,u.jsx)("rect",{x:"240",y:"148",width:"10",height:"14",fill:"rgba(11,32,73,0.35)"}),(0,u.jsx)("rect",{x:"278",y:"116",width:"10",height:"12",fill:"rgba(11,32,73,0.35)"}),(0,u.jsx)("rect",{x:"296",y:"116",width:"10",height:"12",fill:"rgba(255,247,210,0.65)"}),(0,u.jsx)("rect",{x:"316",y:"116",width:"10",height:"12",fill:"rgba(11,32,73,0.35)"}),(0,u.jsx)("rect",{x:"278",y:"146",width:"10",height:"12",fill:"rgba(255,247,210,0.7)"}),(0,u.jsx)("rect",{x:"296",y:"146",width:"10",height:"12",fill:"rgba(11,32,73,0.35)"}),(0,u.jsx)("rect",{x:"316",y:"146",width:"10",height:"12",fill:"rgba(11,32,73,0.35)"}),(0,u.jsx)("rect",{x:"354",y:"106",width:"8",height:"14",fill:"rgba(255,247,210,0.85)"}),(0,u.jsx)("rect",{x:"354",y:"138",width:"8",height:"14",fill:"rgba(11,32,73,0.35)"}),(0,u.jsx)("rect",{x:"354",y:"172",width:"8",height:"14",fill:"rgba(255,247,210,0.55)"})]}),(0,u.jsx)("path",{d:"M440,240 L560,40 L660,40 L800,240 L800,360 L440,360 Z",fill:"var(--c-orange-knvb)"}),(0,u.jsx)("path",{d:"M452,240 L566,54 L654,54 L788,240 Z",fill:"var(--c-cobalt-900)",opacity:"0.12"}),(0,u.jsx)("path",{d:"M482,162 Q496,140 516,138 Q536,140 542,160 Q540,178 524,184 L500,185 Q478,180 482,162 Z",fill:"var(--c-cobalt-900)"}),(0,u.jsxs)("g",{className:rt,children:[(0,u.jsx)("path",{d:"M500,184 Q495,200 502,200 Q510,200 522,184 Q514,182 500,184 Z",fill:"var(--c-cobalt-400)"}),(0,u.jsx)("path",{d:"M502,200 Q495,212 487,225 L495,232 Q514,222 519,200 Q510,196 502,200 Z",fill:"var(--c-cobalt-400)",opacity:"0.85"})]}),(0,u.jsxs)("g",{className:ot,fill:"var(--c-cobalt-400)",children:[(0,u.jsx)("circle",{cx:"476",cy:"222",r:"2.5",className:it}),(0,u.jsx)("circle",{cx:"464",cy:"216",r:"2",className:lt}),(0,u.jsx)("circle",{cx:"510",cy:"226",r:"2.5",className:st}),(0,u.jsx)("circle",{cx:"528",cy:"218",r:"2",className:ct}),(0,u.jsx)("circle",{cx:"498",cy:"228",r:"3",className:ut})]}),(0,u.jsx)("rect",{x:"0",y:"200",width:"800",height:"160",fill:"var(--c-cobalt-900)"}),(0,u.jsx)("rect",{x:"0",y:"200",width:"430",height:"4",fill:"var(--c-cobalt-400)",opacity:"0.6"}),(0,u.jsxs)("g",{className:at,fill:"none",stroke:"rgba(67,118,252,0.30)",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,u.jsx)("path",{d:"M0,224 L80,212 L160,224 L240,212 L320,224 L400,212 L480,224 L560,212 L640,224 L720,212 L800,224"}),(0,u.jsx)("path",{d:"M0,278 L100,260 L200,278 L300,260 L400,278 L500,260 L600,278 L700,260 L800,278"}),(0,u.jsx)("path",{d:"M0,332 L120,310 L240,332 L360,310 L480,332 L600,310 L720,332 L800,322"})]}),(0,u.jsxs)("g",{transform:"translate(410,196)",children:[(0,u.jsx)("polygon",{points:"0,-12 10,-6 10,6 0,12 -10,6 -10,-6",fill:"var(--c-cobalt-900)"}),(0,u.jsx)("rect",{x:"-9",y:"8",width:"18",height:"14",rx:"3",fill:"var(--c-orange-knvb)"})]}),(0,u.jsxs)("g",{className:dt,transform:"translate(420,150)",children:[(0,u.jsx)("rect",{x:"-72",y:"-13",width:"144",height:"26",rx:"13",fill:"white",stroke:"var(--c-cobalt-200)"}),(0,u.jsx)("text",{x:"0",y:"4",textAnchor:"middle",fontFamily:"var(--conduction-typography-font-family-code)",fontSize:"11",fill:"var(--c-cobalt-700)",children:"duct tape inbound"})]})]})})}function kt({error:e,tryAgain:t}){return(0,u.jsxs)("main",{className:Xe,children:[(0,u.jsx)(xt,{}),(0,u.jsxs)("div",{className:pt,children:[(0,u.jsx)("p",{className:ft,children:"Finger in the dyke"}),(0,u.jsx)("h1",{className:ht,children:"Oh, no. Something broke."}),(0,u.jsx)("p",{className:gt,children:"We are dispatching a team with duct tape right now. Please try again in a moment, or take a different route."}),(0,u.jsxs)("div",{className:mt,children:[(0,u.jsx)(Ye.a2,{onClick:t,className:yt}),(0,u.jsx)("a",{href:"/",className:bt,children:"Or back to Conduction.nl \u2192"})]}),(0,u.jsxs)("details",{className:vt,children:[(0,u.jsx)("summary",{children:"What technically went wrong"}),(0,u.jsx)("div",{className:wt,children:(0,u.jsx)(Ye.bq,{error:e})})]})]})]})}const St="mainWrapper_z2l0";function Et(e){const{children:t,noFooter:n,wrapperClassName:r,title:l,description:s}=e;return(0,u.jsxs)(Ke,{children:[(0,u.jsx)(i.be,{title:l,description:s}),(0,u.jsx)(b,{}),(0,u.jsx)(T,{}),(0,u.jsx)(Pe,{}),(0,u.jsx)("div",{id:d,className:(0,a.A)(m.G.layout.main.container,m.G.wrapper.main,St,r),children:(0,u.jsx)(o.A,{fallback:e=>(0,u.jsx)(kt,{...e}),children:t})}),!n&&(0,u.jsx)(Me,{})]})}},1463(e,t,n){"use strict";n.d(t,{A:()=>o});n(6540);var r=n(5260),a=n(4848);function o({locale:e,version:t,tag:n}){const o=e;return(0,a.jsxs)(r.A,{children:[e&&(0,a.jsx)("meta",{name:"docusaurus_locale",content:e}),t&&(0,a.jsx)("meta",{name:"docusaurus_version",content:t}),n&&(0,a.jsx)("meta",{name:"docusaurus_tag",content:n}),o&&(0,a.jsx)("meta",{name:"docsearch:language",content:o}),t&&(0,a.jsx)("meta",{name:"docsearch:version",content:t}),n&&(0,a.jsx)("meta",{name:"docsearch:docusaurus_tag",content:n})]})}},1422(e,t,n){"use strict";n.d(t,{N:()=>h,u:()=>l});var r=n(6540),a=n(205),o=n(3109),i=n(4848);function l({initialState:e}){const[t,n]=(0,r.useState)(e??!1),a=(0,r.useCallback)(()=>{n(e=>!e)},[]);return{collapsed:t,setCollapsed:n,toggleCollapsed:a}}const s={display:"none",overflow:"hidden",height:"0px"},c={display:"block",overflow:"visible",height:"auto"};function u(e,t){const n=t?s:c;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function d({collapsibleRef:e,collapsed:t,animation:n}){const a=(0,r.useRef)(!1);(0,r.useEffect)(()=>{const r=e.current;function i(){const e=r.scrollHeight,t=n?.duration??function(e){if((0,o.O)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(e);return{transition:`height ${t}ms ${n?.easing??"ease-in-out"}`,height:`${e}px`}}function l(){const e=i();r.style.transition=e.transition,r.style.height=e.height}if(!a.current)return u(r,t),void(a.current=!0);return r.style.willChange="height",function(){const e=requestAnimationFrame(()=>{t?(l(),requestAnimationFrame(()=>{r.style.height=s.height,r.style.overflow=s.overflow})):(r.style.display="block",requestAnimationFrame(()=>{l()}))});return()=>cancelAnimationFrame(e)}()},[e,t,n])}function p({as:e="div",collapsed:t,children:n,animation:a,onCollapseTransitionEnd:o,className:l}){const s=(0,r.useRef)(null);return d({collapsibleRef:s,collapsed:t,animation:a}),(0,i.jsx)(e,{ref:s,onTransitionEnd:e=>{"height"===e.propertyName&&(u(s.current,t),o?.(t))},className:l,children:n})}function f({collapsed:e,...t}){const[n,o]=(0,r.useState)(!e),[l,s]=(0,r.useState)(e);return(0,a.A)(()=>{e||o(!0)},[e]),(0,a.A)(()=>{n&&s(e)},[n,e]),n?(0,i.jsx)(p,{...t,collapsed:l}):null}function h({lazy:e,...t}){const n=e?f:p;return(0,i.jsx)(n,{...t})}},5041(e,t,n){"use strict";n.d(t,{M:()=>g,o:()=>h});var r=n(6540),a=n(2303),o=n(679),i=n(9532),l=n(6342),s=n(4848);const c=(0,o.Wf)("docusaurus.announcement.dismiss"),u=(0,o.Wf)("docusaurus.announcement.id"),d=()=>"true"===c.get(),p=e=>c.set(String(e)),f=r.createContext(null);function h({children:e}){const t=function(){const{announcementBar:e}=(0,l.p)(),t=(0,a.A)(),[n,o]=(0,r.useState)(()=>!!t&&d());(0,r.useEffect)(()=>{o(d())},[]);const i=(0,r.useCallback)(()=>{p(!0),o(!0)},[]);return(0,r.useEffect)(()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&p(!1),!r&&d()||o(!1)},[e]),(0,r.useMemo)(()=>({isActive:!!e&&!n,close:i}),[e,n,i])}();return(0,s.jsx)(f.Provider,{value:t,children:e})}function g(){const e=(0,r.useContext)(f);if(!e)throw new i.dV("AnnouncementBarProvider");return e}},5293(e,t,n){"use strict";n.d(t,{G:()=>k,a:()=>x});var r=n(6540),a=n(2303),o=n(9532),i=n(679),l=n(6342),s=n(4848);function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function u(e){return function(e,t){const n=window.matchMedia(e);return n.addEventListener("change",t),()=>n.removeEventListener("change",t)}("(prefers-color-scheme: dark)",()=>e(c()))}const d=r.createContext(void 0),p=(0,i.Wf)("theme"),f="system",h=e=>"dark"===e?"dark":"light",g=e=>null===e||e===f?null:h(e),m=()=>h(document.documentElement.getAttribute("data-theme")),y=e=>{document.documentElement.setAttribute("data-theme",h(e))},b=()=>g(document.documentElement.getAttribute("data-theme-choice")),v=e=>{document.documentElement.setAttribute("data-theme-choice",g(e)??f)};function w(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.p)(),{colorMode:o,setColorModeState:i,colorModeChoice:s,setColorModeChoiceState:d}=function(){const{colorMode:{defaultMode:e}}=(0,l.p)(),t=(0,a.A)(),[n,o]=(0,r.useState)(t?m():e),[i,s]=(0,r.useState)(t?b():null);return(0,r.useEffect)(()=>{o(m()),s(b())},[]),{colorMode:n,setColorModeState:o,colorModeChoice:i,setColorModeChoiceState:s}}();(0,r.useEffect)(()=>{t&&p.del()},[t]);const f=(0,r.useCallback)((t,r={})=>{const{persist:a=!0}=r;if(null===t){const t=n?c():e;y(t),i(t),v(null),d(null)}else y(t),v(t),i(t),d(t);var o;a&&(null===(o=t)?p.del():p.set(h(o)))},[i,d,n,e]);return(0,r.useEffect)(()=>p.listen(e=>{f(g(e.newValue))}),[f]),(0,r.useEffect)(()=>{if(null===s&&n)return u(e=>{i(e),y(e)})},[n,s,i]),(0,r.useMemo)(()=>({colorMode:o,colorModeChoice:s,setColorMode:f,get isDarkTheme(){return"dark"===o},setLightTheme(){f("light")},setDarkTheme(){f("dark")}}),[o,s,f])}function x({children:e}){const t=w();return(0,s.jsx)(d.Provider,{value:t,children:e})}function k(){const e=(0,r.useContext)(d);if(null==e)throw new o.dV("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},2069(e,t,n){"use strict";n.d(t,{M:()=>h,e:()=>f});var r=n(6540),a=n(5600),o=n(4581),i=n(7485),l=n(6342),s=n(9532),c=n(4848);const u=r.createContext(void 0);function d(){const e=function(){const e=(0,a.YL)(),{items:t}=(0,l.p)().navbar;return 0===t.length&&!e.component}(),t=(0,o.l)(),n=!e&&"mobile"===t,[i,s]=(0,r.useState)(!1),c=(0,r.useCallback)(()=>{s(e=>!e)},[]);return(0,r.useEffect)(()=>{"desktop"===t&&s(!1)},[t]),(0,r.useMemo)(()=>({disabled:e,shouldRender:n,toggle:c,shown:i}),[e,n,c,i])}function p({handler:e}){return(0,i.$Z)(e),null}function f({children:e}){const t=d();return(0,c.jsxs)(c.Fragment,{children:[t.shown&&(0,c.jsx)(p,{handler:()=>(t.toggle(),!1)}),(0,c.jsx)(u.Provider,{value:t,children:e})]})}function h(){const e=r.useContext(u);if(void 0===e)throw new s.dV("NavbarMobileSidebarProvider");return e}},5600(e,t,n){"use strict";n.d(t,{GX:()=>c,YL:()=>s,y_:()=>l});var r=n(6540),a=n(9532),o=n(4848);const i=r.createContext(null);function l({children:e}){const t=(0,r.useState)({component:null,props:null});return(0,o.jsx)(i.Provider,{value:t,children:e})}function s(){const e=(0,r.useContext)(i);if(!e)throw new a.dV("NavbarSecondaryMenuContentProvider");return e[0]}function c({component:e,props:t}){const n=(0,r.useContext)(i);if(!n)throw new a.dV("NavbarSecondaryMenuContentProvider");const[,o]=n,l=(0,a.Be)(t);return(0,r.useEffect)(()=>{o({component:e,props:l})},[o,e,l]),(0,r.useEffect)(()=>()=>o({component:null,props:null}),[o]),null}},4581(e,t,n){"use strict";n.d(t,{l:()=>l});var r=n(6540),a=n(8193);const o="desktop",i="mobile";function l({desktopBreakpoint:e=996}={}){const[t,n]=(0,r.useState)(()=>"ssr");return(0,r.useEffect)(()=>{function t(){n(function(e){if(!a.A.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?o:i}(e))}return t(),window.addEventListener("resize",t),()=>{window.removeEventListener("resize",t)}},[e]),t}},7559(e,t,n){"use strict";n.d(t,{G:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",blogAuthorsListPage:"blog-authors-list-page",blogAuthorsPostsPage:"blog-authors-posts-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",draftBanner:"theme-draft-banner",admonitionType:e=>`theme-admonition-${e}`},announcementBar:{container:"theme-announcement-bar"},tabs:{container:"theme-tabs-container"},layout:{navbar:{container:"theme-layout-navbar",containerLeft:"theme-layout-navbar-left",containerRight:"theme-layout-navbar-right",mobileSidebar:{container:"theme-layout-navbar-sidebar",panel:"theme-layout-navbar-sidebar-panel"}},main:{container:"theme-layout-main"},footer:{container:"theme-layout-footer",column:"theme-layout-footer-column"}},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`,docCard:{container:"theme-doc-card-container",heading:"theme-doc-card-heading",icon:"theme-doc-card-icon",title:"theme-doc-card-title",description:"theme-doc-card-description"}},blog:{blogFooterTagsRow:"theme-blog-footer-tags-row",blogFooterEditMetaRow:"theme-blog-footer-edit-meta-row"},pages:{pageFooterEditMetaRow:"theme-pages-footer-edit-meta-row"}}},3109(e,t,n){"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{O:()=>r})},2181(e,t,n){"use strict";n.d(t,{bq:()=>d,MN:()=>u,a2:()=>c});var r=n(6540),a=n(1312),o=n(440);const i="errorBoundaryError_a6uf",l="errorBoundaryFallback_VBag";var s=n(4848);function c(e){return(0,s.jsx)("button",{type:"button",...e,children:(0,s.jsx)(a.A,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function u({error:e,tryAgain:t}){return(0,s.jsxs)("div",{className:l,children:[(0,s.jsx)("p",{children:e.message}),(0,s.jsx)(c,{onClick:t})]})}function d({error:e}){const t=(0,o.rA)(e).map(e=>e.message).join("\n\nCause:\n");return(0,s.jsx)("p",{className:i,children:t})}r.Component},7485(e,t,n){"use strict";n.d(t,{$Z:()=>i,Hl:()=>l,jy:()=>s});var r=n(6540),a=n(6347),o=n(9532);function i(e){!function(e){const t=(0,a.W6)(),n=(0,o._q)(e);(0,r.useEffect)(()=>t.block((e,t)=>n(e,t)),[t,n])}((t,n)=>{if("POP"===n)return e(t,n)})}function l(e){const t=(0,a.W6)();return(0,r.useSyncExternalStore)(t.listen,()=>e(t),()=>e({...t,location:{...t.location,search:"",hash:"",state:void 0}}))}function s(e,t){const n=function(e,t){const n=new URLSearchParams;for(const r of e)for(const[e,a]of r.entries())"append"===t?n.append(e,a):n.set(e,a);return n}(e.map(e=>new URLSearchParams(e??"")),t),r=n.toString();return r?`?${r}`:r}},5500(e,t,n){"use strict";n.d(t,{Jx:()=>y,be:()=>h,e3:()=>m});var r=n(6540),a=n(5066),o=n(5260),i=n(6803),l=n(6025),s=n(4563),c=n(4848);function u({title:e}){const t=(0,s.s$)().format(e);return(0,c.jsxs)(o.A,{children:[(0,c.jsx)("title",{children:t}),(0,c.jsx)("meta",{property:"og:title",content:t})]})}function d({description:e}){return(0,c.jsxs)(o.A,{children:[(0,c.jsx)("meta",{name:"description",content:e}),(0,c.jsx)("meta",{property:"og:description",content:e})]})}function p({image:e}){const{withBaseUrl:t}=(0,l.hH)(),n=t(e,{absolute:!0});return(0,c.jsxs)(o.A,{children:[(0,c.jsx)("meta",{property:"og:image",content:n}),(0,c.jsx)("meta",{name:"twitter:image",content:n})]})}function f({keywords:e}){return(0,c.jsx)(o.A,{children:(0,c.jsx)("meta",{name:"keywords",content:Array.isArray(e)?e.join(","):e})})}function h({title:e,description:t,keywords:n,image:r,children:a}){return(0,c.jsxs)(c.Fragment,{children:[e&&(0,c.jsx)(u,{title:e}),t&&(0,c.jsx)(d,{description:t}),n&&(0,c.jsx)(f,{keywords:n}),r&&(0,c.jsx)(p,{image:r}),a&&(0,c.jsx)(o.A,{children:a})]})}const g=r.createContext(void 0);function m({className:e,children:t}){const n=r.useContext(g),i=(0,a.A)(n,e);return(0,c.jsxs)(g.Provider,{value:i,children:[(0,c.jsx)(o.A,{children:(0,c.jsx)("html",{className:i})}),t]})}function y({children:e}){const t=(0,i.A)(),n=`plugin-${t.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const r=`plugin-id-${t.plugin.id}`;return(0,c.jsx)(m,{className:(0,a.A)(n,r),children:e})}},9532(e,t,n){"use strict";n.d(t,{Be:()=>c,ZC:()=>l,_q:()=>i,dV:()=>s,fM:()=>u});var r=n(6540),a=n(205),o=n(4848);function i(e){const t=(0,r.useRef)(e);return(0,a.A)(()=>{t.current=e},[e]),(0,r.useCallback)((...e)=>t.current(...e),[])}function l(e){const t=(0,r.useRef)(void 0);return(0,a.A)(()=>{t.current=e}),t.current}class s extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?<name>\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function c(e){const t=Object.entries(e);return t.sort((e,t)=>e[0].localeCompare(t[0])),(0,r.useMemo)(()=>e,t.flat())}function u(e){return({children:t})=>(0,o.jsx)(o.Fragment,{children:e.reduceRight((e,t)=>(0,o.jsx)(t,{children:e}),t)})}},9169(e,t,n){"use strict";n.d(t,{Dt:()=>l,ys:()=>i});var r=n(6540),a=n(8328),o=n(4586);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.A)().siteConfig;return(0,r.useMemo)(()=>function({baseUrl:e,routes:t}){function n(t){return t.path===e&&!0===t.exact}function r(t){return t.path===e&&!t.exact}return function e(t){if(0===t.length)return;return t.find(n)||e(t.filter(r).flatMap(e=>e.routes??[]))}(t)}({routes:a.A,baseUrl:e}),[e])}},3104(e,t,n){"use strict";n.d(t,{Mq:()=>p,Tv:()=>c,gk:()=>f});var r=n(6540),a=n(8193),o=n(2303),i=(n(205),n(9532)),l=n(4848);const s=r.createContext(void 0);function c({children:e}){const t=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)(()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}}),[])}();return(0,l.jsx)(s.Provider,{value:t,children:e})}function u(){const e=(0,r.useContext)(s);if(null==e)throw new i.dV("ScrollControllerProvider");return e}const d=()=>a.A.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function p(e,t=[]){const{scrollEventsEnabledRef:n}=u(),a=(0,r.useRef)(d()),o=(0,i._q)(e);(0,r.useEffect)(()=>{const e=()=>{if(!n.current)return;const e=d();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)},[o,n,...t])}function f(){const e=(0,r.useRef)(null),t=(0,o.A)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&a<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(a-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},679(e,t,n){"use strict";n.d(t,{Wf:()=>c});n(6540);const r=JSON.parse('{"N":"localStorage","M":""}');const a=r.N;function o({key:e,oldValue:t,newValue:n,storage:r}){if(t===n)return;const a=document.createEvent("StorageEvent");a.initStorageEvent("storage",!1,!1,e,t,n,window.location.href,r),window.dispatchEvent(a)}function i(e=a){if("undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,l||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),l=!0),null}var t}let l=!1;const s={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function c(e,t){const n=`${e}${r.M}`;if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(n);const a=i(t?.persistence);return null===a?s:{get:()=>{try{return a.getItem(n)}catch(e){return console.error(`Docusaurus storage error, can't get key=${n}`,e),null}},set:e=>{try{const t=a.getItem(n);a.setItem(n,e),o({key:n,oldValue:t,newValue:e,storage:a})}catch(t){console.error(`Docusaurus storage error, can't set ${n}=${e}`,t)}},del:()=>{try{const e=a.getItem(n);a.removeItem(n),o({key:n,oldValue:e,newValue:null,storage:a})}catch(e){console.error(`Docusaurus storage error, can't delete key=${n}`,e)}},listen:e=>{try{const t=t=>{t.storageArea===a&&t.key===n&&e(t)};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)}catch(t){return console.error(`Docusaurus storage error, can't listen for changes of key=${n}`,t),()=>{}}}}}},4563(e,t,n){"use strict";n.d(t,{AL:()=>u,s$:()=>d});var r=n(6540),a=n(4586),o=n(6803),i=n(9532),l=n(4848);const s=({title:e,siteTitle:t,titleDelimiter:n})=>{const r=e?.trim();return r&&r!==t?`${r} ${n} ${t}`:t},c=(0,r.createContext)(null);function u({formatter:e,children:t}){return(0,l.jsx)(c.Provider,{value:e,children:t})}function d(){const e=function(){const e=(0,r.useContext)(c);if(null===e)throw new i.dV("TitleFormatterProvider");return e}(),{siteConfig:t}=(0,a.A)(),{title:n,titleDelimiter:l}=t,{plugin:u}=(0,o.A)();return{format:t=>e({title:t,siteTitle:n,titleDelimiter:l,plugin:u,defaultFormatter:s})}}},2131(e,t,n){"use strict";n.d(t,{o:()=>i});var r=n(4586),a=n(6347),o=n(440);function i(){const{siteConfig:{baseUrl:e,trailingSlash:t},i18n:{localeConfigs:n}}=(0,r.A)(),{pathname:i}=(0,a.zy)(),l=(0,o.Ks)(i,{trailingSlash:t,baseUrl:e}).replace(e,"");return{createUrl:function({locale:e,fullyQualified:t}){const r=function(e){const t=n[e];if(!t)throw new Error(`Unexpected Docusaurus bug, no locale config found for locale=${e}`);return t}(e);return`${`${t?r.url:""}`}${r.baseUrl}${l}`}}}},5062(e,t,n){"use strict";n.d(t,{$:()=>i});var r=n(6540),a=n(6347),o=n(9532);function i(e){const t=(0,a.zy)(),n=(0,o.ZC)(t),i=(0,o._q)(e);(0,r.useEffect)(()=>{n&&t!==n&&i({location:t,previousLocation:n})},[i,t,n])}},6342(e,t,n){"use strict";n.d(t,{p:()=>a});var r=n(4586);function a(){return(0,r.A)().siteConfig.themeConfig}},2983(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addTrailingSlash=a,t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[i]=e.split(/[#?]/),l="/"===i||i===r?i:(s=i,c=n,c?a(s):o(s));var s,c;return e.replace(i,l)},t.addLeadingSlash=function(e){return(0,r.addPrefix)(e,"/")},t.removeTrailingSlash=o;const r=n(2566);function a(e){return e.endsWith("/")?e:`${e}/`}function o(e){return(0,r.removeSuffix)(e,"/")}},253(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=function e(t){if(t.cause)return[t,...e(t.cause)];return[t]}},440(e,t,n){"use strict";t.rA=t.Ks=void 0;const r=n(1635);var a=n(2983);Object.defineProperty(t,"Ks",{enumerable:!0,get:function(){return r.__importDefault(a).default}});var o=n(2566);var i=n(253);Object.defineProperty(t,"rA",{enumerable:!0,get:function(){return i.getErrorCausalChain}})},2566(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addPrefix=function(e,t){return e.startsWith(t)?e:`${t}${e}`},t.removeSuffix=function(e,t){if(""===t)return e;return e.endsWith(t)?e.slice(0,-t.length):e},t.addSuffix=function(e,t){return e.endsWith(t)?e:`${e}${t}`},t.removePrefix=function(e,t){return e.startsWith(t)?e.slice(t.length):e}},1513(e,t,n){"use strict";n.d(t,{zR:()=>w,TM:()=>_,yJ:()=>f,sC:()=>L,AO:()=>p});var r=n(8168);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r<a;n+=1,r+=1)e[n]=e[r];e.pop()}const i=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],i=t&&t.split("/")||[],l=e&&a(e),s=t&&a(t),c=l||s;if(e&&a(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var u=i[i.length-1];n="."===u||".."===u||""===u}else n=!1;for(var d=0,p=i.length;p>=0;p--){var f=i[p];"."===f?o(i,p):".."===f?(o(i,p),d++):d&&(o(i,p),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&a(i[0])||i.unshift("");var h=i.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};var l=n(1561);function s(e){return"/"===e.charAt(0)?e:"/"+e}function c(e){return"/"===e.charAt(0)?e.substr(1):e}function u(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function f(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.A)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function h(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter(function(e){return e!==r})}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach(function(e){return e.apply(void 0,n)})}}}var g=!("undefined"==typeof window||!window.document||!window.document.createElement);function m(e,t){t(window.confirm(e))}var y="popstate",b="hashchange";function v(){try{return window.history.state||{}}catch(e){return{}}}function w(e){void 0===e&&(e={}),g||(0,l.A)(!1);var t,n=window.history,a=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,o=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,c=i.forceRefresh,w=void 0!==c&&c,x=i.getUserConfirmation,k=void 0===x?m:x,S=i.keyLength,E=void 0===S?6:S,j=e.basename?d(s(e.basename)):"";function _(e){var t=e||{},n=t.key,r=t.state,a=window.location,o=a.pathname+a.search+a.hash;return j&&(o=u(o,j)),f(o,r,n)}function C(){return Math.random().toString(36).substr(2,E)}var L=h();function A(e){(0,r.A)($,e),$.length=n.length,L.notifyListeners($.location,$.action)}function T(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||R(_(e.state))}function N(){R(_(v()))}var P=!1;function R(e){if(P)P=!1,A();else{L.confirmTransitionTo(e,"POP",k,function(t){t?A({action:"POP",location:e}):function(e){var t=$.location,n=D.indexOf(t.key);-1===n&&(n=0);var r=D.indexOf(e.key);-1===r&&(r=0);var a=n-r;a&&(P=!0,F(a))}(e)})}}var O=_(v()),D=[O.key];function I(e){return j+p(e)}function F(e){n.go(e)}var M=0;function z(e){1===(M+=e)&&1===e?(window.addEventListener(y,T),o&&window.addEventListener(b,N)):0===M&&(window.removeEventListener(y,T),o&&window.removeEventListener(b,N))}var B=!1;var $={length:n.length,action:"POP",location:O,createHref:I,push:function(e,t){var r="PUSH",o=f(e,t,C(),$.location);L.confirmTransitionTo(o,r,k,function(e){if(e){var t=I(o),i=o.key,l=o.state;if(a)if(n.pushState({key:i,state:l},null,t),w)window.location.href=t;else{var s=D.indexOf($.location.key),c=D.slice(0,s+1);c.push(o.key),D=c,A({action:r,location:o})}else window.location.href=t}})},replace:function(e,t){var r="REPLACE",o=f(e,t,C(),$.location);L.confirmTransitionTo(o,r,k,function(e){if(e){var t=I(o),i=o.key,l=o.state;if(a)if(n.replaceState({key:i,state:l},null,t),w)window.location.replace(t);else{var s=D.indexOf($.location.key);-1!==s&&(D[s]=o.key),A({action:r,location:o})}else window.location.replace(t)}})},go:F,goBack:function(){F(-1)},goForward:function(){F(1)},block:function(e){void 0===e&&(e=!1);var t=L.setPrompt(e);return B||(z(1),B=!0),function(){return B&&(B=!1,z(-1)),t()}},listen:function(e){var t=L.appendListener(e);return z(1),function(){z(-1),t()}}};return $}var x="hashchange",k={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+c(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:c,decodePath:s},slash:{encodePath:s,decodePath:s}};function S(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function E(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function j(e){window.location.replace(S(window.location.href)+"#"+e)}function _(e){void 0===e&&(e={}),g||(0,l.A)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),a=n.getUserConfirmation,o=void 0===a?m:a,i=n.hashType,c=void 0===i?"slash":i,y=e.basename?d(s(e.basename)):"",b=k[c],v=b.encodePath,w=b.decodePath;function _(){var e=w(E());return y&&(e=u(e,y)),f(e)}var C=h();function L(e){(0,r.A)(B,e),B.length=t.length,C.notifyListeners(B.location,B.action)}var A=!1,T=null;function N(){var e,t,n=E(),r=v(n);if(n!==r)j(r);else{var a=_(),i=B.location;if(!A&&(t=a,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(T===p(a))return;T=null,function(e){if(A)A=!1,L();else{var t="POP";C.confirmTransitionTo(e,t,o,function(n){n?L({action:t,location:e}):function(e){var t=B.location,n=D.lastIndexOf(p(t));-1===n&&(n=0);var r=D.lastIndexOf(p(e));-1===r&&(r=0);var a=n-r;a&&(A=!0,I(a))}(e)})}}(a)}}var P=E(),R=v(P);P!==R&&j(R);var O=_(),D=[p(O)];function I(e){t.go(e)}var F=0;function M(e){1===(F+=e)&&1===e?window.addEventListener(x,N):0===F&&window.removeEventListener(x,N)}var z=!1;var B={length:t.length,action:"POP",location:O,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=S(window.location.href)),n+"#"+v(y+p(e))},push:function(e,t){var n="PUSH",r=f(e,void 0,void 0,B.location);C.confirmTransitionTo(r,n,o,function(e){if(e){var t=p(r),a=v(y+t);if(E()!==a){T=t,function(e){window.location.hash=e}(a);var o=D.lastIndexOf(p(B.location)),i=D.slice(0,o+1);i.push(t),D=i,L({action:n,location:r})}else L()}})},replace:function(e,t){var n="REPLACE",r=f(e,void 0,void 0,B.location);C.confirmTransitionTo(r,n,o,function(e){if(e){var t=p(r),a=v(y+t);E()!==a&&(T=t,j(a));var o=D.indexOf(p(B.location));-1!==o&&(D[o]=t),L({action:n,location:r})}})},go:I,goBack:function(){I(-1)},goForward:function(){I(1)},block:function(e){void 0===e&&(e=!1);var t=C.setPrompt(e);return z||(M(1),z=!0),function(){return z&&(z=!1,M(-1)),t()}},listen:function(e){var t=C.appendListener(e);return M(1),function(){M(-1),t()}}};return B}function C(e,t,n){return Math.min(Math.max(e,t),n)}function L(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,a=t.initialEntries,o=void 0===a?["/"]:a,i=t.initialIndex,l=void 0===i?0:i,s=t.keyLength,c=void 0===s?6:s,u=h();function d(e){(0,r.A)(w,e),w.length=w.entries.length,u.notifyListeners(w.location,w.action)}function g(){return Math.random().toString(36).substr(2,c)}var m=C(l,0,o.length-1),y=o.map(function(e){return f(e,void 0,"string"==typeof e?g():e.key||g())}),b=p;function v(e){var t=C(w.index+e,0,w.entries.length-1),r=w.entries[t];u.confirmTransitionTo(r,"POP",n,function(e){e?d({action:"POP",location:r,index:t}):d()})}var w={length:y.length,action:"POP",location:y[m],index:m,entries:y,createHref:b,push:function(e,t){var r="PUSH",a=f(e,t,g(),w.location);u.confirmTransitionTo(a,r,n,function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}})},replace:function(e,t){var r="REPLACE",a=f(e,t,g(),w.location);u.confirmTransitionTo(a,r,n,function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))})},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),u.setPrompt(e)},listen:function(e){return u.appendListener(e)}};return w}},4146(e,t,n){"use strict";var r=n(4363),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var a=f(n);a&&a!==h&&e(t,a,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var l=s(t),g=s(n),m=0;m<i.length;++m){var y=i[m];if(!(o[y]||r&&r[y]||g&&g[y]||l&&l[y])){var b=p(n,y);try{c(t,y,b)}catch(v){}}}}return t}},311(e){"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,a,o,i,l],u=0;(s=new Error(t.replace(/%s/g,function(){return c[u++]}))).name="Invariant Violation"}throw s.framesToPop=1,s}}},4634(e){e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},6136(e,t,n){"use strict";n.r(t)},119(e,t,n){"use strict";n.r(t)},1043(e,t,n){"use strict";n.r(t)},5947(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function a(e,t,n){return e<t?t:e>n?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),c=o.querySelector(r.barSelector),u=r.speed,d=r.easing;return o.offsetWidth,l(function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(c,i(e,u,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout(function(){s(o,{transition:"all "+u+"ms linear",opacity:0}),setTimeout(function(){n.remove(),t()},u)},u)):setTimeout(t,u)}),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout(function(){n.status&&(n.trickle(),e())},r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always(function(){0===--t?(e=0,n.done()):n.set((e-t)/e)}),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),c=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(e,t){return t.toUpperCase()})}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function c(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},5302(e,t,n){var r=n(4634);e.exports=g,e.exports.parse=o,e.exports.compile=function(e,t){return c(o(e,t),t)},e.exports.tokensToFunction=c,e.exports.tokensToRegExp=h;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,l=0,s="",c=t&&t.delimiter||"/";null!=(n=a.exec(e));){var u=n[0],p=n[1],f=n.index;if(s+=e.slice(l,f),l=f+u.length,p)s+=p[1];else{var h=e[l],g=n[2],m=n[3],y=n[4],b=n[5],v=n[6],w=n[7];s&&(r.push(s),s="");var x=null!=g&&null!=h&&h!==g,k="+"===v||"*"===v,S="?"===v||"*"===v,E=g||c,j=y||b,_=g||("string"==typeof r[r.length-1]?r[r.length-1]:"");r.push({name:m||o++,prefix:g||"",delimiter:E,optional:S,repeat:k,partial:x,asterisk:!!w,pattern:j?d(j):w?".*":i(E,_)})}}return l<e.length&&(s+=e.substr(l)),s&&r.push(s),r}function i(e,t){return!t||t.indexOf(e)>-1?"[^"+u(e)+"]+?":u(t)+"|(?:(?!"+u(t)+")[^"+u(e)+"])+?"}function l(e){return encodeURI(e).replace(/[\/?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function s(e){return encodeURI(e).replace(/[?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function c(e,t){for(var n=new Array(e.length),a=0;a<e.length;a++)"object"==typeof e[a]&&(n[a]=new RegExp("^(?:"+e[a].pattern+")$",f(t)));return function(t,a){for(var o="",i=t||{},c=(a||{}).pretty?l:encodeURIComponent,u=0;u<e.length;u++){var d=e[u];if("string"!=typeof d){var p,f=i[d.name];if(null==f){if(d.optional){d.partial&&(o+=d.prefix);continue}throw new TypeError('Expected "'+d.name+'" to be defined')}if(r(f)){if(!d.repeat)throw new TypeError('Expected "'+d.name+'" to not repeat, but received `'+JSON.stringify(f)+"`");if(0===f.length){if(d.optional)continue;throw new TypeError('Expected "'+d.name+'" to not be empty')}for(var h=0;h<f.length;h++){if(p=c(f[h]),!n[u].test(p))throw new TypeError('Expected all "'+d.name+'" to match "'+d.pattern+'", but received `'+JSON.stringify(p)+"`");o+=(0===h?d.prefix:d.delimiter)+p}}else{if(p=d.asterisk?s(f):c(f),!n[u].test(p))throw new TypeError('Expected "'+d.name+'" to match "'+d.pattern+'", but received "'+p+'"');o+=d.prefix+p}}else o+=d}return o}}function u(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function d(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function p(e,t){return e.keys=t,e}function f(e){return e&&e.sensitive?"":"i"}function h(e,t,n){r(t)||(n=t||n,t=[]);for(var a=(n=n||{}).strict,o=!1!==n.end,i="",l=0;l<e.length;l++){var s=e[l];if("string"==typeof s)i+=u(s);else{var c=u(s.prefix),d="(?:"+s.pattern+")";t.push(s),s.repeat&&(d+="(?:"+c+d+")*"),i+=d=s.optional?s.partial?c+"("+d+")?":"(?:"+c+"("+d+"))?":c+"("+d+")"}}var h=u(n.delimiter||"/"),g=i.slice(-h.length)===h;return a||(i=(g?i.slice(0,-h.length):i)+"(?:"+h+"(?=$))?"),i+=o?"$":a&&g?"":"(?="+h+"|$)",p(new RegExp("^"+i,f(n)),t)}function g(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return p(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],a=0;a<e.length;a++)r.push(g(e[a],t,n).source);return p(new RegExp("(?:"+r.join("|")+")",f(n)),t)}(e,t,n):function(e,t,n){return h(o(e,n),t,n)}(e,t,n)}},6969(e){e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},8722(e,t,n){const r=n(6969),a=n(8380),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter(e=>"meta"!=e):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(r,e,t).load(e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(3157).resolve(t)],delete Prism.languages[e],n(3157)(t),o.add(e)})}i.silent=!1,e.exports=i},9700(){!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a}),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s<l.length&&!(a>=o.length);s++){var c=l[s];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=o[a],d=n.tokenStack[u],p="string"==typeof c?c:c.content,f=t(r,u),h=p.indexOf(f);if(h>-1){++a;var g=p.substring(0,h),m=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),y=p.substring(h+f.length),b=[];g&&b.push.apply(b,i([g])),b.push(m),y&&b.push.apply(b,i([y])),"string"==typeof c?l.splice.apply(l,[s,1].concat(b)):c.content=b}}else c.content&&i(c.content)}return l}(n.tokens)}}}})}(Prism)},8692(e,t,n){var r={"./":8722};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=8692},3157(e,t,n){var r={"./":8722};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=3157},8380(e){"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function a(r,o){if(!(r in n)){o.push(r);var i=o.indexOf(r);if(i<o.length-1)throw new Error("Circular dependency: "+o.slice(i).join(" -> "));var l={},s=e[r];if(s){function c(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,c),t(s.optional,c),t(s.modify,c)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),c=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a})}return n[r]||r}}(s);i=i.map(c),l=(l||[]).map(c);var u=n(i),d=n(l);i.forEach(function e(n){var r=s[n];t(r&&r.require,function(t){t in d||(u[t]=!0,e(t))})});for(var p,f=r(s),h=u;a(h);){for(var g in p={},h){var m=s[g];t(m&&m.modify,function(e){e in d&&(p[e]=!0)})}for(var y in d)if(!(y in u))for(var b in f(y))if(b in u){p[y]=!0;break}for(var v in h=p)u[v]=!0}var w={getIds:function(){var e=[];return w.load(function(t){e.push(t)}),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function c(e){if(e in l)return l[e];s[e]=!0;var a,u=[];for(var d in t(e))d in n&&u.push(d);if(0===u.length)a=r(e);else{var p=i(u.map(function(e){var t=c(e);return delete s[e],t}));o?a=o(p,function(){return r(e)}):r(e)}return l[e]=a}for(var u in n)c(u);var d=[];for(var p in s)d.push(l[p]);return i(d)}(f,u,t,n)}};return w}}();e.exports=t},2694(e,t,n){"use strict";var r=n(6925);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5556(e,t,n){e.exports=n(2694)()},6925(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},2551(e,t,n){"use strict";var r=n(6540),a=n(9982);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var i=new Set,l={};function s(e,t){c(e,t),c(e+"Capture",t)}function c(e,t){for(l[e]=t,e=0;e<t.length;e++)i.add(t[e])}var u=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),d=Object.prototype.hasOwnProperty,p=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,f={},h={};function g(e,t,n,r,a,o,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var m={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){m[e]=new g(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];m[t]=new g(t,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){m[e]=new g(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){m[e]=new g(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){m[e]=new g(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){m[e]=new g(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){m[e]=new g(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){m[e]=new g(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){m[e]=new g(e,5,!1,e.toLowerCase(),null,!1,!1)});var y=/[\-:]([a-z])/g;function b(e){return e[1].toUpperCase()}function v(e,t,n,r){var a=m.hasOwnProperty(t)?m[t]:null;(null!==a?0!==a.type:r||!(2<t.length)||"o"!==t[0]&&"O"!==t[0]||"n"!==t[1]&&"N"!==t[1])&&(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,a,r)&&(n=null),r||null===a?function(e){return!!d.call(h,e)||!d.call(f,e)&&(p.test(e)?h[e]=!0:(f[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):a.mustUseProperty?e[a.propertyName]=null===n?3!==a.type&&"":n:(t=a.attributeName,r=a.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(a=a.type)||4===a&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(y,b);m[t]=new g(t,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(y,b);m[t]=new g(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(y,b);m[t]=new g(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){m[e]=new g(e,1,!1,e.toLowerCase(),null,!1,!1)}),m.xlinkHref=new g("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){m[e]=new g(e,1,!1,e.toLowerCase(),null,!0,!0)});var w=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,x=Symbol.for("react.element"),k=Symbol.for("react.portal"),S=Symbol.for("react.fragment"),E=Symbol.for("react.strict_mode"),j=Symbol.for("react.profiler"),_=Symbol.for("react.provider"),C=Symbol.for("react.context"),L=Symbol.for("react.forward_ref"),A=Symbol.for("react.suspense"),T=Symbol.for("react.suspense_list"),N=Symbol.for("react.memo"),P=Symbol.for("react.lazy");Symbol.for("react.scope"),Symbol.for("react.debug_trace_mode");var R=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden"),Symbol.for("react.cache"),Symbol.for("react.tracing_marker");var O=Symbol.iterator;function D(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=O&&e[O]||e["@@iterator"])?e:null}var I,F=Object.assign;function M(e){if(void 0===I)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);I=t&&t[1]||""}return"\n"+I+e}var z=!1;function B(e,t){if(!e||z)return"";z=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(c){var r=c}Reflect.construct(e,[],t)}else{try{t.call()}catch(c){r=c}e.call(t.prototype)}else{try{throw Error()}catch(c){r=c}e()}}catch(c){if(c&&r&&"string"==typeof c.stack){for(var a=c.stack.split("\n"),o=r.stack.split("\n"),i=a.length-1,l=o.length-1;1<=i&&0<=l&&a[i]!==o[l];)l--;for(;1<=i&&0<=l;i--,l--)if(a[i]!==o[l]){if(1!==i||1!==l)do{if(i--,0>--l||a[i]!==o[l]){var s="\n"+a[i].replace(" at new "," at ");return e.displayName&&s.includes("<anonymous>")&&(s=s.replace("<anonymous>",e.displayName)),s}}while(1<=i&&0<=l);break}}}finally{z=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?M(e):""}function $(e){switch(e.tag){case 5:return M(e.type);case 16:return M("Lazy");case 13:return M("Suspense");case 19:return M("SuspenseList");case 0:case 2:case 15:return e=B(e.type,!1);case 11:return e=B(e.type.render,!1);case 1:return e=B(e.type,!0);default:return""}}function U(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case S:return"Fragment";case k:return"Portal";case j:return"Profiler";case E:return"StrictMode";case A:return"Suspense";case T:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case C:return(e.displayName||"Context")+".Consumer";case _:return(e._context.displayName||"Context")+".Provider";case L:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case N:return null!==(t=e.displayName||null)?t:U(e.type)||"Memo";case P:t=e._payload,e=e._init;try{return U(e(t))}catch(n){}}return null}function q(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=(e=t.render).displayName||e.name||"",t.displayName||(""!==e?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return U(t);case 8:return t===E?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"==typeof t)return t.displayName||t.name||null;if("string"==typeof t)return t}return null}function H(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function G(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function W(e){e._valueTracker||(e._valueTracker=function(e){var t=G(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var a=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){r=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function V(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=G(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function Q(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function Z(e,t){var n=t.checked;return F({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function K(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=H(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function Y(e,t){null!=(t=t.checked)&&v(e,"checked",t,!1)}function X(e,t){Y(e,t);var n=H(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ee(e,t.type,n):t.hasOwnProperty("defaultValue")&&ee(e,t.type,H(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function J(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ee(e,t,n){"number"===t&&Q(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var te=Array.isArray;function ne(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+H(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function re(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(o(91));return F({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function ae(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(o(92));if(te(n)){if(1<n.length)throw Error(o(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:H(n)}}function oe(e,t){var n=H(t.value),r=H(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ie(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}function le(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function se(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?le(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var ce,ue,de=(ue=function(e,t){if("http://www.w3.org/2000/svg"!==e.namespaceURI||"innerHTML"in e)e.innerHTML=t;else{for((ce=ce||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=ce.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction(function(){return ue(e,t)})}:ue);function pe(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var fe={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},he=["Webkit","ms","Moz","O"];function ge(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||fe.hasOwnProperty(e)&&fe[e]?(""+t).trim():t+"px"}function me(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),a=ge(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}Object.keys(fe).forEach(function(e){he.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),fe[t]=fe[e]})});var ye=F({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function be(e,t){if(t){if(ye[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(o(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(o(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(o(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(o(62))}}function ve(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var we=null;function xe(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var ke=null,Se=null,Ee=null;function je(e){if(e=va(e)){if("function"!=typeof ke)throw Error(o(280));var t=e.stateNode;t&&(t=xa(t),ke(e.stateNode,e.type,t))}}function _e(e){Se?Ee?Ee.push(e):Ee=[e]:Se=e}function Ce(){if(Se){var e=Se,t=Ee;if(Ee=Se=null,je(e),t)for(e=0;e<t.length;e++)je(t[e])}}function Le(e,t){return e(t)}function Ae(){}var Te=!1;function Ne(e,t,n){if(Te)return e(t,n);Te=!0;try{return Le(e,t,n)}finally{Te=!1,(null!==Se||null!==Ee)&&(Ae(),Ce())}}function Pe(e,t){var n=e.stateNode;if(null===n)return null;var r=xa(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(o(231,t,typeof n));return n}var Re=!1;if(u)try{var Oe={};Object.defineProperty(Oe,"passive",{get:function(){Re=!0}}),window.addEventListener("test",Oe,Oe),window.removeEventListener("test",Oe,Oe)}catch(ue){Re=!1}function De(e,t,n,r,a,o,i,l,s){var c=Array.prototype.slice.call(arguments,3);try{t.apply(n,c)}catch(u){this.onError(u)}}var Ie=!1,Fe=null,Me=!1,ze=null,Be={onError:function(e){Ie=!0,Fe=e}};function $e(e,t,n,r,a,o,i,l,s){Ie=!1,Fe=null,De.apply(Be,arguments)}function Ue(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{!!(4098&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function qe(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function He(e){if(Ue(e)!==e)throw Error(o(188))}function Ge(e){return null!==(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ue(e)))throw Error(o(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var i=a.alternate;if(null===i){if(null!==(r=a.return)){n=r;continue}break}if(a.child===i.child){for(i=a.child;i;){if(i===n)return He(a),e;if(i===r)return He(a),t;i=i.sibling}throw Error(o(188))}if(n.return!==r.return)n=a,r=i;else{for(var l=!1,s=a.child;s;){if(s===n){l=!0,n=a,r=i;break}if(s===r){l=!0,r=a,n=i;break}s=s.sibling}if(!l){for(s=i.child;s;){if(s===n){l=!0,n=i,r=a;break}if(s===r){l=!0,r=i,n=a;break}s=s.sibling}if(!l)throw Error(o(189))}}if(n.alternate!==r)throw Error(o(190))}if(3!==n.tag)throw Error(o(188));return n.stateNode.current===n?e:t}(e))?We(e):null}function We(e){if(5===e.tag||6===e.tag)return e;for(e=e.child;null!==e;){var t=We(e);if(null!==t)return t;e=e.sibling}return null}var Ve=a.unstable_scheduleCallback,Qe=a.unstable_cancelCallback,Ze=a.unstable_shouldYield,Ke=a.unstable_requestPaint,Ye=a.unstable_now,Xe=a.unstable_getCurrentPriorityLevel,Je=a.unstable_ImmediatePriority,et=a.unstable_UserBlockingPriority,tt=a.unstable_NormalPriority,nt=a.unstable_LowPriority,rt=a.unstable_IdlePriority,at=null,ot=null;var it=Math.clz32?Math.clz32:function(e){return e>>>=0,0===e?32:31-(lt(e)/st|0)|0},lt=Math.log,st=Math.LN2;var ct=64,ut=4194304;function dt(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&e;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&e;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function pt(e,t){var n=e.pendingLanes;if(0===n)return 0;var r=0,a=e.suspendedLanes,o=e.pingedLanes,i=268435455&n;if(0!==i){var l=i&~a;0!==l?r=dt(l):0!==(o&=i)&&(r=dt(o))}else 0!==(i=n&~a)?r=dt(i):0!==o&&(r=dt(o));if(0===r)return 0;if(0!==t&&t!==r&&0===(t&a)&&((a=r&-r)>=(o=t&-t)||16===a&&4194240&o))return t;if(4&r&&(r|=16&n),0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)a=1<<(n=31-it(t)),r|=e[n],t&=~a;return r}function ft(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function ht(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function gt(){var e=ct;return!(4194240&(ct<<=1))&&(ct=64),e}function mt(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function yt(e,t,n){e.pendingLanes|=t,536870912!==t&&(e.suspendedLanes=0,e.pingedLanes=0),(e=e.eventTimes)[t=31-it(t)]=n}function bt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-it(n),a=1<<r;a&t|e[r]&t&&(e[r]|=t),n&=~a}}var vt=0;function wt(e){return 1<(e&=-e)?4<e?268435455&e?16:536870912:4:1}var xt,kt,St,Et,jt,_t=!1,Ct=[],Lt=null,At=null,Tt=null,Nt=new Map,Pt=new Map,Rt=[],Ot="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function Dt(e,t){switch(e){case"focusin":case"focusout":Lt=null;break;case"dragenter":case"dragleave":At=null;break;case"mouseover":case"mouseout":Tt=null;break;case"pointerover":case"pointerout":Nt.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":Pt.delete(t.pointerId)}}function It(e,t,n,r,a,o){return null===e||e.nativeEvent!==o?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:o,targetContainers:[a]},null!==t&&(null!==(t=va(t))&&kt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function Ft(e){var t=ba(e.target);if(null!==t){var n=Ue(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=qe(n)))return e.blockedOn=t,void jt(e.priority,function(){St(n)})}else if(3===t&&n.stateNode.current.memoizedState.isDehydrated)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function Mt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Zt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=va(n))&&kt(t),e.blockedOn=n,!1;var r=new(n=e.nativeEvent).constructor(n.type,n);we=r,n.target.dispatchEvent(r),we=null,t.shift()}return!0}function zt(e,t,n){Mt(e)&&n.delete(t)}function Bt(){_t=!1,null!==Lt&&Mt(Lt)&&(Lt=null),null!==At&&Mt(At)&&(At=null),null!==Tt&&Mt(Tt)&&(Tt=null),Nt.forEach(zt),Pt.forEach(zt)}function $t(e,t){e.blockedOn===t&&(e.blockedOn=null,_t||(_t=!0,a.unstable_scheduleCallback(a.unstable_NormalPriority,Bt)))}function Ut(e){function t(t){return $t(t,e)}if(0<Ct.length){$t(Ct[0],e);for(var n=1;n<Ct.length;n++){var r=Ct[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==Lt&&$t(Lt,e),null!==At&&$t(At,e),null!==Tt&&$t(Tt,e),Nt.forEach(t),Pt.forEach(t),n=0;n<Rt.length;n++)(r=Rt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<Rt.length&&null===(n=Rt[0]).blockedOn;)Ft(n),null===n.blockedOn&&Rt.shift()}var qt=w.ReactCurrentBatchConfig,Ht=!0;function Gt(e,t,n,r){var a=vt,o=qt.transition;qt.transition=null;try{vt=1,Vt(e,t,n,r)}finally{vt=a,qt.transition=o}}function Wt(e,t,n,r){var a=vt,o=qt.transition;qt.transition=null;try{vt=4,Vt(e,t,n,r)}finally{vt=a,qt.transition=o}}function Vt(e,t,n,r){if(Ht){var a=Zt(e,t,n,r);if(null===a)Hr(e,t,r,Qt,n),Dt(e,r);else if(function(e,t,n,r,a){switch(t){case"focusin":return Lt=It(Lt,e,t,n,r,a),!0;case"dragenter":return At=It(At,e,t,n,r,a),!0;case"mouseover":return Tt=It(Tt,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return Nt.set(o,It(Nt.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,Pt.set(o,It(Pt.get(o)||null,e,t,n,r,a)),!0}return!1}(a,e,t,n,r))r.stopPropagation();else if(Dt(e,r),4&t&&-1<Ot.indexOf(e)){for(;null!==a;){var o=va(a);if(null!==o&&xt(o),null===(o=Zt(e,t,n,r))&&Hr(e,t,r,Qt,n),o===a)break;a=o}null!==a&&r.stopPropagation()}else Hr(e,t,r,null,n)}}var Qt=null;function Zt(e,t,n,r){if(Qt=null,null!==(e=ba(e=xe(r))))if(null===(t=Ue(e)))e=null;else if(13===(n=t.tag)){if(null!==(e=qe(t)))return e;e=null}else if(3===n){if(t.stateNode.current.memoizedState.isDehydrated)return 3===t.tag?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null);return Qt=e,null}function Kt(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(Xe()){case Je:return 1;case et:return 4;case tt:case nt:return 16;case rt:return 536870912;default:return 16}default:return 16}}var Yt=null,Xt=null,Jt=null;function en(){if(Jt)return Jt;var e,t,n=Xt,r=n.length,a="value"in Yt?Yt.value:Yt.textContent,o=a.length;for(e=0;e<r&&n[e]===a[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===a[o-t];t++);return Jt=a.slice(e,1<t?1-t:void 0)}function tn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function nn(){return!0}function rn(){return!1}function an(e){function t(t,n,r,a,o){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=a,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(a):a[i]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?nn:rn,this.isPropagationStopped=rn,this}return F(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=nn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=nn)},persist:function(){},isPersistent:nn}),t}var on,ln,sn,cn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},un=an(cn),dn=F({},cn,{view:0,detail:0}),pn=an(dn),fn=F({},dn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:jn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==sn&&(sn&&"mousemove"===e.type?(on=e.screenX-sn.screenX,ln=e.screenY-sn.screenY):ln=on=0,sn=e),on)},movementY:function(e){return"movementY"in e?e.movementY:ln}}),hn=an(fn),gn=an(F({},fn,{dataTransfer:0})),mn=an(F({},dn,{relatedTarget:0})),yn=an(F({},cn,{animationName:0,elapsedTime:0,pseudoElement:0})),bn=F({},cn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),vn=an(bn),wn=an(F({},cn,{data:0})),xn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},kn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Sn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function En(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Sn[e])&&!!t[e]}function jn(){return En}var _n=F({},dn,{key:function(e){if(e.key){var t=xn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=tn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?kn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:jn,charCode:function(e){return"keypress"===e.type?tn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?tn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Cn=an(_n),Ln=an(F({},fn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),An=an(F({},dn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:jn})),Tn=an(F({},cn,{propertyName:0,elapsedTime:0,pseudoElement:0})),Nn=F({},fn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Pn=an(Nn),Rn=[9,13,27,32],On=u&&"CompositionEvent"in window,Dn=null;u&&"documentMode"in document&&(Dn=document.documentMode);var In=u&&"TextEvent"in window&&!Dn,Fn=u&&(!On||Dn&&8<Dn&&11>=Dn),Mn=String.fromCharCode(32),zn=!1;function Bn(e,t){switch(e){case"keyup":return-1!==Rn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function $n(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Un=!1;var qn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Hn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!qn[e.type]:"textarea"===t}function Gn(e,t,n,r){_e(r),0<(t=Wr(t,"onChange")).length&&(n=new un("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Wn=null,Vn=null;function Qn(e){Mr(e,0)}function Zn(e){if(V(wa(e)))return e}function Kn(e,t){if("change"===e)return t}var Yn=!1;if(u){var Xn;if(u){var Jn="oninput"in document;if(!Jn){var er=document.createElement("div");er.setAttribute("oninput","return;"),Jn="function"==typeof er.oninput}Xn=Jn}else Xn=!1;Yn=Xn&&(!document.documentMode||9<document.documentMode)}function tr(){Wn&&(Wn.detachEvent("onpropertychange",nr),Vn=Wn=null)}function nr(e){if("value"===e.propertyName&&Zn(Vn)){var t=[];Gn(t,Vn,e,xe(e)),Ne(Qn,t)}}function rr(e,t,n){"focusin"===e?(tr(),Vn=n,(Wn=t).attachEvent("onpropertychange",nr)):"focusout"===e&&tr()}function ar(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Zn(Vn)}function or(e,t){if("click"===e)return Zn(t)}function ir(e,t){if("input"===e||"change"===e)return Zn(t)}var lr="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t};function sr(e,t){if(lr(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var a=n[r];if(!d.call(t,a)||!lr(e[a],t[a]))return!1}return!0}function cr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function ur(e,t){var n,r=cr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=cr(r)}}function dr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?dr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function pr(){for(var e=window,t=Q();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=Q((e=t.contentWindow).document)}return t}function fr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}function hr(e){var t=pr(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&dr(n.ownerDocument.documentElement,n)){if(null!==r&&fr(n))if(t=r.start,void 0===(e=r.end)&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if((e=(t=n.ownerDocument||document)&&t.defaultView||window).getSelection){e=e.getSelection();var a=n.textContent.length,o=Math.min(r.start,a);r=void 0===r.end?o:Math.min(r.end,a),!e.extend&&o>r&&(a=r,r=o,o=a),a=ur(n,o);var i=ur(n,r);a&&i&&(1!==e.rangeCount||e.anchorNode!==a.node||e.anchorOffset!==a.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&((t=t.createRange()).setStart(a.node,a.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"==typeof n.focus&&n.focus(),n=0;n<t.length;n++)(e=t[n]).element.scrollLeft=e.left,e.element.scrollTop=e.top}}var gr=u&&"documentMode"in document&&11>=document.documentMode,mr=null,yr=null,br=null,vr=!1;function wr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;vr||null==mr||mr!==Q(r)||("selectionStart"in(r=mr)&&fr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},br&&sr(br,r)||(br=r,0<(r=Wr(yr,"onSelect")).length&&(t=new un("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=mr)))}function xr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var kr={animationend:xr("Animation","AnimationEnd"),animationiteration:xr("Animation","AnimationIteration"),animationstart:xr("Animation","AnimationStart"),transitionend:xr("Transition","TransitionEnd")},Sr={},Er={};function jr(e){if(Sr[e])return Sr[e];if(!kr[e])return e;var t,n=kr[e];for(t in n)if(n.hasOwnProperty(t)&&t in Er)return Sr[e]=n[t];return e}u&&(Er=document.createElement("div").style,"AnimationEvent"in window||(delete kr.animationend.animation,delete kr.animationiteration.animation,delete kr.animationstart.animation),"TransitionEvent"in window||delete kr.transitionend.transition);var _r=jr("animationend"),Cr=jr("animationiteration"),Lr=jr("animationstart"),Ar=jr("transitionend"),Tr=new Map,Nr="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function Pr(e,t){Tr.set(e,t),s(t,[e])}for(var Rr=0;Rr<Nr.length;Rr++){var Or=Nr[Rr];Pr(Or.toLowerCase(),"on"+(Or[0].toUpperCase()+Or.slice(1)))}Pr(_r,"onAnimationEnd"),Pr(Cr,"onAnimationIteration"),Pr(Lr,"onAnimationStart"),Pr("dblclick","onDoubleClick"),Pr("focusin","onFocus"),Pr("focusout","onBlur"),Pr(Ar,"onTransitionEnd"),c("onMouseEnter",["mouseout","mouseover"]),c("onMouseLeave",["mouseout","mouseover"]),c("onPointerEnter",["pointerout","pointerover"]),c("onPointerLeave",["pointerout","pointerover"]),s("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),s("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),s("onBeforeInput",["compositionend","keypress","textInput","paste"]),s("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),s("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),s("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Dr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Ir=new Set("cancel close invalid load scroll toggle".split(" ").concat(Dr));function Fr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,a,i,l,s,c){if($e.apply(this,arguments),Ie){if(!Ie)throw Error(o(198));var u=Fe;Ie=!1,Fe=null,Me||(Me=!0,ze=u)}}(r,t,void 0,e),e.currentTarget=null}function Mr(e,t){t=!!(4&t);for(var n=0;n<e.length;n++){var r=e[n],a=r.event;r=r.listeners;e:{var o=void 0;if(t)for(var i=r.length-1;0<=i;i--){var l=r[i],s=l.instance,c=l.currentTarget;if(l=l.listener,s!==o&&a.isPropagationStopped())break e;Fr(a,l,c),o=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,c=l.currentTarget,l=l.listener,s!==o&&a.isPropagationStopped())break e;Fr(a,l,c),o=s}}}if(Me)throw e=ze,Me=!1,ze=null,e}function zr(e,t){var n=t[ga];void 0===n&&(n=t[ga]=new Set);var r=e+"__bubble";n.has(r)||(qr(t,e,2,!1),n.add(r))}function Br(e,t,n){var r=0;t&&(r|=4),qr(n,e,r,t)}var $r="_reactListening"+Math.random().toString(36).slice(2);function Ur(e){if(!e[$r]){e[$r]=!0,i.forEach(function(t){"selectionchange"!==t&&(Ir.has(t)||Br(t,!1,e),Br(t,!0,e))});var t=9===e.nodeType?e:e.ownerDocument;null===t||t[$r]||(t[$r]=!0,Br("selectionchange",!1,t))}}function qr(e,t,n,r){switch(Kt(t)){case 1:var a=Gt;break;case 4:a=Wt;break;default:a=Vt}n=a.bind(null,t,n,e),a=void 0,!Re||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(a=!0),r?void 0!==a?e.addEventListener(t,n,{capture:!0,passive:a}):e.addEventListener(t,n,!0):void 0!==a?e.addEventListener(t,n,{passive:a}):e.addEventListener(t,n,!1)}function Hr(e,t,n,r,a){var o=r;if(!(1&t||2&t||null===r))e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var l=r.stateNode.containerInfo;if(l===a||8===l.nodeType&&l.parentNode===a)break;if(4===i)for(i=r.return;null!==i;){var s=i.tag;if((3===s||4===s)&&((s=i.stateNode.containerInfo)===a||8===s.nodeType&&s.parentNode===a))return;i=i.return}for(;null!==l;){if(null===(i=ba(l)))return;if(5===(s=i.tag)||6===s){r=o=i;continue e}l=l.parentNode}}r=r.return}Ne(function(){var r=o,a=xe(n),i=[];e:{var l=Tr.get(e);if(void 0!==l){var s=un,c=e;switch(e){case"keypress":if(0===tn(n))break e;case"keydown":case"keyup":s=Cn;break;case"focusin":c="focus",s=mn;break;case"focusout":c="blur",s=mn;break;case"beforeblur":case"afterblur":s=mn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":s=hn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":s=gn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":s=An;break;case _r:case Cr:case Lr:s=yn;break;case Ar:s=Tn;break;case"scroll":s=pn;break;case"wheel":s=Pn;break;case"copy":case"cut":case"paste":s=vn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":s=Ln}var u=!!(4&t),d=!u&&"scroll"===e,p=u?null!==l?l+"Capture":null:l;u=[];for(var f,h=r;null!==h;){var g=(f=h).stateNode;if(5===f.tag&&null!==g&&(f=g,null!==p&&(null!=(g=Pe(h,p))&&u.push(Gr(h,g,f)))),d)break;h=h.return}0<u.length&&(l=new s(l,c,null,n,a),i.push({event:l,listeners:u}))}}if(!(7&t)){if(s="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||n===we||!(c=n.relatedTarget||n.fromElement)||!ba(c)&&!c[ha])&&(s||l)&&(l=a.window===a?a:(l=a.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(c=(c=n.relatedTarget||n.toElement)?ba(c):null)&&(c!==(d=Ue(c))||5!==c.tag&&6!==c.tag)&&(c=null)):(s=null,c=r),s!==c)){if(u=hn,g="onMouseLeave",p="onMouseEnter",h="mouse","pointerout"!==e&&"pointerover"!==e||(u=Ln,g="onPointerLeave",p="onPointerEnter",h="pointer"),d=null==s?l:wa(s),f=null==c?l:wa(c),(l=new u(g,h+"leave",s,n,a)).target=d,l.relatedTarget=f,g=null,ba(a)===r&&((u=new u(p,h+"enter",c,n,a)).target=f,u.relatedTarget=d,g=u),d=g,s&&c)e:{for(p=c,h=0,f=u=s;f;f=Vr(f))h++;for(f=0,g=p;g;g=Vr(g))f++;for(;0<h-f;)u=Vr(u),h--;for(;0<f-h;)p=Vr(p),f--;for(;h--;){if(u===p||null!==p&&u===p.alternate)break e;u=Vr(u),p=Vr(p)}u=null}else u=null;null!==s&&Qr(i,l,s,u,!1),null!==c&&null!==d&&Qr(i,d,c,u,!0)}if("select"===(s=(l=r?wa(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===s&&"file"===l.type)var m=Kn;else if(Hn(l))if(Yn)m=ir;else{m=ar;var y=rr}else(s=l.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(m=or);switch(m&&(m=m(e,r))?Gn(i,m,n,a):(y&&y(e,l,r),"focusout"===e&&(y=l._wrapperState)&&y.controlled&&"number"===l.type&&ee(l,"number",l.value)),y=r?wa(r):window,e){case"focusin":(Hn(y)||"true"===y.contentEditable)&&(mr=y,yr=r,br=null);break;case"focusout":br=yr=mr=null;break;case"mousedown":vr=!0;break;case"contextmenu":case"mouseup":case"dragend":vr=!1,wr(i,n,a);break;case"selectionchange":if(gr)break;case"keydown":case"keyup":wr(i,n,a)}var b;if(On)e:{switch(e){case"compositionstart":var v="onCompositionStart";break e;case"compositionend":v="onCompositionEnd";break e;case"compositionupdate":v="onCompositionUpdate";break e}v=void 0}else Un?Bn(e,n)&&(v="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(v="onCompositionStart");v&&(Fn&&"ko"!==n.locale&&(Un||"onCompositionStart"!==v?"onCompositionEnd"===v&&Un&&(b=en()):(Xt="value"in(Yt=a)?Yt.value:Yt.textContent,Un=!0)),0<(y=Wr(r,v)).length&&(v=new wn(v,e,null,n,a),i.push({event:v,listeners:y}),b?v.data=b:null!==(b=$n(n))&&(v.data=b))),(b=In?function(e,t){switch(e){case"compositionend":return $n(t);case"keypress":return 32!==t.which?null:(zn=!0,Mn);case"textInput":return(e=t.data)===Mn&&zn?null:e;default:return null}}(e,n):function(e,t){if(Un)return"compositionend"===e||!On&&Bn(e,t)?(e=en(),Jt=Xt=Yt=null,Un=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Fn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=Wr(r,"onBeforeInput")).length&&(a=new wn("onBeforeInput","beforeinput",null,n,a),i.push({event:a,listeners:r}),a.data=b))}Mr(i,t)})}function Gr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Wr(e,t){for(var n=t+"Capture",r=[];null!==e;){var a=e,o=a.stateNode;5===a.tag&&null!==o&&(a=o,null!=(o=Pe(e,n))&&r.unshift(Gr(e,o,a)),null!=(o=Pe(e,t))&&r.push(Gr(e,o,a))),e=e.return}return r}function Vr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Qr(e,t,n,r,a){for(var o=t._reactName,i=[];null!==n&&n!==r;){var l=n,s=l.alternate,c=l.stateNode;if(null!==s&&s===r)break;5===l.tag&&null!==c&&(l=c,a?null!=(s=Pe(n,o))&&i.unshift(Gr(n,s,l)):a||null!=(s=Pe(n,o))&&i.push(Gr(n,s,l))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}var Zr=/\r\n?/g,Kr=/\u0000|\uFFFD/g;function Yr(e){return("string"==typeof e?e:""+e).replace(Zr,"\n").replace(Kr,"")}function Xr(e,t,n){if(t=Yr(t),Yr(e)!==t&&n)throw Error(o(425))}function Jr(){}var ea=null,ta=null;function na(e,t){return"textarea"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var ra="function"==typeof setTimeout?setTimeout:void 0,aa="function"==typeof clearTimeout?clearTimeout:void 0,oa="function"==typeof Promise?Promise:void 0,ia="function"==typeof queueMicrotask?queueMicrotask:void 0!==oa?function(e){return oa.resolve(null).then(e).catch(la)}:ra;function la(e){setTimeout(function(){throw e})}function sa(e,t){var n=t,r=0;do{var a=n.nextSibling;if(e.removeChild(n),a&&8===a.nodeType)if("/$"===(n=a.data)){if(0===r)return e.removeChild(a),void Ut(t);r--}else"$"!==n&&"$?"!==n&&"$!"!==n||r++;n=a}while(n);Ut(t)}function ca(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break;if(8===t){if("$"===(t=e.data)||"$!"===t||"$?"===t)break;if("/$"===t)return null}}return e}function ua(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var da=Math.random().toString(36).slice(2),pa="__reactFiber$"+da,fa="__reactProps$"+da,ha="__reactContainer$"+da,ga="__reactEvents$"+da,ma="__reactListeners$"+da,ya="__reactHandles$"+da;function ba(e){var t=e[pa];if(t)return t;for(var n=e.parentNode;n;){if(t=n[ha]||n[pa]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=ua(e);null!==e;){if(n=e[pa])return n;e=ua(e)}return t}n=(e=n).parentNode}return null}function va(e){return!(e=e[pa]||e[ha])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function wa(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(o(33))}function xa(e){return e[fa]||null}var ka=[],Sa=-1;function Ea(e){return{current:e}}function ja(e){0>Sa||(e.current=ka[Sa],ka[Sa]=null,Sa--)}function _a(e,t){Sa++,ka[Sa]=e.current,e.current=t}var Ca={},La=Ea(Ca),Aa=Ea(!1),Ta=Ca;function Na(e,t){var n=e.type.contextTypes;if(!n)return Ca;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a,o={};for(a in n)o[a]=t[a];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function Pa(e){return null!=(e=e.childContextTypes)}function Ra(){ja(Aa),ja(La)}function Oa(e,t,n){if(La.current!==Ca)throw Error(o(168));_a(La,t),_a(Aa,n)}function Da(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var a in r=r.getChildContext())if(!(a in t))throw Error(o(108,q(e)||"Unknown",a));return F({},n,r)}function Ia(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Ca,Ta=La.current,_a(La,e),_a(Aa,Aa.current),!0}function Fa(e,t,n){var r=e.stateNode;if(!r)throw Error(o(169));n?(e=Da(e,t,Ta),r.__reactInternalMemoizedMergedChildContext=e,ja(Aa),ja(La),_a(La,e)):ja(Aa),_a(Aa,n)}var Ma=null,za=!1,Ba=!1;function $a(e){null===Ma?Ma=[e]:Ma.push(e)}function Ua(){if(!Ba&&null!==Ma){Ba=!0;var e=0,t=vt;try{var n=Ma;for(vt=1;e<n.length;e++){var r=n[e];do{r=r(!0)}while(null!==r)}Ma=null,za=!1}catch(a){throw null!==Ma&&(Ma=Ma.slice(e+1)),Ve(Je,Ua),a}finally{vt=t,Ba=!1}}return null}var qa=[],Ha=0,Ga=null,Wa=0,Va=[],Qa=0,Za=null,Ka=1,Ya="";function Xa(e,t){qa[Ha++]=Wa,qa[Ha++]=Ga,Ga=e,Wa=t}function Ja(e,t,n){Va[Qa++]=Ka,Va[Qa++]=Ya,Va[Qa++]=Za,Za=e;var r=Ka;e=Ya;var a=32-it(r)-1;r&=~(1<<a),n+=1;var o=32-it(t)+a;if(30<o){var i=a-a%5;o=(r&(1<<i)-1).toString(32),r>>=i,a-=i,Ka=1<<32-it(t)+a|n<<a|r,Ya=o+e}else Ka=1<<o|n<<a|r,Ya=e}function eo(e){null!==e.return&&(Xa(e,1),Ja(e,1,0))}function to(e){for(;e===Ga;)Ga=qa[--Ha],qa[Ha]=null,Wa=qa[--Ha],qa[Ha]=null;for(;e===Za;)Za=Va[--Qa],Va[Qa]=null,Ya=Va[--Qa],Va[Qa]=null,Ka=Va[--Qa],Va[Qa]=null}var no=null,ro=null,ao=!1,oo=null;function io(e,t){var n=Tc(5,null,null,0);n.elementType="DELETED",n.stateNode=t,n.return=e,null===(t=e.deletions)?(e.deletions=[n],e.flags|=16):t.push(n)}function lo(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,no=e,ro=ca(t.firstChild),!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,no=e,ro=null,!0);case 13:return null!==(t=8!==t.nodeType?null:t)&&(n=null!==Za?{id:Ka,overflow:Ya}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},(n=Tc(18,null,null,0)).stateNode=t,n.return=e,e.child=n,no=e,ro=null,!0);default:return!1}}function so(e){return!(!(1&e.mode)||128&e.flags)}function co(e){if(ao){var t=ro;if(t){var n=t;if(!lo(e,t)){if(so(e))throw Error(o(418));t=ca(n.nextSibling);var r=no;t&&lo(e,t)?io(r,n):(e.flags=-4097&e.flags|2,ao=!1,no=e)}}else{if(so(e))throw Error(o(418));e.flags=-4097&e.flags|2,ao=!1,no=e}}}function uo(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;no=e}function po(e){if(e!==no)return!1;if(!ao)return uo(e),ao=!0,!1;var t;if((t=3!==e.tag)&&!(t=5!==e.tag)&&(t="head"!==(t=e.type)&&"body"!==t&&!na(e.type,e.memoizedProps)),t&&(t=ro)){if(so(e))throw fo(),Error(o(418));for(;t;)io(e,t),t=ca(t.nextSibling)}if(uo(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(o(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){ro=ca(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}ro=null}}else ro=no?ca(e.stateNode.nextSibling):null;return!0}function fo(){for(var e=ro;e;)e=ca(e.nextSibling)}function ho(){ro=no=null,ao=!1}function go(e){null===oo?oo=[e]:oo.push(e)}var mo=w.ReactCurrentBatchConfig;function yo(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(o(309));var r=n.stateNode}if(!r)throw Error(o(147,e));var a=r,i=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===i?t.ref:(t=function(e){var t=a.refs;null===e?delete t[i]:t[i]=e},t._stringRef=i,t)}if("string"!=typeof e)throw Error(o(284));if(!n._owner)throw Error(o(290,e))}return e}function bo(e,t){throw e=Object.prototype.toString.call(t),Error(o(31,"[object Object]"===e?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function vo(e){return(0,e._init)(e._payload)}function wo(e){function t(t,n){if(e){var r=t.deletions;null===r?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function a(e,t){return(e=Pc(e,t)).index=0,e.sibling=null,e}function i(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags|=2,n):r:(t.flags|=2,n):(t.flags|=1048576,n)}function l(t){return e&&null===t.alternate&&(t.flags|=2),t}function s(e,t,n,r){return null===t||6!==t.tag?((t=Ic(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function c(e,t,n,r){var o=n.type;return o===S?d(e,t,n.props.children,r,n.key):null!==t&&(t.elementType===o||"object"==typeof o&&null!==o&&o.$$typeof===P&&vo(o)===t.type)?((r=a(t,n.props)).ref=yo(e,t,n),r.return=e,r):((r=Rc(n.type,n.key,n.props,null,e.mode,r)).ref=yo(e,t,n),r.return=e,r)}function u(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Fc(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function d(e,t,n,r,o){return null===t||7!==t.tag?((t=Oc(n,e.mode,r,o)).return=e,t):((t=a(t,n)).return=e,t)}function p(e,t,n){if("string"==typeof t&&""!==t||"number"==typeof t)return(t=Ic(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case x:return(n=Rc(t.type,t.key,t.props,null,e.mode,n)).ref=yo(e,null,t),n.return=e,n;case k:return(t=Fc(t,e.mode,n)).return=e,t;case P:return p(e,(0,t._init)(t._payload),n)}if(te(t)||D(t))return(t=Oc(t,e.mode,n,null)).return=e,t;bo(e,t)}return null}function f(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof n&&""!==n||"number"==typeof n)return null!==a?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case x:return n.key===a?c(e,t,n,r):null;case k:return n.key===a?u(e,t,n,r):null;case P:return f(e,t,(a=n._init)(n._payload),r)}if(te(n)||D(n))return null!==a?null:d(e,t,n,r,null);bo(e,n)}return null}function h(e,t,n,r,a){if("string"==typeof r&&""!==r||"number"==typeof r)return s(t,e=e.get(n)||null,""+r,a);if("object"==typeof r&&null!==r){switch(r.$$typeof){case x:return c(t,e=e.get(null===r.key?n:r.key)||null,r,a);case k:return u(t,e=e.get(null===r.key?n:r.key)||null,r,a);case P:return h(e,t,n,(0,r._init)(r._payload),a)}if(te(r)||D(r))return d(t,e=e.get(n)||null,r,a,null);bo(t,r)}return null}function g(a,o,l,s){for(var c=null,u=null,d=o,g=o=0,m=null;null!==d&&g<l.length;g++){d.index>g?(m=d,d=null):m=d.sibling;var y=f(a,d,l[g],s);if(null===y){null===d&&(d=m);break}e&&d&&null===y.alternate&&t(a,d),o=i(y,o,g),null===u?c=y:u.sibling=y,u=y,d=m}if(g===l.length)return n(a,d),ao&&Xa(a,g),c;if(null===d){for(;g<l.length;g++)null!==(d=p(a,l[g],s))&&(o=i(d,o,g),null===u?c=d:u.sibling=d,u=d);return ao&&Xa(a,g),c}for(d=r(a,d);g<l.length;g++)null!==(m=h(d,a,g,l[g],s))&&(e&&null!==m.alternate&&d.delete(null===m.key?g:m.key),o=i(m,o,g),null===u?c=m:u.sibling=m,u=m);return e&&d.forEach(function(e){return t(a,e)}),ao&&Xa(a,g),c}function m(a,l,s,c){var u=D(s);if("function"!=typeof u)throw Error(o(150));if(null==(s=u.call(s)))throw Error(o(151));for(var d=u=null,g=l,m=l=0,y=null,b=s.next();null!==g&&!b.done;m++,b=s.next()){g.index>m?(y=g,g=null):y=g.sibling;var v=f(a,g,b.value,c);if(null===v){null===g&&(g=y);break}e&&g&&null===v.alternate&&t(a,g),l=i(v,l,m),null===d?u=v:d.sibling=v,d=v,g=y}if(b.done)return n(a,g),ao&&Xa(a,m),u;if(null===g){for(;!b.done;m++,b=s.next())null!==(b=p(a,b.value,c))&&(l=i(b,l,m),null===d?u=b:d.sibling=b,d=b);return ao&&Xa(a,m),u}for(g=r(a,g);!b.done;m++,b=s.next())null!==(b=h(g,a,m,b.value,c))&&(e&&null!==b.alternate&&g.delete(null===b.key?m:b.key),l=i(b,l,m),null===d?u=b:d.sibling=b,d=b);return e&&g.forEach(function(e){return t(a,e)}),ao&&Xa(a,m),u}return function e(r,o,i,s){if("object"==typeof i&&null!==i&&i.type===S&&null===i.key&&(i=i.props.children),"object"==typeof i&&null!==i){switch(i.$$typeof){case x:e:{for(var c=i.key,u=o;null!==u;){if(u.key===c){if((c=i.type)===S){if(7===u.tag){n(r,u.sibling),(o=a(u,i.props.children)).return=r,r=o;break e}}else if(u.elementType===c||"object"==typeof c&&null!==c&&c.$$typeof===P&&vo(c)===u.type){n(r,u.sibling),(o=a(u,i.props)).ref=yo(r,u,i),o.return=r,r=o;break e}n(r,u);break}t(r,u),u=u.sibling}i.type===S?((o=Oc(i.props.children,r.mode,s,i.key)).return=r,r=o):((s=Rc(i.type,i.key,i.props,null,r.mode,s)).ref=yo(r,o,i),s.return=r,r=s)}return l(r);case k:e:{for(u=i.key;null!==o;){if(o.key===u){if(4===o.tag&&o.stateNode.containerInfo===i.containerInfo&&o.stateNode.implementation===i.implementation){n(r,o.sibling),(o=a(o,i.children||[])).return=r,r=o;break e}n(r,o);break}t(r,o),o=o.sibling}(o=Fc(i,r.mode,s)).return=r,r=o}return l(r);case P:return e(r,o,(u=i._init)(i._payload),s)}if(te(i))return g(r,o,i,s);if(D(i))return m(r,o,i,s);bo(r,i)}return"string"==typeof i&&""!==i||"number"==typeof i?(i=""+i,null!==o&&6===o.tag?(n(r,o.sibling),(o=a(o,i)).return=r,r=o):(n(r,o),(o=Ic(i,r.mode,s)).return=r,r=o),l(r)):n(r,o)}}var xo=wo(!0),ko=wo(!1),So=Ea(null),Eo=null,jo=null,_o=null;function Co(){_o=jo=Eo=null}function Lo(e){var t=So.current;ja(So),e._currentValue=t}function Ao(e,t,n){for(;null!==e;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,null!==r&&(r.childLanes|=t)):null!==r&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function To(e,t){Eo=e,_o=jo=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!==(e.lanes&t)&&(vl=!0),e.firstContext=null)}function No(e){var t=e._currentValue;if(_o!==e)if(e={context:e,memoizedValue:t,next:null},null===jo){if(null===Eo)throw Error(o(308));jo=e,Eo.dependencies={lanes:0,firstContext:e}}else jo=jo.next=e;return t}var Po=null;function Ro(e){null===Po?Po=[e]:Po.push(e)}function Oo(e,t,n,r){var a=t.interleaved;return null===a?(n.next=n,Ro(t)):(n.next=a.next,a.next=n),t.interleaved=n,Do(e,r)}function Do(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}var Io=!1;function Fo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Mo(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function zo(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Bo(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,2&Cs){var a=r.pending;return null===a?t.next=t:(t.next=a.next,a.next=t),r.pending=t,Do(e,n)}return null===(a=r.interleaved)?(t.next=t,Ro(r)):(t.next=a.next,a.next=t),r.interleaved=t,Do(e,n)}function $o(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,4194240&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,bt(e,n)}}function Uo(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===o?a=o=i:o=o.next=i,n=n.next}while(null!==n);null===o?a=o=t:o=o.next=t}else a=o=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:o,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function qo(e,t,n,r){var a=e.updateQueue;Io=!1;var o=a.firstBaseUpdate,i=a.lastBaseUpdate,l=a.shared.pending;if(null!==l){a.shared.pending=null;var s=l,c=s.next;s.next=null,null===i?o=c:i.next=c,i=s;var u=e.alternate;null!==u&&((l=(u=u.updateQueue).lastBaseUpdate)!==i&&(null===l?u.firstBaseUpdate=c:l.next=c,u.lastBaseUpdate=s))}if(null!==o){var d=a.baseState;for(i=0,u=c=s=null,l=o;;){var p=l.lane,f=l.eventTime;if((r&p)===p){null!==u&&(u=u.next={eventTime:f,lane:0,tag:l.tag,payload:l.payload,callback:l.callback,next:null});e:{var h=e,g=l;switch(p=t,f=n,g.tag){case 1:if("function"==typeof(h=g.payload)){d=h.call(f,d,p);break e}d=h;break e;case 3:h.flags=-65537&h.flags|128;case 0:if(null==(p="function"==typeof(h=g.payload)?h.call(f,d,p):h))break e;d=F({},d,p);break e;case 2:Io=!0}}null!==l.callback&&0!==l.lane&&(e.flags|=64,null===(p=a.effects)?a.effects=[l]:p.push(l))}else f={eventTime:f,lane:p,tag:l.tag,payload:l.payload,callback:l.callback,next:null},null===u?(c=u=f,s=d):u=u.next=f,i|=p;if(null===(l=l.next)){if(null===(l=a.shared.pending))break;l=(p=l).next,p.next=null,a.lastBaseUpdate=p,a.shared.pending=null}}if(null===u&&(s=d),a.baseState=s,a.firstBaseUpdate=c,a.lastBaseUpdate=u,null!==(t=a.shared.interleaved)){a=t;do{i|=a.lane,a=a.next}while(a!==t)}else null===o&&(a.shared.lanes=0);Ds|=i,e.lanes=i,e.memoizedState=d}}function Ho(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],a=r.callback;if(null!==a){if(r.callback=null,r=n,"function"!=typeof a)throw Error(o(191,a));a.call(r)}}}var Go={},Wo=Ea(Go),Vo=Ea(Go),Qo=Ea(Go);function Zo(e){if(e===Go)throw Error(o(174));return e}function Ko(e,t){switch(_a(Qo,t),_a(Vo,e),_a(Wo,Go),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:se(null,"");break;default:t=se(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}ja(Wo),_a(Wo,t)}function Yo(){ja(Wo),ja(Vo),ja(Qo)}function Xo(e){Zo(Qo.current);var t=Zo(Wo.current),n=se(t,e.type);t!==n&&(_a(Vo,e),_a(Wo,n))}function Jo(e){Vo.current===e&&(ja(Wo),ja(Vo))}var ei=Ea(0);function ti(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(128&t.flags)return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var ni=[];function ri(){for(var e=0;e<ni.length;e++)ni[e]._workInProgressVersionPrimary=null;ni.length=0}var ai=w.ReactCurrentDispatcher,oi=w.ReactCurrentBatchConfig,ii=0,li=null,si=null,ci=null,ui=!1,di=!1,pi=0,fi=0;function hi(){throw Error(o(321))}function gi(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!lr(e[n],t[n]))return!1;return!0}function mi(e,t,n,r,a,i){if(ii=i,li=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,ai.current=null===e||null===e.memoizedState?Ji:el,e=n(r,a),di){i=0;do{if(di=!1,pi=0,25<=i)throw Error(o(301));i+=1,ci=si=null,t.updateQueue=null,ai.current=tl,e=n(r,a)}while(di)}if(ai.current=Xi,t=null!==si&&null!==si.next,ii=0,ci=si=li=null,ui=!1,t)throw Error(o(300));return e}function yi(){var e=0!==pi;return pi=0,e}function bi(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===ci?li.memoizedState=ci=e:ci=ci.next=e,ci}function vi(){if(null===si){var e=li.alternate;e=null!==e?e.memoizedState:null}else e=si.next;var t=null===ci?li.memoizedState:ci.next;if(null!==t)ci=t,si=e;else{if(null===e)throw Error(o(310));e={memoizedState:(si=e).memoizedState,baseState:si.baseState,baseQueue:si.baseQueue,queue:si.queue,next:null},null===ci?li.memoizedState=ci=e:ci=ci.next=e}return ci}function wi(e,t){return"function"==typeof t?t(e):t}function xi(e){var t=vi(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var r=si,a=r.baseQueue,i=n.pending;if(null!==i){if(null!==a){var l=a.next;a.next=i.next,i.next=l}r.baseQueue=a=i,n.pending=null}if(null!==a){i=a.next,r=r.baseState;var s=l=null,c=null,u=i;do{var d=u.lane;if((ii&d)===d)null!==c&&(c=c.next={lane:0,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null}),r=u.hasEagerState?u.eagerState:e(r,u.action);else{var p={lane:d,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null};null===c?(s=c=p,l=r):c=c.next=p,li.lanes|=d,Ds|=d}u=u.next}while(null!==u&&u!==i);null===c?l=r:c.next=s,lr(r,t.memoizedState)||(vl=!0),t.memoizedState=r,t.baseState=l,t.baseQueue=c,n.lastRenderedState=r}if(null!==(e=n.interleaved)){a=e;do{i=a.lane,li.lanes|=i,Ds|=i,a=a.next}while(a!==e)}else null===a&&(n.lanes=0);return[t.memoizedState,n.dispatch]}function ki(e){var t=vi(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,i=t.memoizedState;if(null!==a){n.pending=null;var l=a=a.next;do{i=e(i,l.action),l=l.next}while(l!==a);lr(i,t.memoizedState)||(vl=!0),t.memoizedState=i,null===t.baseQueue&&(t.baseState=i),n.lastRenderedState=i}return[i,r]}function Si(){}function Ei(e,t){var n=li,r=vi(),a=t(),i=!lr(r.memoizedState,a);if(i&&(r.memoizedState=a,vl=!0),r=r.queue,Ii(Ci.bind(null,n,r,e),[e]),r.getSnapshot!==t||i||null!==ci&&1&ci.memoizedState.tag){if(n.flags|=2048,Ni(9,_i.bind(null,n,r,a,t),void 0,null),null===Ls)throw Error(o(349));30&ii||ji(n,t,a)}return a}function ji(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},null===(t=li.updateQueue)?(t={lastEffect:null,stores:null},li.updateQueue=t,t.stores=[e]):null===(n=t.stores)?t.stores=[e]:n.push(e)}function _i(e,t,n,r){t.value=n,t.getSnapshot=r,Li(t)&&Ai(e)}function Ci(e,t,n){return n(function(){Li(t)&&Ai(e)})}function Li(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!lr(e,n)}catch(r){return!0}}function Ai(e){var t=Do(e,1);null!==t&&tc(t,e,1,-1)}function Ti(e){var t=bi();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:wi,lastRenderedState:e},t.queue=e,e=e.dispatch=Qi.bind(null,li,e),[t.memoizedState,e]}function Ni(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=li.updateQueue)?(t={lastEffect:null,stores:null},li.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function Pi(){return vi().memoizedState}function Ri(e,t,n,r){var a=bi();li.flags|=e,a.memoizedState=Ni(1|t,n,void 0,void 0===r?null:r)}function Oi(e,t,n,r){var a=vi();r=void 0===r?null:r;var o=void 0;if(null!==si){var i=si.memoizedState;if(o=i.destroy,null!==r&&gi(r,i.deps))return void(a.memoizedState=Ni(t,n,o,r))}li.flags|=e,a.memoizedState=Ni(1|t,n,o,r)}function Di(e,t){return Ri(8390656,8,e,t)}function Ii(e,t){return Oi(2048,8,e,t)}function Fi(e,t){return Oi(4,2,e,t)}function Mi(e,t){return Oi(4,4,e,t)}function zi(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Bi(e,t,n){return n=null!=n?n.concat([e]):null,Oi(4,4,zi.bind(null,t,e),n)}function $i(){}function Ui(e,t){var n=vi();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&gi(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function qi(e,t){var n=vi();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&gi(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Hi(e,t,n){return 21&ii?(lr(n,t)||(n=gt(),li.lanes|=n,Ds|=n,e.baseState=!0),t):(e.baseState&&(e.baseState=!1,vl=!0),e.memoizedState=n)}function Gi(e,t){var n=vt;vt=0!==n&&4>n?n:4,e(!0);var r=oi.transition;oi.transition={};try{e(!1),t()}finally{vt=n,oi.transition=r}}function Wi(){return vi().memoizedState}function Vi(e,t,n){var r=ec(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Zi(e))Ki(t,n);else if(null!==(n=Oo(e,t,n,r))){tc(n,e,r,Js()),Yi(n,t,r)}}function Qi(e,t,n){var r=ec(e),a={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Zi(e))Ki(t,a);else{var o=e.alternate;if(0===e.lanes&&(null===o||0===o.lanes)&&null!==(o=t.lastRenderedReducer))try{var i=t.lastRenderedState,l=o(i,n);if(a.hasEagerState=!0,a.eagerState=l,lr(l,i)){var s=t.interleaved;return null===s?(a.next=a,Ro(t)):(a.next=s.next,s.next=a),void(t.interleaved=a)}}catch(c){}null!==(n=Oo(e,t,a,r))&&(tc(n,e,r,a=Js()),Yi(n,t,r))}}function Zi(e){var t=e.alternate;return e===li||null!==t&&t===li}function Ki(e,t){di=ui=!0;var n=e.pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Yi(e,t,n){if(4194240&n){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,bt(e,n)}}var Xi={readContext:No,useCallback:hi,useContext:hi,useEffect:hi,useImperativeHandle:hi,useInsertionEffect:hi,useLayoutEffect:hi,useMemo:hi,useReducer:hi,useRef:hi,useState:hi,useDebugValue:hi,useDeferredValue:hi,useTransition:hi,useMutableSource:hi,useSyncExternalStore:hi,useId:hi,unstable_isNewReconciler:!1},Ji={readContext:No,useCallback:function(e,t){return bi().memoizedState=[e,void 0===t?null:t],e},useContext:No,useEffect:Di,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,Ri(4194308,4,zi.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Ri(4194308,4,e,t)},useInsertionEffect:function(e,t){return Ri(4,2,e,t)},useMemo:function(e,t){var n=bi();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=bi();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Vi.bind(null,li,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},bi().memoizedState=e},useState:Ti,useDebugValue:$i,useDeferredValue:function(e){return bi().memoizedState=e},useTransition:function(){var e=Ti(!1),t=e[0];return e=Gi.bind(null,e[1]),bi().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=li,a=bi();if(ao){if(void 0===n)throw Error(o(407));n=n()}else{if(n=t(),null===Ls)throw Error(o(349));30&ii||ji(r,t,n)}a.memoizedState=n;var i={value:n,getSnapshot:t};return a.queue=i,Di(Ci.bind(null,r,i,e),[e]),r.flags|=2048,Ni(9,_i.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=bi(),t=Ls.identifierPrefix;if(ao){var n=Ya;t=":"+t+"R"+(n=(Ka&~(1<<32-it(Ka)-1)).toString(32)+n),0<(n=pi++)&&(t+="H"+n.toString(32)),t+=":"}else t=":"+t+"r"+(n=fi++).toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},el={readContext:No,useCallback:Ui,useContext:No,useEffect:Ii,useImperativeHandle:Bi,useInsertionEffect:Fi,useLayoutEffect:Mi,useMemo:qi,useReducer:xi,useRef:Pi,useState:function(){return xi(wi)},useDebugValue:$i,useDeferredValue:function(e){return Hi(vi(),si.memoizedState,e)},useTransition:function(){return[xi(wi)[0],vi().memoizedState]},useMutableSource:Si,useSyncExternalStore:Ei,useId:Wi,unstable_isNewReconciler:!1},tl={readContext:No,useCallback:Ui,useContext:No,useEffect:Ii,useImperativeHandle:Bi,useInsertionEffect:Fi,useLayoutEffect:Mi,useMemo:qi,useReducer:ki,useRef:Pi,useState:function(){return ki(wi)},useDebugValue:$i,useDeferredValue:function(e){var t=vi();return null===si?t.memoizedState=e:Hi(t,si.memoizedState,e)},useTransition:function(){return[ki(wi)[0],vi().memoizedState]},useMutableSource:Si,useSyncExternalStore:Ei,useId:Wi,unstable_isNewReconciler:!1};function nl(e,t){if(e&&e.defaultProps){for(var n in t=F({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}function rl(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:F({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var al={isMounted:function(e){return!!(e=e._reactInternals)&&Ue(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=Js(),a=ec(e),o=zo(r,a);o.payload=t,null!=n&&(o.callback=n),null!==(t=Bo(e,o,a))&&(tc(t,e,a,r),$o(t,e,a))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=Js(),a=ec(e),o=zo(r,a);o.tag=1,o.payload=t,null!=n&&(o.callback=n),null!==(t=Bo(e,o,a))&&(tc(t,e,a,r),$o(t,e,a))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=Js(),r=ec(e),a=zo(n,r);a.tag=2,null!=t&&(a.callback=t),null!==(t=Bo(e,a,r))&&(tc(t,e,r,n),$o(t,e,r))}};function ol(e,t,n,r,a,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,i):!t.prototype||!t.prototype.isPureReactComponent||(!sr(n,r)||!sr(a,o))}function il(e,t,n){var r=!1,a=Ca,o=t.contextType;return"object"==typeof o&&null!==o?o=No(o):(a=Pa(t)?Ta:La.current,o=(r=null!=(r=t.contextTypes))?Na(e,a):Ca),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=al,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=o),t}function ll(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&al.enqueueReplaceState(t,t.state,null)}function sl(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs={},Fo(e);var o=t.contextType;"object"==typeof o&&null!==o?a.context=No(o):(o=Pa(t)?Ta:La.current,a.context=Na(e,o)),a.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&(rl(e,t,o,n),a.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(t=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),t!==a.state&&al.enqueueReplaceState(a,a.state,null),qo(e,n,a,r),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.flags|=4194308)}function cl(e,t){try{var n="",r=t;do{n+=$(r),r=r.return}while(r);var a=n}catch(o){a="\nError generating stack: "+o.message+"\n"+o.stack}return{value:e,source:t,stack:a,digest:null}}function ul(e,t,n){return{value:e,source:null,stack:null!=n?n:null,digest:null!=t?t:null}}function dl(e,t){try{console.error(t.value)}catch(n){setTimeout(function(){throw n})}}var pl="function"==typeof WeakMap?WeakMap:Map;function fl(e,t,n){(n=zo(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){qs||(qs=!0,Hs=r),dl(0,t)},n}function hl(e,t,n){(n=zo(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var a=t.value;n.payload=function(){return r(a)},n.callback=function(){dl(0,t)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){dl(0,t),"function"!=typeof r&&(null===Gs?Gs=new Set([this]):Gs.add(this));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}function gl(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new pl;var a=new Set;r.set(t,a)}else void 0===(a=r.get(t))&&(a=new Set,r.set(t,a));a.has(n)||(a.add(n),e=Ec.bind(null,e,t,n),t.then(e,e))}function ml(e){do{var t;if((t=13===e.tag)&&(t=null===(t=e.memoizedState)||null!==t.dehydrated),t)return e;e=e.return}while(null!==e);return null}function yl(e,t,n,r,a){return 1&e.mode?(e.flags|=65536,e.lanes=a,e):(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,1===n.tag&&(null===n.alternate?n.tag=17:((t=zo(-1,1)).tag=2,Bo(n,t,1))),n.lanes|=1),e)}var bl=w.ReactCurrentOwner,vl=!1;function wl(e,t,n,r){t.child=null===e?ko(t,null,n,r):xo(t,e.child,n,r)}function xl(e,t,n,r,a){n=n.render;var o=t.ref;return To(t,a),r=mi(e,t,n,r,o,a),n=yi(),null===e||vl?(ao&&n&&eo(t),t.flags|=1,wl(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~a,ql(e,t,a))}function kl(e,t,n,r,a){if(null===e){var o=n.type;return"function"!=typeof o||Nc(o)||void 0!==o.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Rc(n.type,null,r,t,t.mode,a)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=o,Sl(e,t,o,r,a))}if(o=e.child,0===(e.lanes&a)){var i=o.memoizedProps;if((n=null!==(n=n.compare)?n:sr)(i,r)&&e.ref===t.ref)return ql(e,t,a)}return t.flags|=1,(e=Pc(o,r)).ref=t.ref,e.return=t,t.child=e}function Sl(e,t,n,r,a){if(null!==e){var o=e.memoizedProps;if(sr(o,r)&&e.ref===t.ref){if(vl=!1,t.pendingProps=r=o,0===(e.lanes&a))return t.lanes=e.lanes,ql(e,t,a);131072&e.flags&&(vl=!0)}}return _l(e,t,n,r,a)}function El(e,t,n){var r=t.pendingProps,a=r.children,o=null!==e?e.memoizedState:null;if("hidden"===r.mode)if(1&t.mode){if(!(1073741824&n))return e=null!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,_a(Ps,Ns),Ns|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=null!==o?o.baseLanes:n,_a(Ps,Ns),Ns|=r}else t.memoizedState={baseLanes:0,cachePool:null,transitions:null},_a(Ps,Ns),Ns|=n;else null!==o?(r=o.baseLanes|n,t.memoizedState=null):r=n,_a(Ps,Ns),Ns|=r;return wl(e,t,a,n),t.child}function jl(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function _l(e,t,n,r,a){var o=Pa(n)?Ta:La.current;return o=Na(t,o),To(t,a),n=mi(e,t,n,r,o,a),r=yi(),null===e||vl?(ao&&r&&eo(t),t.flags|=1,wl(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~a,ql(e,t,a))}function Cl(e,t,n,r,a){if(Pa(n)){var o=!0;Ia(t)}else o=!1;if(To(t,a),null===t.stateNode)Ul(e,t),il(t,n,r),sl(t,n,r,a),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var s=i.context,c=n.contextType;"object"==typeof c&&null!==c?c=No(c):c=Na(t,c=Pa(n)?Ta:La.current);var u=n.getDerivedStateFromProps,d="function"==typeof u||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==r||s!==c)&&ll(t,i,r,c),Io=!1;var p=t.memoizedState;i.state=p,qo(t,r,i,a),s=t.memoizedState,l!==r||p!==s||Aa.current||Io?("function"==typeof u&&(rl(t,n,u,r),s=t.memoizedState),(l=Io||ol(t,n,l,r,p,s,c))?(d||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.flags|=4194308)):("function"==typeof i.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=c,r=l):("function"==typeof i.componentDidMount&&(t.flags|=4194308),r=!1)}else{i=t.stateNode,Mo(e,t),l=t.memoizedProps,c=t.type===t.elementType?l:nl(t.type,l),i.props=c,d=t.pendingProps,p=i.context,"object"==typeof(s=n.contextType)&&null!==s?s=No(s):s=Na(t,s=Pa(n)?Ta:La.current);var f=n.getDerivedStateFromProps;(u="function"==typeof f||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==d||p!==s)&&ll(t,i,r,s),Io=!1,p=t.memoizedState,i.state=p,qo(t,r,i,a);var h=t.memoizedState;l!==d||p!==h||Aa.current||Io?("function"==typeof f&&(rl(t,n,f,r),h=t.memoizedState),(c=Io||ol(t,n,c,r,p,h,s)||!1)?(u||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,h,s),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,h,s)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=h),i.props=r,i.state=h,i.context=s,r=c):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),r=!1)}return Ll(e,t,n,r,o,a)}function Ll(e,t,n,r,a,o){jl(e,t);var i=!!(128&t.flags);if(!r&&!i)return a&&Fa(t,n,!1),ql(e,t,o);r=t.stateNode,bl.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=xo(t,e.child,null,o),t.child=xo(t,null,l,o)):wl(e,t,l,o),t.memoizedState=r.state,a&&Fa(t,n,!0),t.child}function Al(e){var t=e.stateNode;t.pendingContext?Oa(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Oa(0,t.context,!1),Ko(e,t.containerInfo)}function Tl(e,t,n,r,a){return ho(),go(a),t.flags|=256,wl(e,t,n,r),t.child}var Nl,Pl,Rl,Ol={dehydrated:null,treeContext:null,retryLane:0};function Dl(e){return{baseLanes:e,cachePool:null,transitions:null}}function Il(e,t,n){var r,a=t.pendingProps,i=ei.current,l=!1,s=!!(128&t.flags);if((r=s)||(r=(null===e||null!==e.memoizedState)&&!!(2&i)),r?(l=!0,t.flags&=-129):null!==e&&null===e.memoizedState||(i|=1),_a(ei,1&i),null===e)return co(t),null!==(e=t.memoizedState)&&null!==(e=e.dehydrated)?(1&t.mode?"$!"===e.data?t.lanes=8:t.lanes=1073741824:t.lanes=1,null):(s=a.children,e=a.fallback,l?(a=t.mode,l=t.child,s={mode:"hidden",children:s},1&a||null===l?l=Dc(s,a,0,null):(l.childLanes=0,l.pendingProps=s),e=Oc(e,a,n,null),l.return=t,e.return=t,l.sibling=e,t.child=l,t.child.memoizedState=Dl(n),t.memoizedState=Ol,e):Fl(t,s));if(null!==(i=e.memoizedState)&&null!==(r=i.dehydrated))return function(e,t,n,r,a,i,l){if(n)return 256&t.flags?(t.flags&=-257,Ml(e,t,l,r=ul(Error(o(422))))):null!==t.memoizedState?(t.child=e.child,t.flags|=128,null):(i=r.fallback,a=t.mode,r=Dc({mode:"visible",children:r.children},a,0,null),(i=Oc(i,a,l,null)).flags|=2,r.return=t,i.return=t,r.sibling=i,t.child=r,1&t.mode&&xo(t,e.child,null,l),t.child.memoizedState=Dl(l),t.memoizedState=Ol,i);if(!(1&t.mode))return Ml(e,t,l,null);if("$!"===a.data){if(r=a.nextSibling&&a.nextSibling.dataset)var s=r.dgst;return r=s,Ml(e,t,l,r=ul(i=Error(o(419)),r,void 0))}if(s=0!==(l&e.childLanes),vl||s){if(null!==(r=Ls)){switch(l&-l){case 4:a=2;break;case 16:a=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:a=32;break;case 536870912:a=268435456;break;default:a=0}0!==(a=0!==(a&(r.suspendedLanes|l))?0:a)&&a!==i.retryLane&&(i.retryLane=a,Do(e,a),tc(r,e,a,-1))}return hc(),Ml(e,t,l,r=ul(Error(o(421))))}return"$?"===a.data?(t.flags|=128,t.child=e.child,t=_c.bind(null,e),a._reactRetry=t,null):(e=i.treeContext,ro=ca(a.nextSibling),no=t,ao=!0,oo=null,null!==e&&(Va[Qa++]=Ka,Va[Qa++]=Ya,Va[Qa++]=Za,Ka=e.id,Ya=e.overflow,Za=t),t=Fl(t,r.children),t.flags|=4096,t)}(e,t,s,a,r,i,n);if(l){l=a.fallback,s=t.mode,r=(i=e.child).sibling;var c={mode:"hidden",children:a.children};return 1&s||t.child===i?(a=Pc(i,c)).subtreeFlags=14680064&i.subtreeFlags:((a=t.child).childLanes=0,a.pendingProps=c,t.deletions=null),null!==r?l=Pc(r,l):(l=Oc(l,s,n,null)).flags|=2,l.return=t,a.return=t,a.sibling=l,t.child=a,a=l,l=t.child,s=null===(s=e.child.memoizedState)?Dl(n):{baseLanes:s.baseLanes|n,cachePool:null,transitions:s.transitions},l.memoizedState=s,l.childLanes=e.childLanes&~n,t.memoizedState=Ol,a}return e=(l=e.child).sibling,a=Pc(l,{mode:"visible",children:a.children}),!(1&t.mode)&&(a.lanes=n),a.return=t,a.sibling=null,null!==e&&(null===(n=t.deletions)?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=a,t.memoizedState=null,a}function Fl(e,t){return(t=Dc({mode:"visible",children:t},e.mode,0,null)).return=e,e.child=t}function Ml(e,t,n,r){return null!==r&&go(r),xo(t,e.child,null,n),(e=Fl(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function zl(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),Ao(e.return,t,n)}function Bl(e,t,n,r,a){var o=e.memoizedState;null===o?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=n,o.tailMode=a)}function $l(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;if(wl(e,t,r.children,n),2&(r=ei.current))r=1&r|2,t.flags|=128;else{if(null!==e&&128&e.flags)e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&zl(e,n,t);else if(19===e.tag)zl(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(_a(ei,r),1&t.mode)switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===ti(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),Bl(t,!1,a,n,o);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===ti(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}Bl(t,!0,n,null,o);break;case"together":Bl(t,!1,null,null,void 0);break;default:t.memoizedState=null}else t.memoizedState=null;return t.child}function Ul(e,t){!(1&t.mode)&&null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2)}function ql(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Ds|=t.lanes,0===(n&t.childLanes))return null;if(null!==e&&t.child!==e.child)throw Error(o(153));if(null!==t.child){for(n=Pc(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Pc(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Hl(e,t){if(!ao)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Gl(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var a=e.child;null!==a;)n|=a.lanes|a.childLanes,r|=14680064&a.subtreeFlags,r|=14680064&a.flags,a.return=e,a=a.sibling;else for(a=e.child;null!==a;)n|=a.lanes|a.childLanes,r|=a.subtreeFlags,r|=a.flags,a.return=e,a=a.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Wl(e,t,n){var r=t.pendingProps;switch(to(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Gl(t),null;case 1:case 17:return Pa(t.type)&&Ra(),Gl(t),null;case 3:return r=t.stateNode,Yo(),ja(Aa),ja(La),ri(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(po(t)?t.flags|=4:null===e||e.memoizedState.isDehydrated&&!(256&t.flags)||(t.flags|=1024,null!==oo&&(oc(oo),oo=null))),Gl(t),null;case 5:Jo(t);var a=Zo(Qo.current);if(n=t.type,null!==e&&null!=t.stateNode)Pl(e,t,n,r),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(null===t.stateNode)throw Error(o(166));return Gl(t),null}if(e=Zo(Wo.current),po(t)){r=t.stateNode,n=t.type;var i=t.memoizedProps;switch(r[pa]=t,r[fa]=i,e=!!(1&t.mode),n){case"dialog":zr("cancel",r),zr("close",r);break;case"iframe":case"object":case"embed":zr("load",r);break;case"video":case"audio":for(a=0;a<Dr.length;a++)zr(Dr[a],r);break;case"source":zr("error",r);break;case"img":case"image":case"link":zr("error",r),zr("load",r);break;case"details":zr("toggle",r);break;case"input":K(r,i),zr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!i.multiple},zr("invalid",r);break;case"textarea":ae(r,i),zr("invalid",r)}for(var s in be(n,i),a=null,i)if(i.hasOwnProperty(s)){var c=i[s];"children"===s?"string"==typeof c?r.textContent!==c&&(!0!==i.suppressHydrationWarning&&Xr(r.textContent,c,e),a=["children",c]):"number"==typeof c&&r.textContent!==""+c&&(!0!==i.suppressHydrationWarning&&Xr(r.textContent,c,e),a=["children",""+c]):l.hasOwnProperty(s)&&null!=c&&"onScroll"===s&&zr("scroll",r)}switch(n){case"input":W(r),J(r,i,!0);break;case"textarea":W(r),ie(r);break;case"select":case"option":break;default:"function"==typeof i.onClick&&(r.onclick=Jr)}r=a,t.updateQueue=r,null!==r&&(t.flags|=4)}else{s=9===a.nodeType?a:a.ownerDocument,"http://www.w3.org/1999/xhtml"===e&&(e=le(n)),"http://www.w3.org/1999/xhtml"===e?"script"===n?((e=s.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=s.createElement(n,{is:r.is}):(e=s.createElement(n),"select"===n&&(s=e,r.multiple?s.multiple=!0:r.size&&(s.size=r.size))):e=s.createElementNS(e,n),e[pa]=t,e[fa]=r,Nl(e,t),t.stateNode=e;e:{switch(s=ve(n,r),n){case"dialog":zr("cancel",e),zr("close",e),a=r;break;case"iframe":case"object":case"embed":zr("load",e),a=r;break;case"video":case"audio":for(a=0;a<Dr.length;a++)zr(Dr[a],e);a=r;break;case"source":zr("error",e),a=r;break;case"img":case"image":case"link":zr("error",e),zr("load",e),a=r;break;case"details":zr("toggle",e),a=r;break;case"input":K(e,r),a=Z(e,r),zr("invalid",e);break;case"option":default:a=r;break;case"select":e._wrapperState={wasMultiple:!!r.multiple},a=F({},r,{value:void 0}),zr("invalid",e);break;case"textarea":ae(e,r),a=re(e,r),zr("invalid",e)}for(i in be(n,a),c=a)if(c.hasOwnProperty(i)){var u=c[i];"style"===i?me(e,u):"dangerouslySetInnerHTML"===i?null!=(u=u?u.__html:void 0)&&de(e,u):"children"===i?"string"==typeof u?("textarea"!==n||""!==u)&&pe(e,u):"number"==typeof u&&pe(e,""+u):"suppressContentEditableWarning"!==i&&"suppressHydrationWarning"!==i&&"autoFocus"!==i&&(l.hasOwnProperty(i)?null!=u&&"onScroll"===i&&zr("scroll",e):null!=u&&v(e,i,u,s))}switch(n){case"input":W(e),J(e,r,!1);break;case"textarea":W(e),ie(e);break;case"option":null!=r.value&&e.setAttribute("value",""+H(r.value));break;case"select":e.multiple=!!r.multiple,null!=(i=r.value)?ne(e,!!r.multiple,i,!1):null!=r.defaultValue&&ne(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof a.onClick&&(e.onclick=Jr)}switch(n){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}}r&&(t.flags|=4)}null!==t.ref&&(t.flags|=512,t.flags|=2097152)}return Gl(t),null;case 6:if(e&&null!=t.stateNode)Rl(0,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(o(166));if(n=Zo(Qo.current),Zo(Wo.current),po(t)){if(r=t.stateNode,n=t.memoizedProps,r[pa]=t,(i=r.nodeValue!==n)&&null!==(e=no))switch(e.tag){case 3:Xr(r.nodeValue,n,!!(1&e.mode));break;case 5:!0!==e.memoizedProps.suppressHydrationWarning&&Xr(r.nodeValue,n,!!(1&e.mode))}i&&(t.flags|=4)}else(r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[pa]=t,t.stateNode=r}return Gl(t),null;case 13:if(ja(ei),r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(ao&&null!==ro&&1&t.mode&&!(128&t.flags))fo(),ho(),t.flags|=98560,i=!1;else if(i=po(t),null!==r&&null!==r.dehydrated){if(null===e){if(!i)throw Error(o(318));if(!(i=null!==(i=t.memoizedState)?i.dehydrated:null))throw Error(o(317));i[pa]=t}else ho(),!(128&t.flags)&&(t.memoizedState=null),t.flags|=4;Gl(t),i=!1}else null!==oo&&(oc(oo),oo=null),i=!0;if(!i)return 65536&t.flags?t:null}return 128&t.flags?(t.lanes=n,t):((r=null!==r)!==(null!==e&&null!==e.memoizedState)&&r&&(t.child.flags|=8192,1&t.mode&&(null===e||1&ei.current?0===Rs&&(Rs=3):hc())),null!==t.updateQueue&&(t.flags|=4),Gl(t),null);case 4:return Yo(),null===e&&Ur(t.stateNode.containerInfo),Gl(t),null;case 10:return Lo(t.type._context),Gl(t),null;case 19:if(ja(ei),null===(i=t.memoizedState))return Gl(t),null;if(r=!!(128&t.flags),null===(s=i.rendering))if(r)Hl(i,!1);else{if(0!==Rs||null!==e&&128&e.flags)for(e=t.child;null!==e;){if(null!==(s=ti(e))){for(t.flags|=128,Hl(i,!1),null!==(r=s.updateQueue)&&(t.updateQueue=r,t.flags|=4),t.subtreeFlags=0,r=n,n=t.child;null!==n;)e=r,(i=n).flags&=14680066,null===(s=i.alternate)?(i.childLanes=0,i.lanes=e,i.child=null,i.subtreeFlags=0,i.memoizedProps=null,i.memoizedState=null,i.updateQueue=null,i.dependencies=null,i.stateNode=null):(i.childLanes=s.childLanes,i.lanes=s.lanes,i.child=s.child,i.subtreeFlags=0,i.deletions=null,i.memoizedProps=s.memoizedProps,i.memoizedState=s.memoizedState,i.updateQueue=s.updateQueue,i.type=s.type,e=s.dependencies,i.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return _a(ei,1&ei.current|2),t.child}e=e.sibling}null!==i.tail&&Ye()>$s&&(t.flags|=128,r=!0,Hl(i,!1),t.lanes=4194304)}else{if(!r)if(null!==(e=ti(s))){if(t.flags|=128,r=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),Hl(i,!0),null===i.tail&&"hidden"===i.tailMode&&!s.alternate&&!ao)return Gl(t),null}else 2*Ye()-i.renderingStartTime>$s&&1073741824!==n&&(t.flags|=128,r=!0,Hl(i,!1),t.lanes=4194304);i.isBackwards?(s.sibling=t.child,t.child=s):(null!==(n=i.last)?n.sibling=s:t.child=s,i.last=s)}return null!==i.tail?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=Ye(),t.sibling=null,n=ei.current,_a(ei,r?1&n|2:1&n),t):(Gl(t),null);case 22:case 23:return uc(),r=null!==t.memoizedState,null!==e&&null!==e.memoizedState!==r&&(t.flags|=8192),r&&1&t.mode?!!(1073741824&Ns)&&(Gl(t),6&t.subtreeFlags&&(t.flags|=8192)):Gl(t),null;case 24:case 25:return null}throw Error(o(156,t.tag))}function Vl(e,t){switch(to(t),t.tag){case 1:return Pa(t.type)&&Ra(),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return Yo(),ja(Aa),ja(La),ri(),65536&(e=t.flags)&&!(128&e)?(t.flags=-65537&e|128,t):null;case 5:return Jo(t),null;case 13:if(ja(ei),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(o(340));ho()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return ja(ei),null;case 4:return Yo(),null;case 10:return Lo(t.type._context),null;case 22:case 23:return uc(),null;default:return null}}Nl=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Pl=function(e,t,n,r){var a=e.memoizedProps;if(a!==r){e=t.stateNode,Zo(Wo.current);var o,i=null;switch(n){case"input":a=Z(e,a),r=Z(e,r),i=[];break;case"select":a=F({},a,{value:void 0}),r=F({},r,{value:void 0}),i=[];break;case"textarea":a=re(e,a),r=re(e,r),i=[];break;default:"function"!=typeof a.onClick&&"function"==typeof r.onClick&&(e.onclick=Jr)}for(u in be(n,r),n=null,a)if(!r.hasOwnProperty(u)&&a.hasOwnProperty(u)&&null!=a[u])if("style"===u){var s=a[u];for(o in s)s.hasOwnProperty(o)&&(n||(n={}),n[o]="")}else"dangerouslySetInnerHTML"!==u&&"children"!==u&&"suppressContentEditableWarning"!==u&&"suppressHydrationWarning"!==u&&"autoFocus"!==u&&(l.hasOwnProperty(u)?i||(i=[]):(i=i||[]).push(u,null));for(u in r){var c=r[u];if(s=null!=a?a[u]:void 0,r.hasOwnProperty(u)&&c!==s&&(null!=c||null!=s))if("style"===u)if(s){for(o in s)!s.hasOwnProperty(o)||c&&c.hasOwnProperty(o)||(n||(n={}),n[o]="");for(o in c)c.hasOwnProperty(o)&&s[o]!==c[o]&&(n||(n={}),n[o]=c[o])}else n||(i||(i=[]),i.push(u,n)),n=c;else"dangerouslySetInnerHTML"===u?(c=c?c.__html:void 0,s=s?s.__html:void 0,null!=c&&s!==c&&(i=i||[]).push(u,c)):"children"===u?"string"!=typeof c&&"number"!=typeof c||(i=i||[]).push(u,""+c):"suppressContentEditableWarning"!==u&&"suppressHydrationWarning"!==u&&(l.hasOwnProperty(u)?(null!=c&&"onScroll"===u&&zr("scroll",e),i||s===c||(i=[])):(i=i||[]).push(u,c))}n&&(i=i||[]).push("style",n);var u=i;(t.updateQueue=u)&&(t.flags|=4)}},Rl=function(e,t,n,r){n!==r&&(t.flags|=4)};var Ql=!1,Zl=!1,Kl="function"==typeof WeakSet?WeakSet:Set,Yl=null;function Xl(e,t){var n=e.ref;if(null!==n)if("function"==typeof n)try{n(null)}catch(r){Sc(e,t,r)}else n.current=null}function Jl(e,t,n){try{n()}catch(r){Sc(e,t,r)}}var es=!1;function ts(e,t,n){var r=t.updateQueue;if(null!==(r=null!==r?r.lastEffect:null)){var a=r=r.next;do{if((a.tag&e)===e){var o=a.destroy;a.destroy=void 0,void 0!==o&&Jl(t,n,o)}a=a.next}while(a!==r)}}function ns(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function rs(e){var t=e.ref;if(null!==t){var n=e.stateNode;e.tag,e=n,"function"==typeof t?t(e):t.current=e}}function as(e){var t=e.alternate;null!==t&&(e.alternate=null,as(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&(null!==(t=e.stateNode)&&(delete t[pa],delete t[fa],delete t[ga],delete t[ma],delete t[ya])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function os(e){return 5===e.tag||3===e.tag||4===e.tag}function is(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||os(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function ls(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Jr));else if(4!==r&&null!==(e=e.child))for(ls(e,t,n),e=e.sibling;null!==e;)ls(e,t,n),e=e.sibling}function ss(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(ss(e,t,n),e=e.sibling;null!==e;)ss(e,t,n),e=e.sibling}var cs=null,us=!1;function ds(e,t,n){for(n=n.child;null!==n;)ps(e,t,n),n=n.sibling}function ps(e,t,n){if(ot&&"function"==typeof ot.onCommitFiberUnmount)try{ot.onCommitFiberUnmount(at,n)}catch(l){}switch(n.tag){case 5:Zl||Xl(n,t);case 6:var r=cs,a=us;cs=null,ds(e,t,n),us=a,null!==(cs=r)&&(us?(e=cs,n=n.stateNode,8===e.nodeType?e.parentNode.removeChild(n):e.removeChild(n)):cs.removeChild(n.stateNode));break;case 18:null!==cs&&(us?(e=cs,n=n.stateNode,8===e.nodeType?sa(e.parentNode,n):1===e.nodeType&&sa(e,n),Ut(e)):sa(cs,n.stateNode));break;case 4:r=cs,a=us,cs=n.stateNode.containerInfo,us=!0,ds(e,t,n),cs=r,us=a;break;case 0:case 11:case 14:case 15:if(!Zl&&(null!==(r=n.updateQueue)&&null!==(r=r.lastEffect))){a=r=r.next;do{var o=a,i=o.destroy;o=o.tag,void 0!==i&&(2&o||4&o)&&Jl(n,t,i),a=a.next}while(a!==r)}ds(e,t,n);break;case 1:if(!Zl&&(Xl(n,t),"function"==typeof(r=n.stateNode).componentWillUnmount))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(l){Sc(n,t,l)}ds(e,t,n);break;case 21:ds(e,t,n);break;case 22:1&n.mode?(Zl=(r=Zl)||null!==n.memoizedState,ds(e,t,n),Zl=r):ds(e,t,n);break;default:ds(e,t,n)}}function fs(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new Kl),t.forEach(function(t){var r=Cc.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))})}}function hs(e,t){var n=t.deletions;if(null!==n)for(var r=0;r<n.length;r++){var a=n[r];try{var i=e,l=t,s=l;e:for(;null!==s;){switch(s.tag){case 5:cs=s.stateNode,us=!1;break e;case 3:case 4:cs=s.stateNode.containerInfo,us=!0;break e}s=s.return}if(null===cs)throw Error(o(160));ps(i,l,a),cs=null,us=!1;var c=a.alternate;null!==c&&(c.return=null),a.return=null}catch(u){Sc(a,t,u)}}if(12854&t.subtreeFlags)for(t=t.child;null!==t;)gs(t,e),t=t.sibling}function gs(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(hs(t,e),ms(e),4&r){try{ts(3,e,e.return),ns(3,e)}catch(m){Sc(e,e.return,m)}try{ts(5,e,e.return)}catch(m){Sc(e,e.return,m)}}break;case 1:hs(t,e),ms(e),512&r&&null!==n&&Xl(n,n.return);break;case 5:if(hs(t,e),ms(e),512&r&&null!==n&&Xl(n,n.return),32&e.flags){var a=e.stateNode;try{pe(a,"")}catch(m){Sc(e,e.return,m)}}if(4&r&&null!=(a=e.stateNode)){var i=e.memoizedProps,l=null!==n?n.memoizedProps:i,s=e.type,c=e.updateQueue;if(e.updateQueue=null,null!==c)try{"input"===s&&"radio"===i.type&&null!=i.name&&Y(a,i),ve(s,l);var u=ve(s,i);for(l=0;l<c.length;l+=2){var d=c[l],p=c[l+1];"style"===d?me(a,p):"dangerouslySetInnerHTML"===d?de(a,p):"children"===d?pe(a,p):v(a,d,p,u)}switch(s){case"input":X(a,i);break;case"textarea":oe(a,i);break;case"select":var f=a._wrapperState.wasMultiple;a._wrapperState.wasMultiple=!!i.multiple;var h=i.value;null!=h?ne(a,!!i.multiple,h,!1):f!==!!i.multiple&&(null!=i.defaultValue?ne(a,!!i.multiple,i.defaultValue,!0):ne(a,!!i.multiple,i.multiple?[]:"",!1))}a[fa]=i}catch(m){Sc(e,e.return,m)}}break;case 6:if(hs(t,e),ms(e),4&r){if(null===e.stateNode)throw Error(o(162));a=e.stateNode,i=e.memoizedProps;try{a.nodeValue=i}catch(m){Sc(e,e.return,m)}}break;case 3:if(hs(t,e),ms(e),4&r&&null!==n&&n.memoizedState.isDehydrated)try{Ut(t.containerInfo)}catch(m){Sc(e,e.return,m)}break;case 4:default:hs(t,e),ms(e);break;case 13:hs(t,e),ms(e),8192&(a=e.child).flags&&(i=null!==a.memoizedState,a.stateNode.isHidden=i,!i||null!==a.alternate&&null!==a.alternate.memoizedState||(Bs=Ye())),4&r&&fs(e);break;case 22:if(d=null!==n&&null!==n.memoizedState,1&e.mode?(Zl=(u=Zl)||d,hs(t,e),Zl=u):hs(t,e),ms(e),8192&r){if(u=null!==e.memoizedState,(e.stateNode.isHidden=u)&&!d&&1&e.mode)for(Yl=e,d=e.child;null!==d;){for(p=Yl=d;null!==Yl;){switch(h=(f=Yl).child,f.tag){case 0:case 11:case 14:case 15:ts(4,f,f.return);break;case 1:Xl(f,f.return);var g=f.stateNode;if("function"==typeof g.componentWillUnmount){r=f,n=f.return;try{t=r,g.props=t.memoizedProps,g.state=t.memoizedState,g.componentWillUnmount()}catch(m){Sc(r,n,m)}}break;case 5:Xl(f,f.return);break;case 22:if(null!==f.memoizedState){ws(p);continue}}null!==h?(h.return=f,Yl=h):ws(p)}d=d.sibling}e:for(d=null,p=e;;){if(5===p.tag){if(null===d){d=p;try{a=p.stateNode,u?"function"==typeof(i=a.style).setProperty?i.setProperty("display","none","important"):i.display="none":(s=p.stateNode,l=null!=(c=p.memoizedProps.style)&&c.hasOwnProperty("display")?c.display:null,s.style.display=ge("display",l))}catch(m){Sc(e,e.return,m)}}}else if(6===p.tag){if(null===d)try{p.stateNode.nodeValue=u?"":p.memoizedProps}catch(m){Sc(e,e.return,m)}}else if((22!==p.tag&&23!==p.tag||null===p.memoizedState||p===e)&&null!==p.child){p.child.return=p,p=p.child;continue}if(p===e)break e;for(;null===p.sibling;){if(null===p.return||p.return===e)break e;d===p&&(d=null),p=p.return}d===p&&(d=null),p.sibling.return=p.return,p=p.sibling}}break;case 19:hs(t,e),ms(e),4&r&&fs(e);case 21:}}function ms(e){var t=e.flags;if(2&t){try{e:{for(var n=e.return;null!==n;){if(os(n)){var r=n;break e}n=n.return}throw Error(o(160))}switch(r.tag){case 5:var a=r.stateNode;32&r.flags&&(pe(a,""),r.flags&=-33),ss(e,is(e),a);break;case 3:case 4:var i=r.stateNode.containerInfo;ls(e,is(e),i);break;default:throw Error(o(161))}}catch(l){Sc(e,e.return,l)}e.flags&=-3}4096&t&&(e.flags&=-4097)}function ys(e,t,n){Yl=e,bs(e,t,n)}function bs(e,t,n){for(var r=!!(1&e.mode);null!==Yl;){var a=Yl,o=a.child;if(22===a.tag&&r){var i=null!==a.memoizedState||Ql;if(!i){var l=a.alternate,s=null!==l&&null!==l.memoizedState||Zl;l=Ql;var c=Zl;if(Ql=i,(Zl=s)&&!c)for(Yl=a;null!==Yl;)s=(i=Yl).child,22===i.tag&&null!==i.memoizedState?xs(a):null!==s?(s.return=i,Yl=s):xs(a);for(;null!==o;)Yl=o,bs(o,t,n),o=o.sibling;Yl=a,Ql=l,Zl=c}vs(e)}else 8772&a.subtreeFlags&&null!==o?(o.return=a,Yl=o):vs(e)}}function vs(e){for(;null!==Yl;){var t=Yl;if(8772&t.flags){var n=t.alternate;try{if(8772&t.flags)switch(t.tag){case 0:case 11:case 15:Zl||ns(5,t);break;case 1:var r=t.stateNode;if(4&t.flags&&!Zl)if(null===n)r.componentDidMount();else{var a=t.elementType===t.type?n.memoizedProps:nl(t.type,n.memoizedProps);r.componentDidUpdate(a,n.memoizedState,r.__reactInternalSnapshotBeforeUpdate)}var i=t.updateQueue;null!==i&&Ho(t,i,r);break;case 3:var l=t.updateQueue;if(null!==l){if(n=null,null!==t.child)switch(t.child.tag){case 5:case 1:n=t.child.stateNode}Ho(t,l,n)}break;case 5:var s=t.stateNode;if(null===n&&4&t.flags){n=s;var c=t.memoizedProps;switch(t.type){case"button":case"input":case"select":case"textarea":c.autoFocus&&n.focus();break;case"img":c.src&&(n.src=c.src)}}break;case 6:case 4:case 12:case 19:case 17:case 21:case 22:case 23:case 25:break;case 13:if(null===t.memoizedState){var u=t.alternate;if(null!==u){var d=u.memoizedState;if(null!==d){var p=d.dehydrated;null!==p&&Ut(p)}}}break;default:throw Error(o(163))}Zl||512&t.flags&&rs(t)}catch(f){Sc(t,t.return,f)}}if(t===e){Yl=null;break}if(null!==(n=t.sibling)){n.return=t.return,Yl=n;break}Yl=t.return}}function ws(e){for(;null!==Yl;){var t=Yl;if(t===e){Yl=null;break}var n=t.sibling;if(null!==n){n.return=t.return,Yl=n;break}Yl=t.return}}function xs(e){for(;null!==Yl;){var t=Yl;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{ns(4,t)}catch(s){Sc(t,n,s)}break;case 1:var r=t.stateNode;if("function"==typeof r.componentDidMount){var a=t.return;try{r.componentDidMount()}catch(s){Sc(t,a,s)}}var o=t.return;try{rs(t)}catch(s){Sc(t,o,s)}break;case 5:var i=t.return;try{rs(t)}catch(s){Sc(t,i,s)}}}catch(s){Sc(t,t.return,s)}if(t===e){Yl=null;break}var l=t.sibling;if(null!==l){l.return=t.return,Yl=l;break}Yl=t.return}}var ks,Ss=Math.ceil,Es=w.ReactCurrentDispatcher,js=w.ReactCurrentOwner,_s=w.ReactCurrentBatchConfig,Cs=0,Ls=null,As=null,Ts=0,Ns=0,Ps=Ea(0),Rs=0,Os=null,Ds=0,Is=0,Fs=0,Ms=null,zs=null,Bs=0,$s=1/0,Us=null,qs=!1,Hs=null,Gs=null,Ws=!1,Vs=null,Qs=0,Zs=0,Ks=null,Ys=-1,Xs=0;function Js(){return 6&Cs?Ye():-1!==Ys?Ys:Ys=Ye()}function ec(e){return 1&e.mode?2&Cs&&0!==Ts?Ts&-Ts:null!==mo.transition?(0===Xs&&(Xs=gt()),Xs):0!==(e=vt)?e:e=void 0===(e=window.event)?16:Kt(e.type):1}function tc(e,t,n,r){if(50<Zs)throw Zs=0,Ks=null,Error(o(185));yt(e,n,r),2&Cs&&e===Ls||(e===Ls&&(!(2&Cs)&&(Is|=n),4===Rs&&ic(e,Ts)),nc(e,r),1===n&&0===Cs&&!(1&t.mode)&&($s=Ye()+500,za&&Ua()))}function nc(e,t){var n=e.callbackNode;!function(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,a=e.expirationTimes,o=e.pendingLanes;0<o;){var i=31-it(o),l=1<<i,s=a[i];-1===s?0!==(l&n)&&0===(l&r)||(a[i]=ft(l,t)):s<=t&&(e.expiredLanes|=l),o&=~l}}(e,t);var r=pt(e,e===Ls?Ts:0);if(0===r)null!==n&&Qe(n),e.callbackNode=null,e.callbackPriority=0;else if(t=r&-r,e.callbackPriority!==t){if(null!=n&&Qe(n),1===t)0===e.tag?function(e){za=!0,$a(e)}(lc.bind(null,e)):$a(lc.bind(null,e)),ia(function(){!(6&Cs)&&Ua()}),n=null;else{switch(wt(r)){case 1:n=Je;break;case 4:n=et;break;case 16:default:n=tt;break;case 536870912:n=rt}n=Lc(n,rc.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function rc(e,t){if(Ys=-1,Xs=0,6&Cs)throw Error(o(327));var n=e.callbackNode;if(xc()&&e.callbackNode!==n)return null;var r=pt(e,e===Ls?Ts:0);if(0===r)return null;if(30&r||0!==(r&e.expiredLanes)||t)t=gc(e,r);else{t=r;var a=Cs;Cs|=2;var i=fc();for(Ls===e&&Ts===t||(Us=null,$s=Ye()+500,dc(e,t));;)try{yc();break}catch(s){pc(e,s)}Co(),Es.current=i,Cs=a,null!==As?t=0:(Ls=null,Ts=0,t=Rs)}if(0!==t){if(2===t&&(0!==(a=ht(e))&&(r=a,t=ac(e,a))),1===t)throw n=Os,dc(e,0),ic(e,r),nc(e,Ye()),n;if(6===t)ic(e,r);else{if(a=e.current.alternate,!(30&r||function(e){for(var t=e;;){if(16384&t.flags){var n=t.updateQueue;if(null!==n&&null!==(n=n.stores))for(var r=0;r<n.length;r++){var a=n[r],o=a.getSnapshot;a=a.value;try{if(!lr(o(),a))return!1}catch(l){return!1}}}if(n=t.child,16384&t.subtreeFlags&&null!==n)n.return=t,t=n;else{if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}(a)||(t=gc(e,r),2===t&&(i=ht(e),0!==i&&(r=i,t=ac(e,i))),1!==t)))throw n=Os,dc(e,0),ic(e,r),nc(e,Ye()),n;switch(e.finishedWork=a,e.finishedLanes=r,t){case 0:case 1:throw Error(o(345));case 2:case 5:wc(e,zs,Us);break;case 3:if(ic(e,r),(130023424&r)===r&&10<(t=Bs+500-Ye())){if(0!==pt(e,0))break;if(((a=e.suspendedLanes)&r)!==r){Js(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=ra(wc.bind(null,e,zs,Us),t);break}wc(e,zs,Us);break;case 4:if(ic(e,r),(4194240&r)===r)break;for(t=e.eventTimes,a=-1;0<r;){var l=31-it(r);i=1<<l,(l=t[l])>a&&(a=l),r&=~i}if(r=a,10<(r=(120>(r=Ye()-r)?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Ss(r/1960))-r)){e.timeoutHandle=ra(wc.bind(null,e,zs,Us),r);break}wc(e,zs,Us);break;default:throw Error(o(329))}}}return nc(e,Ye()),e.callbackNode===n?rc.bind(null,e):null}function ac(e,t){var n=Ms;return e.current.memoizedState.isDehydrated&&(dc(e,t).flags|=256),2!==(e=gc(e,t))&&(t=zs,zs=n,null!==t&&oc(t)),e}function oc(e){null===zs?zs=e:zs.push.apply(zs,e)}function ic(e,t){for(t&=~Fs,t&=~Is,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-it(t),r=1<<n;e[n]=-1,t&=~r}}function lc(e){if(6&Cs)throw Error(o(327));xc();var t=pt(e,0);if(!(1&t))return nc(e,Ye()),null;var n=gc(e,t);if(0!==e.tag&&2===n){var r=ht(e);0!==r&&(t=r,n=ac(e,r))}if(1===n)throw n=Os,dc(e,0),ic(e,t),nc(e,Ye()),n;if(6===n)throw Error(o(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,wc(e,zs,Us),nc(e,Ye()),null}function sc(e,t){var n=Cs;Cs|=1;try{return e(t)}finally{0===(Cs=n)&&($s=Ye()+500,za&&Ua())}}function cc(e){null!==Vs&&0===Vs.tag&&!(6&Cs)&&xc();var t=Cs;Cs|=1;var n=_s.transition,r=vt;try{if(_s.transition=null,vt=1,e)return e()}finally{vt=r,_s.transition=n,!(6&(Cs=t))&&Ua()}}function uc(){Ns=Ps.current,ja(Ps)}function dc(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,aa(n)),null!==As)for(n=As.return;null!==n;){var r=n;switch(to(r),r.tag){case 1:null!=(r=r.type.childContextTypes)&&Ra();break;case 3:Yo(),ja(Aa),ja(La),ri();break;case 5:Jo(r);break;case 4:Yo();break;case 13:case 19:ja(ei);break;case 10:Lo(r.type._context);break;case 22:case 23:uc()}n=n.return}if(Ls=e,As=e=Pc(e.current,null),Ts=Ns=t,Rs=0,Os=null,Fs=Is=Ds=0,zs=Ms=null,null!==Po){for(t=0;t<Po.length;t++)if(null!==(r=(n=Po[t]).interleaved)){n.interleaved=null;var a=r.next,o=n.pending;if(null!==o){var i=o.next;o.next=a,r.next=i}n.pending=r}Po=null}return e}function pc(e,t){for(;;){var n=As;try{if(Co(),ai.current=Xi,ui){for(var r=li.memoizedState;null!==r;){var a=r.queue;null!==a&&(a.pending=null),r=r.next}ui=!1}if(ii=0,ci=si=li=null,di=!1,pi=0,js.current=null,null===n||null===n.return){Rs=1,Os=t,As=null;break}e:{var i=e,l=n.return,s=n,c=t;if(t=Ts,s.flags|=32768,null!==c&&"object"==typeof c&&"function"==typeof c.then){var u=c,d=s,p=d.tag;if(!(1&d.mode||0!==p&&11!==p&&15!==p)){var f=d.alternate;f?(d.updateQueue=f.updateQueue,d.memoizedState=f.memoizedState,d.lanes=f.lanes):(d.updateQueue=null,d.memoizedState=null)}var h=ml(l);if(null!==h){h.flags&=-257,yl(h,l,s,0,t),1&h.mode&&gl(i,u,t),c=u;var g=(t=h).updateQueue;if(null===g){var m=new Set;m.add(c),t.updateQueue=m}else g.add(c);break e}if(!(1&t)){gl(i,u,t),hc();break e}c=Error(o(426))}else if(ao&&1&s.mode){var y=ml(l);if(null!==y){!(65536&y.flags)&&(y.flags|=256),yl(y,l,s,0,t),go(cl(c,s));break e}}i=c=cl(c,s),4!==Rs&&(Rs=2),null===Ms?Ms=[i]:Ms.push(i),i=l;do{switch(i.tag){case 3:i.flags|=65536,t&=-t,i.lanes|=t,Uo(i,fl(0,c,t));break e;case 1:s=c;var b=i.type,v=i.stateNode;if(!(128&i.flags||"function"!=typeof b.getDerivedStateFromError&&(null===v||"function"!=typeof v.componentDidCatch||null!==Gs&&Gs.has(v)))){i.flags|=65536,t&=-t,i.lanes|=t,Uo(i,hl(i,s,t));break e}}i=i.return}while(null!==i)}vc(n)}catch(w){t=w,As===n&&null!==n&&(As=n=n.return);continue}break}}function fc(){var e=Es.current;return Es.current=Xi,null===e?Xi:e}function hc(){0!==Rs&&3!==Rs&&2!==Rs||(Rs=4),null===Ls||!(268435455&Ds)&&!(268435455&Is)||ic(Ls,Ts)}function gc(e,t){var n=Cs;Cs|=2;var r=fc();for(Ls===e&&Ts===t||(Us=null,dc(e,t));;)try{mc();break}catch(a){pc(e,a)}if(Co(),Cs=n,Es.current=r,null!==As)throw Error(o(261));return Ls=null,Ts=0,Rs}function mc(){for(;null!==As;)bc(As)}function yc(){for(;null!==As&&!Ze();)bc(As)}function bc(e){var t=ks(e.alternate,e,Ns);e.memoizedProps=e.pendingProps,null===t?vc(e):As=t,js.current=null}function vc(e){var t=e;do{var n=t.alternate;if(e=t.return,32768&t.flags){if(null!==(n=Vl(n,t)))return n.flags&=32767,void(As=n);if(null===e)return Rs=6,void(As=null);e.flags|=32768,e.subtreeFlags=0,e.deletions=null}else if(null!==(n=Wl(n,t,Ns)))return void(As=n);if(null!==(t=t.sibling))return void(As=t);As=t=e}while(null!==t);0===Rs&&(Rs=5)}function wc(e,t,n){var r=vt,a=_s.transition;try{_s.transition=null,vt=1,function(e,t,n,r){do{xc()}while(null!==Vs);if(6&Cs)throw Error(o(327));n=e.finishedWork;var a=e.finishedLanes;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(o(177));e.callbackNode=null,e.callbackPriority=0;var i=n.lanes|n.childLanes;if(function(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0<n;){var a=31-it(n),o=1<<a;t[a]=0,r[a]=-1,e[a]=-1,n&=~o}}(e,i),e===Ls&&(As=Ls=null,Ts=0),!(2064&n.subtreeFlags)&&!(2064&n.flags)||Ws||(Ws=!0,Lc(tt,function(){return xc(),null})),i=!!(15990&n.flags),!!(15990&n.subtreeFlags)||i){i=_s.transition,_s.transition=null;var l=vt;vt=1;var s=Cs;Cs|=4,js.current=null,function(e,t){if(ea=Ht,fr(e=pr())){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{var r=(n=(n=e.ownerDocument)&&n.defaultView||window).getSelection&&n.getSelection();if(r&&0!==r.rangeCount){n=r.anchorNode;var a=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch(x){n=null;break e}var l=0,s=-1,c=-1,u=0,d=0,p=e,f=null;t:for(;;){for(var h;p!==n||0!==a&&3!==p.nodeType||(s=l+a),p!==i||0!==r&&3!==p.nodeType||(c=l+r),3===p.nodeType&&(l+=p.nodeValue.length),null!==(h=p.firstChild);)f=p,p=h;for(;;){if(p===e)break t;if(f===n&&++u===a&&(s=l),f===i&&++d===r&&(c=l),null!==(h=p.nextSibling))break;f=(p=f).parentNode}p=h}n=-1===s||-1===c?null:{start:s,end:c}}else n=null}n=n||{start:0,end:0}}else n=null;for(ta={focusedElem:e,selectionRange:n},Ht=!1,Yl=t;null!==Yl;)if(e=(t=Yl).child,1028&t.subtreeFlags&&null!==e)e.return=t,Yl=e;else for(;null!==Yl;){t=Yl;try{var g=t.alternate;if(1024&t.flags)switch(t.tag){case 0:case 11:case 15:case 5:case 6:case 4:case 17:break;case 1:if(null!==g){var m=g.memoizedProps,y=g.memoizedState,b=t.stateNode,v=b.getSnapshotBeforeUpdate(t.elementType===t.type?m:nl(t.type,m),y);b.__reactInternalSnapshotBeforeUpdate=v}break;case 3:var w=t.stateNode.containerInfo;1===w.nodeType?w.textContent="":9===w.nodeType&&w.documentElement&&w.removeChild(w.documentElement);break;default:throw Error(o(163))}}catch(x){Sc(t,t.return,x)}if(null!==(e=t.sibling)){e.return=t.return,Yl=e;break}Yl=t.return}g=es,es=!1}(e,n),gs(n,e),hr(ta),Ht=!!ea,ta=ea=null,e.current=n,ys(n,e,a),Ke(),Cs=s,vt=l,_s.transition=i}else e.current=n;if(Ws&&(Ws=!1,Vs=e,Qs=a),i=e.pendingLanes,0===i&&(Gs=null),function(e){if(ot&&"function"==typeof ot.onCommitFiberRoot)try{ot.onCommitFiberRoot(at,e,void 0,!(128&~e.current.flags))}catch(t){}}(n.stateNode),nc(e,Ye()),null!==t)for(r=e.onRecoverableError,n=0;n<t.length;n++)a=t[n],r(a.value,{componentStack:a.stack,digest:a.digest});if(qs)throw qs=!1,e=Hs,Hs=null,e;!!(1&Qs)&&0!==e.tag&&xc(),i=e.pendingLanes,1&i?e===Ks?Zs++:(Zs=0,Ks=e):Zs=0,Ua()}(e,t,n,r)}finally{_s.transition=a,vt=r}return null}function xc(){if(null!==Vs){var e=wt(Qs),t=_s.transition,n=vt;try{if(_s.transition=null,vt=16>e?16:e,null===Vs)var r=!1;else{if(e=Vs,Vs=null,Qs=0,6&Cs)throw Error(o(331));var a=Cs;for(Cs|=4,Yl=e.current;null!==Yl;){var i=Yl,l=i.child;if(16&Yl.flags){var s=i.deletions;if(null!==s){for(var c=0;c<s.length;c++){var u=s[c];for(Yl=u;null!==Yl;){var d=Yl;switch(d.tag){case 0:case 11:case 15:ts(8,d,i)}var p=d.child;if(null!==p)p.return=d,Yl=p;else for(;null!==Yl;){var f=(d=Yl).sibling,h=d.return;if(as(d),d===u){Yl=null;break}if(null!==f){f.return=h,Yl=f;break}Yl=h}}}var g=i.alternate;if(null!==g){var m=g.child;if(null!==m){g.child=null;do{var y=m.sibling;m.sibling=null,m=y}while(null!==m)}}Yl=i}}if(2064&i.subtreeFlags&&null!==l)l.return=i,Yl=l;else e:for(;null!==Yl;){if(2048&(i=Yl).flags)switch(i.tag){case 0:case 11:case 15:ts(9,i,i.return)}var b=i.sibling;if(null!==b){b.return=i.return,Yl=b;break e}Yl=i.return}}var v=e.current;for(Yl=v;null!==Yl;){var w=(l=Yl).child;if(2064&l.subtreeFlags&&null!==w)w.return=l,Yl=w;else e:for(l=v;null!==Yl;){if(2048&(s=Yl).flags)try{switch(s.tag){case 0:case 11:case 15:ns(9,s)}}catch(k){Sc(s,s.return,k)}if(s===l){Yl=null;break e}var x=s.sibling;if(null!==x){x.return=s.return,Yl=x;break e}Yl=s.return}}if(Cs=a,Ua(),ot&&"function"==typeof ot.onPostCommitFiberRoot)try{ot.onPostCommitFiberRoot(at,e)}catch(k){}r=!0}return r}finally{vt=n,_s.transition=t}}return!1}function kc(e,t,n){e=Bo(e,t=fl(0,t=cl(n,t),1),1),t=Js(),null!==e&&(yt(e,1,t),nc(e,t))}function Sc(e,t,n){if(3===e.tag)kc(e,e,n);else for(;null!==t;){if(3===t.tag){kc(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Gs||!Gs.has(r))){t=Bo(t,e=hl(t,e=cl(n,e),1),1),e=Js(),null!==t&&(yt(t,1,e),nc(t,e));break}}t=t.return}}function Ec(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=Js(),e.pingedLanes|=e.suspendedLanes&n,Ls===e&&(Ts&n)===n&&(4===Rs||3===Rs&&(130023424&Ts)===Ts&&500>Ye()-Bs?dc(e,0):Fs|=n),nc(e,t)}function jc(e,t){0===t&&(1&e.mode?(t=ut,!(130023424&(ut<<=1))&&(ut=4194304)):t=1);var n=Js();null!==(e=Do(e,t))&&(yt(e,t,n),nc(e,n))}function _c(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),jc(e,n)}function Cc(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,a=e.memoizedState;null!==a&&(n=a.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(o(314))}null!==r&&r.delete(t),jc(e,n)}function Lc(e,t){return Ve(e,t)}function Ac(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Tc(e,t,n,r){return new Ac(e,t,n,r)}function Nc(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Pc(e,t){var n=e.alternate;return null===n?((n=Tc(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=14680064&e.flags,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Rc(e,t,n,r,a,i){var l=2;if(r=e,"function"==typeof e)Nc(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case S:return Oc(n.children,a,i,t);case E:l=8,a|=8;break;case j:return(e=Tc(12,n,t,2|a)).elementType=j,e.lanes=i,e;case A:return(e=Tc(13,n,t,a)).elementType=A,e.lanes=i,e;case T:return(e=Tc(19,n,t,a)).elementType=T,e.lanes=i,e;case R:return Dc(n,a,i,t);default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case _:l=10;break e;case C:l=9;break e;case L:l=11;break e;case N:l=14;break e;case P:l=16,r=null;break e}throw Error(o(130,null==e?e:typeof e,""))}return(t=Tc(l,n,t,a)).elementType=e,t.type=r,t.lanes=i,t}function Oc(e,t,n,r){return(e=Tc(7,e,r,t)).lanes=n,e}function Dc(e,t,n,r){return(e=Tc(22,e,r,t)).elementType=R,e.lanes=n,e.stateNode={isHidden:!1},e}function Ic(e,t,n){return(e=Tc(6,e,null,t)).lanes=n,e}function Fc(e,t,n){return(t=Tc(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Mc(e,t,n,r,a){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=mt(0),this.expirationTimes=mt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=mt(0),this.identifierPrefix=r,this.onRecoverableError=a,this.mutableSourceEagerHydrationData=null}function zc(e,t,n,r,a,o,i,l,s){return e=new Mc(e,t,n,l,s),1===t?(t=1,!0===o&&(t|=8)):t=0,o=Tc(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Fo(o),e}function Bc(e){if(!e)return Ca;e:{if(Ue(e=e._reactInternals)!==e||1!==e.tag)throw Error(o(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(Pa(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(null!==t);throw Error(o(171))}if(1===e.tag){var n=e.type;if(Pa(n))return Da(e,n,t)}return t}function $c(e,t,n,r,a,o,i,l,s){return(e=zc(n,r,!0,e,0,o,0,l,s)).context=Bc(null),n=e.current,(o=zo(r=Js(),a=ec(n))).callback=null!=t?t:null,Bo(n,o,a),e.current.lanes=a,yt(e,a,r),nc(e,r),e}function Uc(e,t,n,r){var a=t.current,o=Js(),i=ec(a);return n=Bc(n),null===t.context?t.context=n:t.pendingContext=n,(t=zo(o,i)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),null!==(e=Bo(a,t,i))&&(tc(e,a,i,o),$o(e,a,i)),i}function qc(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function Hc(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function Gc(e,t){Hc(e,t),(e=e.alternate)&&Hc(e,t)}ks=function(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps||Aa.current)vl=!0;else{if(0===(e.lanes&n)&&!(128&t.flags))return vl=!1,function(e,t,n){switch(t.tag){case 3:Al(t),ho();break;case 5:Xo(t);break;case 1:Pa(t.type)&&Ia(t);break;case 4:Ko(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,a=t.memoizedProps.value;_a(So,r._currentValue),r._currentValue=a;break;case 13:if(null!==(r=t.memoizedState))return null!==r.dehydrated?(_a(ei,1&ei.current),t.flags|=128,null):0!==(n&t.child.childLanes)?Il(e,t,n):(_a(ei,1&ei.current),null!==(e=ql(e,t,n))?e.sibling:null);_a(ei,1&ei.current);break;case 19:if(r=0!==(n&t.childLanes),128&e.flags){if(r)return $l(e,t,n);t.flags|=128}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),_a(ei,ei.current),r)break;return null;case 22:case 23:return t.lanes=0,El(e,t,n)}return ql(e,t,n)}(e,t,n);vl=!!(131072&e.flags)}else vl=!1,ao&&1048576&t.flags&&Ja(t,Wa,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Ul(e,t),e=t.pendingProps;var a=Na(t,La.current);To(t,n),a=mi(null,t,r,e,a,n);var i=yi();return t.flags|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Pa(r)?(i=!0,Ia(t)):i=!1,t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,Fo(t),a.updater=al,t.stateNode=a,a._reactInternals=t,sl(t,r,e,n),t=Ll(null,t,r,!0,i,n)):(t.tag=0,ao&&i&&eo(t),wl(null,t,a,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Ul(e,t),e=t.pendingProps,r=(a=r._init)(r._payload),t.type=r,a=t.tag=function(e){if("function"==typeof e)return Nc(e)?1:0;if(null!=e){if((e=e.$$typeof)===L)return 11;if(e===N)return 14}return 2}(r),e=nl(r,e),a){case 0:t=_l(null,t,r,e,n);break e;case 1:t=Cl(null,t,r,e,n);break e;case 11:t=xl(null,t,r,e,n);break e;case 14:t=kl(null,t,r,nl(r.type,e),n);break e}throw Error(o(306,r,""))}return t;case 0:return r=t.type,a=t.pendingProps,_l(e,t,r,a=t.elementType===r?a:nl(r,a),n);case 1:return r=t.type,a=t.pendingProps,Cl(e,t,r,a=t.elementType===r?a:nl(r,a),n);case 3:e:{if(Al(t),null===e)throw Error(o(387));r=t.pendingProps,a=(i=t.memoizedState).element,Mo(e,t),qo(t,r,null,n);var l=t.memoizedState;if(r=l.element,i.isDehydrated){if(i={element:r,isDehydrated:!1,cache:l.cache,pendingSuspenseBoundaries:l.pendingSuspenseBoundaries,transitions:l.transitions},t.updateQueue.baseState=i,t.memoizedState=i,256&t.flags){t=Tl(e,t,r,n,a=cl(Error(o(423)),t));break e}if(r!==a){t=Tl(e,t,r,n,a=cl(Error(o(424)),t));break e}for(ro=ca(t.stateNode.containerInfo.firstChild),no=t,ao=!0,oo=null,n=ko(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|4096,n=n.sibling}else{if(ho(),r===a){t=ql(e,t,n);break e}wl(e,t,r,n)}t=t.child}return t;case 5:return Xo(t),null===e&&co(t),r=t.type,a=t.pendingProps,i=null!==e?e.memoizedProps:null,l=a.children,na(r,a)?l=null:null!==i&&na(r,i)&&(t.flags|=32),jl(e,t),wl(e,t,l,n),t.child;case 6:return null===e&&co(t),null;case 13:return Il(e,t,n);case 4:return Ko(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=xo(t,null,r,n):wl(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,xl(e,t,r,a=t.elementType===r?a:nl(r,a),n);case 7:return wl(e,t,t.pendingProps,n),t.child;case 8:case 12:return wl(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,a=t.pendingProps,i=t.memoizedProps,l=a.value,_a(So,r._currentValue),r._currentValue=l,null!==i)if(lr(i.value,l)){if(i.children===a.children&&!Aa.current){t=ql(e,t,n);break e}}else for(null!==(i=t.child)&&(i.return=t);null!==i;){var s=i.dependencies;if(null!==s){l=i.child;for(var c=s.firstContext;null!==c;){if(c.context===r){if(1===i.tag){(c=zo(-1,n&-n)).tag=2;var u=i.updateQueue;if(null!==u){var d=(u=u.shared).pending;null===d?c.next=c:(c.next=d.next,d.next=c),u.pending=c}}i.lanes|=n,null!==(c=i.alternate)&&(c.lanes|=n),Ao(i.return,n,t),s.lanes|=n;break}c=c.next}}else if(10===i.tag)l=i.type===t.type?null:i.child;else if(18===i.tag){if(null===(l=i.return))throw Error(o(341));l.lanes|=n,null!==(s=l.alternate)&&(s.lanes|=n),Ao(l,n,t),l=i.sibling}else l=i.child;if(null!==l)l.return=i;else for(l=i;null!==l;){if(l===t){l=null;break}if(null!==(i=l.sibling)){i.return=l.return,l=i;break}l=l.return}i=l}wl(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=t.pendingProps.children,To(t,n),r=r(a=No(a)),t.flags|=1,wl(e,t,r,n),t.child;case 14:return a=nl(r=t.type,t.pendingProps),kl(e,t,r,a=nl(r.type,a),n);case 15:return Sl(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:nl(r,a),Ul(e,t),t.tag=1,Pa(r)?(e=!0,Ia(t)):e=!1,To(t,n),il(t,r,a),sl(t,r,a,n),Ll(null,t,r,!0,e,n);case 19:return $l(e,t,n);case 22:return El(e,t,n)}throw Error(o(156,t.tag))};var Wc="function"==typeof reportError?reportError:function(e){console.error(e)};function Vc(e){this._internalRoot=e}function Qc(e){this._internalRoot=e}function Zc(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType)}function Kc(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Yc(){}function Xc(e,t,n,r,a){var o=n._reactRootContainer;if(o){var i=o;if("function"==typeof a){var l=a;a=function(){var e=qc(i);l.call(e)}}Uc(t,i,e,a)}else i=function(e,t,n,r,a){if(a){if("function"==typeof r){var o=r;r=function(){var e=qc(i);o.call(e)}}var i=$c(t,r,e,0,null,!1,0,"",Yc);return e._reactRootContainer=i,e[ha]=i.current,Ur(8===e.nodeType?e.parentNode:e),cc(),i}for(;a=e.lastChild;)e.removeChild(a);if("function"==typeof r){var l=r;r=function(){var e=qc(s);l.call(e)}}var s=zc(e,0,!1,null,0,!1,0,"",Yc);return e._reactRootContainer=s,e[ha]=s.current,Ur(8===e.nodeType?e.parentNode:e),cc(function(){Uc(t,s,n,r)}),s}(n,t,e,a,r);return qc(i)}Qc.prototype.render=Vc.prototype.render=function(e){var t=this._internalRoot;if(null===t)throw Error(o(409));Uc(e,t,null,null)},Qc.prototype.unmount=Vc.prototype.unmount=function(){var e=this._internalRoot;if(null!==e){this._internalRoot=null;var t=e.containerInfo;cc(function(){Uc(null,e,null,null)}),t[ha]=null}},Qc.prototype.unstable_scheduleHydration=function(e){if(e){var t=Et();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Rt.length&&0!==t&&t<Rt[n].priority;n++);Rt.splice(n,0,e),0===n&&Ft(e)}},xt=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=dt(t.pendingLanes);0!==n&&(bt(t,1|n),nc(t,Ye()),!(6&Cs)&&($s=Ye()+500,Ua()))}break;case 13:cc(function(){var t=Do(e,1);if(null!==t){var n=Js();tc(t,e,1,n)}}),Gc(e,1)}},kt=function(e){if(13===e.tag){var t=Do(e,134217728);if(null!==t)tc(t,e,134217728,Js());Gc(e,134217728)}},St=function(e){if(13===e.tag){var t=ec(e),n=Do(e,t);if(null!==n)tc(n,e,t,Js());Gc(e,t)}},Et=function(){return vt},jt=function(e,t){var n=vt;try{return vt=e,t()}finally{vt=n}},ke=function(e,t,n){switch(t){case"input":if(X(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=xa(r);if(!a)throw Error(o(90));V(r),X(r,a)}}}break;case"textarea":oe(e,n);break;case"select":null!=(t=n.value)&&ne(e,!!n.multiple,t,!1)}},Le=sc,Ae=cc;var Jc={usingClientEntryPoint:!1,Events:[va,wa,xa,_e,Ce,sc]},eu={findFiberByHostInstance:ba,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},tu={bundleType:eu.bundleType,version:eu.version,rendererPackageName:eu.rendererPackageName,rendererConfig:eu.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:w.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Ge(e))?null:e.stateNode},findFiberByHostInstance:eu.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var nu=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!nu.isDisabled&&nu.supportsFiber)try{at=nu.inject(tu),ot=nu}catch(ue){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Jc,t.createPortal=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Zc(t))throw Error(o(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:k,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)},t.createRoot=function(e,t){if(!Zc(e))throw Error(o(299));var n=!1,r="",a=Wc;return null!=t&&(!0===t.unstable_strictMode&&(n=!0),void 0!==t.identifierPrefix&&(r=t.identifierPrefix),void 0!==t.onRecoverableError&&(a=t.onRecoverableError)),t=zc(e,1,!1,null,0,n,0,r,a),e[ha]=t.current,Ur(8===e.nodeType?e.parentNode:e),new Vc(t)},t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if("function"==typeof e.render)throw Error(o(188));throw e=Object.keys(e).join(","),Error(o(268,e))}return e=null===(e=Ge(t))?null:e.stateNode},t.flushSync=function(e){return cc(e)},t.hydrate=function(e,t,n){if(!Kc(t))throw Error(o(200));return Xc(null,e,t,!0,n)},t.hydrateRoot=function(e,t,n){if(!Zc(e))throw Error(o(405));var r=null!=n&&n.hydratedSources||null,a=!1,i="",l=Wc;if(null!=n&&(!0===n.unstable_strictMode&&(a=!0),void 0!==n.identifierPrefix&&(i=n.identifierPrefix),void 0!==n.onRecoverableError&&(l=n.onRecoverableError)),t=$c(t,null,e,1,null!=n?n:null,a,0,i,l),e[ha]=t.current,Ur(e),r)for(e=0;e<r.length;e++)a=(a=(n=r[e])._getVersion)(n._source),null==t.mutableSourceEagerHydrationData?t.mutableSourceEagerHydrationData=[n,a]:t.mutableSourceEagerHydrationData.push(n,a);return new Qc(t)},t.render=function(e,t,n){if(!Kc(t))throw Error(o(200));return Xc(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!Kc(e))throw Error(o(40));return!!e._reactRootContainer&&(cc(function(){Xc(null,null,e,!1,function(){e._reactRootContainer=null,e[ha]=null})}),!0)},t.unstable_batchedUpdates=sc,t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Kc(n))throw Error(o(200));if(null==e||void 0===e._reactInternals)throw Error(o(38));return Xc(e,t,n,!1,r)},t.version="18.3.1-next-f1338f8080-20240426"},5338(e,t,n){"use strict";var r=n(961);t.createRoot=r.createRoot,t.hydrateRoot=r.hydrateRoot},961(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(2551)},115(e){var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,a="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function o(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var l,s,c,u;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!==s--;)if(!o(e[s],i[s]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(u=e.entries();!(s=u.next()).done;)if(!i.has(s.value[0]))return!1;for(u=e.entries();!(s=u.next()).done;)if(!o(s.value[1],i.get(s.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(u=e.entries();!(s=u.next()).done;)if(!i.has(s.value[0]))return!1;return!0}if(a&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((l=e.length)!=i.length)return!1;for(s=l;0!==s--;)if(e[s]!==i[s])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof i.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof i.toString)return e.toString()===i.toString();if((l=(c=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!==s--;)if(!Object.prototype.hasOwnProperty.call(i,c[s]))return!1;if(t&&e instanceof Element)return!1;for(s=l;0!==s--;)if(("_owner"!==c[s]&&"__v"!==c[s]&&"__o"!==c[s]||!e.$$typeof)&&!o(e[c[s]],i[c[s]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return o(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},545(e,t,n){"use strict";n.d(t,{mg:()=>J,vd:()=>G});var r=n(6540),a=n(5556),o=n.n(a),i=n(115),l=n.n(i),s=n(311),c=n.n(s),u=n(2833),d=n.n(u);function p(){return p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p.apply(this,arguments)}function f(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,h(e,t)}function h(e,t){return h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},h(e,t)}function g(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(n=o[r])>=0||(a[n]=e[n]);return a}var m={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},y={rel:["amphtml","canonical","alternate"]},b={type:["application/ld+json"]},v={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(m).map(function(e){return m[e]}),x={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},k=Object.keys(x).reduce(function(e,t){return e[x[t]]=t,e},{}),S=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},E=function(e){var t=S(e,m.TITLE),n=S(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,function(){return t});var r=S(e,"defaultTitle");return t||r||void 0},j=function(e){return S(e,"onChangeClientState")||function(){}},_=function(e,t){return t.filter(function(t){return void 0!==t[e]}).map(function(t){return t[e]}).reduce(function(e,t){return p({},e,t)},{})},C=function(e,t){return t.filter(function(e){return void 0!==e[m.BASE]}).map(function(e){return e[m.BASE]}).reverse().reduce(function(t,n){if(!t.length)for(var r=Object.keys(n),a=0;a<r.length;a+=1){var o=r[a].toLowerCase();if(-1!==e.indexOf(o)&&n[o])return t.concat(n)}return t},[])},L=function(e,t,n){var r={};return n.filter(function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)}).map(function(t){return t[e]}).reverse().reduce(function(e,n){var a={};n.filter(function(e){for(var n,o=Object.keys(e),i=0;i<o.length;i+=1){var l=o[i],s=l.toLowerCase();-1===t.indexOf(s)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===s&&"stylesheet"===e[s].toLowerCase()||(n=s),-1===t.indexOf(l)||"innerHTML"!==l&&"cssText"!==l&&"itemprop"!==l||(n=l)}if(!n||!e[n])return!1;var c=e[n].toLowerCase();return r[n]||(r[n]={}),a[n]||(a[n]={}),!r[n][c]&&(a[n][c]=!0,!0)}).reverse().forEach(function(t){return e.push(t)});for(var o=Object.keys(a),i=0;i<o.length;i+=1){var l=o[i],s=p({},r[l],a[l]);r[l]=s}return e},[]).reverse()},A=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},T=function(e){return Array.isArray(e)?e.join(""):e},N=function(e,t){return Array.isArray(e)?e.reduce(function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e},{priority:[],default:[]}):{default:e}},P=function(e,t){var n;return p({},e,((n={})[t]=void 0,n))},R=[m.NOSCRIPT,m.SCRIPT,m.STYLE],O=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},D=function(e){return Object.keys(e).reduce(function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r},"")},I=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce(function(t,n){return t[x[n]||n]=e[n],t},t)},F=function(e,t){return t.map(function(t,n){var a,o=((a={key:n})["data-rh"]=!0,a);return Object.keys(t).forEach(function(e){var n=x[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]}),r.createElement(e,o)})},M=function(e,t,n){switch(e){case m.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=I(n,a),[r.createElement(m.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=D(n),o=T(t);return a?"<"+e+' data-rh="true" '+a+">"+O(o,r)+"</"+e+">":"<"+e+' data-rh="true">'+O(o,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return I(t)},toString:function(){return D(t)}};default:return{toComponent:function(){return F(e,t)},toString:function(){return function(e,t,n){return t.reduce(function(t,r){var a=Object.keys(r).filter(function(e){return!("innerHTML"===e||"cssText"===e)}).reduce(function(e,t){var a=void 0===r[t]?t:t+'="'+O(r[t],n)+'"';return e?e+" "+a:a},""),o=r.innerHTML||r.cssText||"",i=-1===R.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+"</"+e+">")},"")}(e,t,n)}}}},z=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.noscriptTags,i=e.styleTags,l=e.title,s=void 0===l?"":l,c=e.titleAttributes,u=e.linkTags,d=e.metaTags,p=e.scriptTags,f={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var h=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,a=N(e.metaTags,v),o=N(t,y),i=N(n,b);return{priorityMethods:{toComponent:function(){return[].concat(F(m.META,a.priority),F(m.LINK,o.priority),F(m.SCRIPT,i.priority))},toString:function(){return M(m.META,a.priority,r)+" "+M(m.LINK,o.priority,r)+" "+M(m.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);f=h.priorityMethods,u=h.linkTags,d=h.metaTags,p=h.scriptTags}return{priority:f,base:M(m.BASE,t,r),bodyAttributes:M("bodyAttributes",n,r),htmlAttributes:M("htmlAttributes",a,r),link:M(m.LINK,u,r),meta:M(m.META,d,r),noscript:M(m.NOSCRIPT,o,r),script:M(m.SCRIPT,p,r),style:M(m.STYLE,i,r),title:M(m.TITLE,{title:s,titleAttributes:c},r)}},B=[],$=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?B:n.instances},add:function(e){(n.canUseDOM?B:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?B:n.instances).indexOf(e);(n.canUseDOM?B:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=z({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},U=r.createContext({}),q=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),H="undefined"!=typeof document,G=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new $(r.props.context,t.canUseDOM),r}return f(t,e),t.prototype.render=function(){return r.createElement(U.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);G.canUseDOM=H,G.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},G.defaultProps={context:{}},G.displayName="HelmetProvider";var W=function(e,t){var n,r=document.head||document.querySelector(m.HEAD),a=r.querySelectorAll(e+"[data-rh]"),o=[].slice.call(a),i=[];return t&&t.length&&t.forEach(function(t){var r=document.createElement(e);for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&("innerHTML"===a?r.innerHTML=t.innerHTML:"cssText"===a?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(a,void 0===t[a]?"":t[a]));r.setAttribute("data-rh","true"),o.some(function(e,t){return n=t,r.isEqualNode(e)})?o.splice(n,1):i.push(r)}),o.forEach(function(e){return e.parentNode.removeChild(e)}),i.forEach(function(e){return r.appendChild(e)}),{oldTags:o,newTags:i}},V=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),l=0;l<i.length;l+=1){var s=i[l],c=t[s]||"";n.getAttribute(s)!==c&&n.setAttribute(s,c),-1===a.indexOf(s)&&a.push(s);var u=o.indexOf(s);-1!==u&&o.splice(u,1)}for(var d=o.length-1;d>=0;d-=1)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},Q=function(e,t){var n=e.baseTag,r=e.htmlAttributes,a=e.linkTags,o=e.metaTags,i=e.noscriptTags,l=e.onChangeClientState,s=e.scriptTags,c=e.styleTags,u=e.title,d=e.titleAttributes;V(m.BODY,e.bodyAttributes),V(m.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=T(e)),V(m.TITLE,t)}(u,d);var p={baseTag:W(m.BASE,n),linkTags:W(m.LINK,a),metaTags:W(m.META,o),noscriptTags:W(m.NOSCRIPT,i),scriptTags:W(m.SCRIPT,s),styleTags:W(m.STYLE,c)},f={},h={};Object.keys(p).forEach(function(e){var t=p[e],n=t.newTags,r=t.oldTags;n.length&&(f[e]=n),r.length&&(h[e]=p[e].oldTags)}),t&&t(),l(e,f,h)},Z=null,K=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,a=null,o=(e=n.helmetInstances.get().map(function(e){var t=p({},e.props);return delete t.context,t}),{baseTag:C(["href"],e),bodyAttributes:_("bodyAttributes",e),defer:S(e,"defer"),encode:S(e,"encodeSpecialCharacters"),htmlAttributes:_("htmlAttributes",e),linkTags:L(m.LINK,["rel","href"],e),metaTags:L(m.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:L(m.NOSCRIPT,["innerHTML"],e),onChangeClientState:j(e),scriptTags:L(m.SCRIPT,["src","innerHTML"],e),styleTags:L(m.STYLE,["cssText"],e),title:E(e),titleAttributes:_("titleAttributes",e),prioritizeSeoTags:A(e,"prioritizeSeoTags")});G.canUseDOM?(t=o,Z&&cancelAnimationFrame(Z),t.defer?Z=requestAnimationFrame(function(){Q(t,function(){Z=null})}):(Q(t),Z=null)):z&&(a=z(o)),r(a)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);K.propTypes={context:q.isRequired},K.displayName="HelmetDispatcher";var Y=["children"],X=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!l()(P(this.props,"helmetData"),P(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case m.SCRIPT:case m.NOSCRIPT:return{innerHTML:t};case m.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return p({},r,((t={})[n.type]=[].concat(r[n.type]||[],[p({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case m.TITLE:return p({},a,((t={})[r.type]=i,t.titleAttributes=p({},o),t));case m.BODY:return p({},a,{bodyAttributes:p({},o)});case m.HTML:return p({},a,{htmlAttributes:p({},o)});default:return p({},a,((n={})[r.type]=p({},o),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=p({},t);return Object.keys(e).forEach(function(t){var r;n=p({},n,((r={})[t]=e[t],r))}),n},n.warnOnInvalidChildren=function(e,t){return c()(w.some(function(t){return e.type===t}),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),c()(!t||"string"==typeof t||Array.isArray(t)&&!t.some(function(e){return"string"!=typeof e}),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,a={};return r.Children.forEach(e,function(e){if(e&&e.props){var r=e.props,o=r.children,i=g(r,Y),l=Object.keys(i).reduce(function(e,t){return e[k[t]||t]=i[t],e},{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,o),s){case m.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case m.LINK:case m.META:case m.NOSCRIPT:case m.SCRIPT:case m.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:l,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:o})}}}),this.mapArrayTypeChildrenToProps(a,t)},n.render=function(){var e=this.props,t=e.children,n=g(e,X),a=p({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof $||(o=new $(o.context,o.instances)),o?r.createElement(K,p({},a,{context:o.value,helmetData:void 0})):r.createElement(U.Consumer,null,function(e){return r.createElement(K,p({},a,{context:e}))})},t}(r.Component);J.propTypes={base:o().object,bodyAttributes:o().object,children:o().oneOfType([o().arrayOf(o().node),o().node]),defaultTitle:o().string,defer:o().bool,encodeSpecialCharacters:o().bool,htmlAttributes:o().object,link:o().arrayOf(o().object),meta:o().arrayOf(o().object),noscript:o().arrayOf(o().object),onChangeClientState:o().func,script:o().arrayOf(o().object),style:o().arrayOf(o().object),title:o().string,titleAttributes:o().object,titleTemplate:o().string,prioritizeSeoTags:o().bool,helmetData:o().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},2799(e,t){"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,a=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,c=n?Symbol.for("react.context"):60110,u=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,p=n?Symbol.for("react.forward_ref"):60112,f=n?Symbol.for("react.suspense"):60113,h=n?Symbol.for("react.suspense_list"):60120,g=n?Symbol.for("react.memo"):60115,m=n?Symbol.for("react.lazy"):60116,y=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,v=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function x(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case u:case d:case o:case l:case i:case f:return e;default:switch(e=e&&e.$$typeof){case c:case p:case m:case g:case s:return e;default:return t}}case a:return t}}}function k(e){return x(e)===d}t.AsyncMode=u,t.ConcurrentMode=d,t.ContextConsumer=c,t.ContextProvider=s,t.Element=r,t.ForwardRef=p,t.Fragment=o,t.Lazy=m,t.Memo=g,t.Portal=a,t.Profiler=l,t.StrictMode=i,t.Suspense=f,t.isAsyncMode=function(e){return k(e)||x(e)===u},t.isConcurrentMode=k,t.isContextConsumer=function(e){return x(e)===c},t.isContextProvider=function(e){return x(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return x(e)===p},t.isFragment=function(e){return x(e)===o},t.isLazy=function(e){return x(e)===m},t.isMemo=function(e){return x(e)===g},t.isPortal=function(e){return x(e)===a},t.isProfiler=function(e){return x(e)===l},t.isStrictMode=function(e){return x(e)===i},t.isSuspense=function(e){return x(e)===f},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===l||e===i||e===f||e===h||"object"==typeof e&&null!==e&&(e.$$typeof===m||e.$$typeof===g||e.$$typeof===s||e.$$typeof===c||e.$$typeof===p||e.$$typeof===b||e.$$typeof===v||e.$$typeof===w||e.$$typeof===y)},t.typeOf=x},4363(e,t,n){"use strict";e.exports=n(2799)},3259(e,t,n){"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}var l=n(6540),s=[],c=[];var u=l.createContext(null);function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then(function(e){return n.loading=!1,n.loaded=e,e}).catch(function(e){throw n.loading=!1,n.error=e,e}),n}function p(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach(function(r){var a=d(e[r]);a.loading?t.loading=!0:(t.loaded[r]=a.loaded,t.error=a.error),n.push(a.promise),a.promise.then(function(e){t.loaded[r]=e}).catch(function(e){t.error=e})})}catch(r){t.error=r}return t.promise=Promise.all(n).then(function(e){return t.loading=!1,e}).catch(function(e){throw t.loading=!1,e}),t}function f(e,t){return l.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function h(e,t){var d,p;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var h=i({loader:null,loading:null,delay:200,timeout:null,render:f,webpack:null,modules:null},t),g=null;function m(){return g||(g=e(h.loader)),g.promise}return s.push(m),"function"==typeof h.webpack&&c.push(function(){if((0,h.webpack)().every(function(e){return void 0!==e&&void 0!==n.m[e]}))return m()}),p=d=function(t){function n(n){var r;return o(a(a(r=t.call(this,n)||this)),"retry",function(){r.setState({error:null,loading:!0,timedOut:!1}),g=e(h.loader),r._loadModule()}),m(),r.state={error:g.error,pastDelay:!1,timedOut:!1,loading:g.loading,loaded:g.loaded},r}r(n,t),n.preload=function(){return m()};var i=n.prototype;return i.UNSAFE_componentWillMount=function(){this._loadModule()},i.componentDidMount=function(){this._mounted=!0},i._loadModule=function(){var e=this;if(this.context&&Array.isArray(h.modules)&&h.modules.forEach(function(t){e.context.report(t)}),g.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof h.delay&&(0===h.delay?this.setState({pastDelay:!0}):this._delay=setTimeout(function(){t({pastDelay:!0})},h.delay)),"number"==typeof h.timeout&&(this._timeout=setTimeout(function(){t({timedOut:!0})},h.timeout));var n=function(){t({error:g.error,loaded:g.loaded,loading:g.loading}),e._clearTimeouts()};g.promise.then(function(){return n(),null}).catch(function(e){return n(),null})}},i.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},i._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},i.render=function(){return this.state.loading||this.state.error?l.createElement(h.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?h.render(this.state.loaded,this.props):null},n}(l.Component),o(d,"contextType",u),p}function g(e){return h(d,e)}g.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return h(p,e)};var m=function(e){function t(){return e.apply(this,arguments)||this}return r(t,e),t.prototype.render=function(){return l.createElement(u.Provider,{value:{report:this.props.report}},l.Children.only(this.props.children))},t}(l.Component);function y(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then(function(){if(e.length)return y(e)})}g.Capture=m,g.preloadAll=function(){return new Promise(function(e,t){y(s).then(e,t)})},g.preloadReady=function(){return new Promise(function(e,t){y(c).then(e,e)})},e.exports=g},2831(e,t,n){"use strict";n.d(t,{u:()=>i,v:()=>l});var r=n(6347),a=n(8168),o=n(6540);function i(e,t,n){return void 0===n&&(n=[]),e.some(function(e){var a=e.path?(0,r.B6)(t,e):n.length?n[n.length-1].match:r.Ix.computeRootMatch(t);return a&&(n.push({route:e,match:a}),e.routes&&i(e.routes,t,n)),a}),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?o.createElement(r.dO,n,e.map(function(e,n){return o.createElement(r.qh,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,a.A)({},n,{},t,{route:e})):o.createElement(e.component,(0,a.A)({},n,t,{route:e}))}})})):null}},4625(e,t,n){"use strict";n.d(t,{I9:()=>d,Kd:()=>u,N_:()=>y,k2:()=>w});var r=n(6347),a=n(2892),o=n(6540),i=n(1513),l=n(8168),s=n(8587),c=n(1561),u=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.zR)(t.props),t}return(0,a.A)(t,e),t.prototype.render=function(){return o.createElement(r.Ix,{history:this.history,children:this.props.children})},t}(o.Component);var d=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.TM)(t.props),t}return(0,a.A)(t,e),t.prototype.render=function(){return o.createElement(r.Ix,{history:this.history,children:this.props.children})},t}(o.Component);var p=function(e,t){return"function"==typeof e?e(t):e},f=function(e,t){return"string"==typeof e?(0,i.yJ)(e,null,null,t):e},h=function(e){return e},g=o.forwardRef;void 0===g&&(g=h);var m=g(function(e,t){var n=e.innerRef,r=e.navigate,a=e.onClick,i=(0,s.A)(e,["innerRef","navigate","onClick"]),c=i.target,u=(0,l.A)({},i,{onClick:function(e){try{a&&a(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||c&&"_self"!==c||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return u.ref=h!==g&&t||n,o.createElement("a",u)});var y=g(function(e,t){var n=e.component,a=void 0===n?m:n,u=e.replace,d=e.to,y=e.innerRef,b=(0,s.A)(e,["component","replace","to","innerRef"]);return o.createElement(r.XZ.Consumer,null,function(e){e||(0,c.A)(!1);var n=e.history,r=f(p(d,e.location),e.location),s=r?n.createHref(r):"",m=(0,l.A)({},b,{href:s,navigate:function(){var t=p(d,e.location),r=(0,i.AO)(e.location)===(0,i.AO)(f(t));(u||r?n.replace:n.push)(t)}});return h!==g?m.ref=t||y:m.innerRef=y,o.createElement(a,m)})}),b=function(e){return e},v=o.forwardRef;void 0===v&&(v=b);var w=v(function(e,t){var n=e["aria-current"],a=void 0===n?"page":n,i=e.activeClassName,u=void 0===i?"active":i,d=e.activeStyle,h=e.className,g=e.exact,m=e.isActive,w=e.location,x=e.sensitive,k=e.strict,S=e.style,E=e.to,j=e.innerRef,_=(0,s.A)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return o.createElement(r.XZ.Consumer,null,function(e){e||(0,c.A)(!1);var n=w||e.location,i=f(p(E,n),n),s=i.pathname,C=s&&s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),L=C?(0,r.B6)(n.pathname,{path:C,exact:g,sensitive:x,strict:k}):null,A=!!(m?m(L,n):L),T="function"==typeof h?h(A):h,N="function"==typeof S?S(A):S;A&&(T=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter(function(e){return e}).join(" ")}(T,u),N=(0,l.A)({},N,d));var P=(0,l.A)({"aria-current":A&&a||null,className:T,style:N,to:i},_);return b!==v?P.ref=t||j:P.innerRef=j,o.createElement(y,P)})})},6347(e,t,n){"use strict";n.d(t,{B6:()=>k,Ix:()=>v,W6:()=>N,XZ:()=>b,dO:()=>A,qh:()=>S,zy:()=>P});var r=n(2892),a=n(6540),o=n(5556),i=n.n(o),l=n(1513),s=n(1561),c=n(8168),u=n(5302),d=n.n(u),p=(n(4363),n(8587)),f=(n(4146),1073741823),h="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:{};var g=a.createContext||function(e,t){var n,o,l="__create-react-context-"+function(){var e="__global_unique_id__";return h[e]=(h[e]||0)+1}()+"__",s=function(e){function n(){for(var t,n,r,a=arguments.length,o=new Array(a),i=0;i<a;i++)o[i]=arguments[i];return(t=e.call.apply(e,[this].concat(o))||this).emitter=(n=t.props.value,r=[],{on:function(e){r.push(e)},off:function(e){r=r.filter(function(t){return t!==e})},get:function(){return n},set:function(e,t){n=e,r.forEach(function(e){return e(n,t)})}}),t}(0,r.A)(n,e);var a=n.prototype;return a.getChildContext=function(){var e;return(e={})[l]=this.emitter,e},a.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,a=e.value;((o=r)===(i=a)?0!==o||1/o==1/i:o!=o&&i!=i)?n=0:(n="function"==typeof t?t(r,a):f,0!==(n|=0)&&this.emitter.set(e.value,n))}var o,i},a.render=function(){return this.props.children},n}(a.Component);s.childContextTypes=((n={})[l]=i().object.isRequired,n);var c=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){0!==((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}(0,r.A)(n,t);var a=n.prototype;return a.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?f:t},a.componentDidMount=function(){this.context[l]&&this.context[l].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?f:e},a.componentWillUnmount=function(){this.context[l]&&this.context[l].off(this.onUpdate)},a.getValue=function(){return this.context[l]?this.context[l].get():e},a.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(a.Component);return c.contextTypes=((o={})[l]=i().object,o),{Provider:s,Consumer:c}},m=function(e){var t=g();return t.displayName=e,t},y=m("Router-History"),b=m("Router"),v=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen(function(e){n._pendingLocation=e})),n}(0,r.A)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen(function(t){e._isMounted&&e.setState({location:t})})),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return a.createElement(b.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},a.createElement(y.Provider,{children:this.props.children||null,value:this.props.history}))},t}(a.Component);a.Component;a.Component;var w={},x=0;function k(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,a=n.exact,o=void 0!==a&&a,i=n.strict,l=void 0!==i&&i,s=n.sensitive,c=void 0!==s&&s;return[].concat(r).reduce(function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=w[n]||(w[n]={});if(r[e])return r[e];var a=[],o={regexp:d()(e,a,t),keys:a};return x<1e4&&(r[e]=o,x++),o}(n,{end:o,strict:l,sensitive:c}),a=r.regexp,i=r.keys,s=a.exec(e);if(!s)return null;var u=s[0],p=s.slice(1),f=e===u;return o&&!f?null:{path:n,url:"/"===n&&""===u?"/":u,isExact:f,params:i.reduce(function(e,t,n){return e[t.name]=p[n],e},{})}},null)}var S=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.A)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,function(t){t||(0,s.A)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?k(n.pathname,e.props):t.match,o=(0,c.A)({},t,{location:n,match:r}),i=e.props,l=i.children,u=i.component,d=i.render;return Array.isArray(l)&&function(e){return 0===a.Children.count(e)}(l)&&(l=null),a.createElement(b.Provider,{value:o},o.match?l?"function"==typeof l?l(o):l:u?a.createElement(u,o):d?d(o):null:"function"==typeof l?l(o):null)})},t}(a.Component);function E(e){return"/"===e.charAt(0)?e:"/"+e}function j(e,t){if(!e)return t;var n=E(e);return 0!==t.pathname.indexOf(n)?t:(0,c.A)({},t,{pathname:t.pathname.substr(n.length)})}function _(e){return"string"==typeof e?e:(0,l.AO)(e)}function C(e){return function(){(0,s.A)(!1)}}function L(){}a.Component;var A=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.A)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,function(t){t||(0,s.A)(!1);var n,r,o=e.props.location||t.location;return a.Children.forEach(e.props.children,function(e){if(null==r&&a.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?k(o.pathname,(0,c.A)({},e.props,{path:i})):t.match}}),r?a.cloneElement(n,{location:o,computedMatch:r}):null})},t}(a.Component);var T=a.useContext;function N(){return T(y)}function P(){return T(b).location}},1020(e,t,n){"use strict";var r=n(6540),a=Symbol.for("react.element"),o=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,l=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,n){var r,o={},c=null,u=null;for(r in void 0!==n&&(c=""+n),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)i.call(t,r)&&!s.hasOwnProperty(r)&&(o[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===o[r]&&(o[r]=t[r]);return{$$typeof:a,type:e,key:c,ref:u,props:o,_owner:l.current}}t.Fragment=o,t.jsx=c,t.jsxs=c},5287(e,t){"use strict";var n=Symbol.for("react.element"),r=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),l=Symbol.for("react.provider"),s=Symbol.for("react.context"),c=Symbol.for("react.forward_ref"),u=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),f=Symbol.iterator;var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,m={};function y(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||h}function b(){}function v(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||h}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=y.prototype;var w=v.prototype=new b;w.constructor=v,g(w,y.prototype),w.isPureReactComponent=!0;var x=Array.isArray,k=Object.prototype.hasOwnProperty,S={current:null},E={key:!0,ref:!0,__self:!0,__source:!0};function j(e,t,r){var a,o={},i=null,l=null;if(null!=t)for(a in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(i=""+t.key),t)k.call(t,a)&&!E.hasOwnProperty(a)&&(o[a]=t[a]);var s=arguments.length-2;if(1===s)o.children=r;else if(1<s){for(var c=Array(s),u=0;u<s;u++)c[u]=arguments[u+2];o.children=c}if(e&&e.defaultProps)for(a in s=e.defaultProps)void 0===o[a]&&(o[a]=s[a]);return{$$typeof:n,type:e,key:i,ref:l,props:o,_owner:S.current}}function _(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}var C=/\/+/g;function L(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(e){return t[e]})}(""+e.key):t.toString(36)}function A(e,t,a,o,i){var l=typeof e;"undefined"!==l&&"boolean"!==l||(e=null);var s=!1;if(null===e)s=!0;else switch(l){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case n:case r:s=!0}}if(s)return i=i(s=e),e=""===o?"."+L(s,0):o,x(i)?(a="",null!=e&&(a=e.replace(C,"$&/")+"/"),A(i,t,a,"",function(e){return e})):null!=i&&(_(i)&&(i=function(e,t){return{$$typeof:n,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,a+(!i.key||s&&s.key===i.key?"":(""+i.key).replace(C,"$&/")+"/")+e)),t.push(i)),1;if(s=0,o=""===o?".":o+":",x(e))for(var c=0;c<e.length;c++){var u=o+L(l=e[c],c);s+=A(l,t,a,u,i)}else if(u=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=f&&e[f]||e["@@iterator"])?e:null}(e),"function"==typeof u)for(e=u.call(e),c=0;!(l=e.next()).done;)s+=A(l=l.value,t,a,u=o+L(l,c++),i);else if("object"===l)throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return s}function T(e,t,n){if(null==e)return e;var r=[],a=0;return A(e,r,"","",function(e){return t.call(n,e,a++)}),r}function N(e){if(-1===e._status){var t=e._result;(t=t()).then(function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)},function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)}),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var P={current:null},R={transition:null},O={ReactCurrentDispatcher:P,ReactCurrentBatchConfig:R,ReactCurrentOwner:S};function D(){throw Error("act(...) is not supported in production builds of React.")}t.Children={map:T,forEach:function(e,t,n){T(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return T(e,function(){t++}),t},toArray:function(e){return T(e,function(e){return e})||[]},only:function(e){if(!_(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},t.Component=y,t.Fragment=a,t.Profiler=i,t.PureComponent=v,t.StrictMode=o,t.Suspense=u,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=O,t.act=D,t.cloneElement=function(e,t,r){if(null==e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var a=g({},e.props),o=e.key,i=e.ref,l=e._owner;if(null!=t){if(void 0!==t.ref&&(i=t.ref,l=S.current),void 0!==t.key&&(o=""+t.key),e.type&&e.type.defaultProps)var s=e.type.defaultProps;for(c in t)k.call(t,c)&&!E.hasOwnProperty(c)&&(a[c]=void 0===t[c]&&void 0!==s?s[c]:t[c])}var c=arguments.length-2;if(1===c)a.children=r;else if(1<c){s=Array(c);for(var u=0;u<c;u++)s[u]=arguments[u+2];a.children=s}return{$$typeof:n,type:e.type,key:o,ref:i,props:a,_owner:l}},t.createContext=function(e){return(e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:l,_context:e},e.Consumer=e},t.createElement=j,t.createFactory=function(e){var t=j.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:c,render:e}},t.isValidElement=_,t.lazy=function(e){return{$$typeof:p,_payload:{_status:-1,_result:e},_init:N}},t.memo=function(e,t){return{$$typeof:d,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=R.transition;R.transition={};try{e()}finally{R.transition=t}},t.unstable_act=D,t.useCallback=function(e,t){return P.current.useCallback(e,t)},t.useContext=function(e){return P.current.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e){return P.current.useDeferredValue(e)},t.useEffect=function(e,t){return P.current.useEffect(e,t)},t.useId=function(){return P.current.useId()},t.useImperativeHandle=function(e,t,n){return P.current.useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return P.current.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return P.current.useLayoutEffect(e,t)},t.useMemo=function(e,t){return P.current.useMemo(e,t)},t.useReducer=function(e,t,n){return P.current.useReducer(e,t,n)},t.useRef=function(e){return P.current.useRef(e)},t.useState=function(e){return P.current.useState(e)},t.useSyncExternalStore=function(e,t,n){return P.current.useSyncExternalStore(e,t,n)},t.useTransition=function(){return P.current.useTransition()},t.version="18.3.1"},6540(e,t,n){"use strict";e.exports=n(5287)},4848(e,t,n){"use strict";e.exports=n(1020)},7463(e,t){"use strict";function n(e,t){var n=e.length;e.push(t);e:for(;0<n;){var r=n-1>>>1,a=e[r];if(!(0<o(a,t)))break e;e[r]=t,e[n]=a,n=r}}function r(e){return 0===e.length?null:e[0]}function a(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length,i=a>>>1;r<i;){var l=2*(r+1)-1,s=e[l],c=l+1,u=e[c];if(0>o(s,n))c<a&&0>o(u,s)?(e[r]=u,e[c]=n,r=c):(e[r]=s,e[l]=n,r=l);else{if(!(c<a&&0>o(u,n)))break e;e[r]=u,e[c]=n,r=c}}}return t}function o(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}var c=[],u=[],d=1,p=null,f=3,h=!1,g=!1,m=!1,y="function"==typeof setTimeout?setTimeout:null,b="function"==typeof clearTimeout?clearTimeout:null,v="undefined"!=typeof setImmediate?setImmediate:null;function w(e){for(var t=r(u);null!==t;){if(null===t.callback)a(u);else{if(!(t.startTime<=e))break;a(u),t.sortIndex=t.expirationTime,n(c,t)}t=r(u)}}function x(e){if(m=!1,w(e),!g)if(null!==r(c))g=!0,R(k);else{var t=r(u);null!==t&&O(x,t.startTime-e)}}function k(e,n){g=!1,m&&(m=!1,b(_),_=-1),h=!0;var o=f;try{for(w(n),p=r(c);null!==p&&(!(p.expirationTime>n)||e&&!A());){var i=p.callback;if("function"==typeof i){p.callback=null,f=p.priorityLevel;var l=i(p.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?p.callback=l:p===r(c)&&a(c),w(n)}else a(c);p=r(c)}if(null!==p)var s=!0;else{var d=r(u);null!==d&&O(x,d.startTime-n),s=!1}return s}finally{p=null,f=o,h=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var S,E=!1,j=null,_=-1,C=5,L=-1;function A(){return!(t.unstable_now()-L<C)}function T(){if(null!==j){var e=t.unstable_now();L=e;var n=!0;try{n=j(!0,e)}finally{n?S():(E=!1,j=null)}}else E=!1}if("function"==typeof v)S=function(){v(T)};else if("undefined"!=typeof MessageChannel){var N=new MessageChannel,P=N.port2;N.port1.onmessage=T,S=function(){P.postMessage(null)}}else S=function(){y(T,0)};function R(e){j=e,E||(E=!0,S())}function O(e,n){_=y(function(){e(t.unstable_now())},n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){g||h||(g=!0,R(k))},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):C=0<e?Math.floor(1e3/e):5},t.unstable_getCurrentPriorityLevel=function(){return f},t.unstable_getFirstCallbackNode=function(){return r(c)},t.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var n=f;f=t;try{return e()}finally{f=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=function(){},t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=f;f=e;try{return t()}finally{f=n}},t.unstable_scheduleCallback=function(e,a,o){var i=t.unstable_now();switch("object"==typeof o&&null!==o?o="number"==typeof(o=o.delay)&&0<o?i+o:i:o=i,e){case 1:var l=-1;break;case 2:l=250;break;case 5:l=1073741823;break;case 4:l=1e4;break;default:l=5e3}return e={id:d++,callback:a,priorityLevel:e,startTime:o,expirationTime:l=o+l,sortIndex:-1},o>i?(e.sortIndex=o,n(u,e),null===r(c)&&e===r(u)&&(m?(b(_),_=-1):m=!0,O(x,o-i))):(e.sortIndex=l,n(c,e),g||h||(g=!0,R(k))),e},t.unstable_shouldYield=A,t.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}},9982(e,t,n){"use strict";e.exports=n(7463)},2833(e){e.exports=function(e,t,n,r){var a=n?n.call(r,e,t):void 0;if(void 0!==a)return!!a;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s<o.length;s++){var c=o[s];if(!l(c))return!1;var u=e[c],d=t[c];if(!1===(a=n?n.call(r,u,d,c):void 0)||void 0===a&&u!==d)return!1}return!0}},4784(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r});const r={title:"Doriath",tagline:"Self-hosted password and secrets vault. Per-user, per-team, audited.",favicon:"img/favicon.svg",url:"https://doriath.conduction.nl",baseUrl:"/",trailingSlash:!0,organizationName:"ConductionNL",projectName:"doriath",customFields:{appVersion:"0.1.3"},onBrokenLinks:"warn",staticDirectories:["/home/rubenlinde/nextcloud-docker-dev/workspace/server/apps-extra/doriath/docs/node_modules/@conduction/docusaurus-preset/static","static"],i18n:{defaultLocale:"en",locales:["en"],localeConfigs:{en:{label:"English"}},path:"i18n"},presets:[["classic",{docs:{path:"./",exclude:["**/node_modules/**","src/**"],sidebarPath:"/home/rubenlinde/nextcloud-docker-dev/workspace/server/apps-extra/doriath/docs/sidebars.js",editUrl:"https://github.com/ConductionNL/doriath/tree/development/docs/"},blog:!1,theme:{customCss:"/home/rubenlinde/nextcloud-docker-dev/workspace/server/apps-extra/doriath/docs/src/css/custom.css"},sitemap:{changefreq:null,priority:null,lastmod:"date",ignorePatterns:["/academy/tags/**","/nl/academy/tags/**","/en/academy/tags/**","/de/academy/tags/**","/fr/academy/tags/**","/page/**","/nl/page/**","/en/page/**","/de/page/**","/fr/page/**"],filename:"sitemap.xml"}}]],themes:["/home/rubenlinde/nextcloud-docker-dev/workspace/server/apps-extra/doriath/docs/node_modules/@conduction/docusaurus-preset/src/theme.js","@docusaurus/theme-mermaid"],themeConfig:{colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!0},navbar:{title:"Doriath",logo:{alt:"Doriath avatar",src:"img/logo.svg",srcDark:"img/logo-dark.svg"},items:[{type:"docSidebar",sidebarId:"tutorialSidebar",position:"left",label:"Documentation"},{href:"https://github.com/ConductionNL/doriath",label:"GitHub",position:"right"},{type:"localeDropdown",position:"right",dropdownItemsBefore:[],dropdownItemsAfter:[]}],hideOnScroll:!1},footer:{style:"dark",links:[{title:"Conduction",items:[{label:"About",href:"https://conduction.nl/about"},{label:"Open source",href:"https://conduction.nl/about#opensource"},{label:"Team",href:"https://conduction.nl/about#team"},{label:"ISO",href:"https://conduction.nl/iso"}]}],copyright:"Conduction B.V. \xb7 KvK 76741850 \xb7 BTW NL860784241B01 \xb7 IBAN NL51 ABNA 0868951550 \xb7 Lauriergracht 14h, 1016 RR Amsterdam \xb7 2026"},minigames:!1,footerBrand:null,legalLinks:{privacy:"https://www.conduction.nl/privacy",terms:"https://www.conduction.nl/terms",iso:"https://www.conduction.nl/iso"},image:"img/og-doriath.png",metadata:[{name:"twitter:site",content:"@ConductionNL"},{name:"twitter:card",content:"summary_large_image"},{property:"og:type",content:"website"}],prism:{theme:{plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},additionalLanguages:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},mermaid:{theme:{light:"default",dark:"dark"},options:{}},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},blog:{sidebar:{groupByYear:!0}},tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},headTags:[{tagName:"script",attributes:{type:"application/ld+json"},innerHTML:'{"@context":"https://schema.org","@type":"Organization","@id":"https://www.conduction.nl/#org","name":"Conduction B.V.","alternateName":"Conduction","url":"https://www.conduction.nl/","logo":"https://www.conduction.nl/img/brand/avatar-conduction-gold-on-white.svg","foundingDate":"2019","description":"Dutch open-source software company building EUPL-1.2 apps for the Nextcloud workspace.","address":{"@type":"PostalAddress","streetAddress":"Lauriergracht 14h","postalCode":"1016 RR","addressLocality":"Amsterdam","addressCountry":"NL"},"email":"info@conduction.nl","telephone":"+31-85-303-6840","taxID":"NL860784241B01","vatID":"NL860784241B01","identifier":{"@type":"PropertyValue","propertyID":"KvK","value":"76741850"},"sameAs":["https://codeberg.org/Conduction","https://www.linkedin.com/company/conduction/"]}',customElement:!1},{tagName:"script",attributes:{type:"application/ld+json"},innerHTML:'{"@context":"https://schema.org","@type":"WebSite","@id":"https://doriath.conduction.nl/#website","url":"https://doriath.conduction.nl/","name":"Doriath","publisher":{"@id":"https://www.conduction.nl/#org"},"inLanguage":["en"]}',customElement:!1}],plugins:[["/home/rubenlinde/nextcloud-docker-dev/workspace/server/apps-extra/doriath/docs/node_modules/@conduction/docusaurus-preset/src/plugins/ai-crawling.js",{}],["/home/rubenlinde/nextcloud-docker-dev/workspace/server/apps-extra/doriath/docs/node_modules/@conduction/docusaurus-preset/src/plugins/indexnow.js",{}],["/home/rubenlinde/nextcloud-docker-dev/workspace/server/apps-extra/doriath/docs/node_modules/@conduction/docusaurus-preset/src/plugins/features-page.js",{}]],onBrokenAnchors:"warn",markdown:{mermaid:!0,hooks:{onBrokenMarkdownImages:"warn",onBrokenMarkdownLinks:"warn"},format:"mdx",emoji:!0,mdx1Compat:{comments:!0,admonitions:!0,headingIds:!0},anchors:{maintainCase:!1}},baseUrlIssueBanner:!0,storage:{type:"localStorage",namespace:!1},future:{v4:{removeLegacyPostBuildHeadAttribute:!1,useCssCascadeLayers:!1,siteStorageNamespacing:!1,fasterByDefault:!1,mdx1CompatDisabledByDefault:!1},faster:{swcJsLoader:!1,swcJsMinimizer:!1,swcHtmlMinimizer:!1,lightningCssMinimizer:!1,mdxCrossCompilerCache:!1,rspackBundler:!1,rspackPersistentCache:!1,ssgWorkerThreads:!1,gitEagerVcs:!1},experimental_vcs:{},experimental_router:"browser"},onDuplicateRoutes:"warn",scripts:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1}},8168(e,t,n){"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(null,arguments)}n.d(t,{A:()=>r})},2892(e,t,n){"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function a(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{A:()=>a})},8587(e,t,n){"use strict";function r(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}n.d(t,{A:()=>r})},8215(e,t,n){"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n)}else for(n in e)e[n]&&(a&&(a+=" "),a+=n);return a}n.d(t,{A:()=>a});const a=function(){for(var e,t,n=0,a="",o=arguments.length;n<o;n++)(e=arguments[n])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}},4876(e,t,n){"use strict";n.d(t,{My:()=>C,f4:()=>ne});var r,a,o,i,l,s,c,u=n(6540),d=n(8215),p=Object.create,f=Object.defineProperty,h=Object.defineProperties,g=Object.getOwnPropertyDescriptor,m=Object.getOwnPropertyDescriptors,y=Object.getOwnPropertyNames,b=Object.getOwnPropertySymbols,v=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty,x=Object.prototype.propertyIsEnumerable,k=(e,t,n)=>t in e?f(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,S=(e,t)=>{for(var n in t||(t={}))w.call(t,n)&&k(e,n,t[n]);if(b)for(var n of b(t))x.call(t,n)&&k(e,n,t[n]);return e},E=(e,t)=>h(e,m(t)),j=(e,t)=>{var n={};for(var r in e)w.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&b)for(var r of b(e))t.indexOf(r)<0&&x.call(e,r)&&(n[r]=e[r]);return n},_=(r={"../../node_modules/.pnpm/prismjs@1.29.0_patch_hash=vrxx3pzkik6jpmgpayxfjunetu/node_modules/prismjs/prism.js"(e,t){var n=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var a,o;switch(n=n||{},r.util.type(t)){case"Object":if(o=r.util.objId(t),n[o])return n[o];for(var i in a={},n[o]=a,t)t.hasOwnProperty(i)&&(a[i]=e(t[i],n));return a;case"Array":return o=r.util.objId(t),n[o]?n[o]:(a=[],n[o]=a,t.forEach(function(t,r){a[r]=e(t,n)}),a);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var a=e.classList;if(a.contains(t))return!0;if(a.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var a in t)n[a]=t[a];return n},insertBefore:function(e,t,n,a){var o=(a=a||r.languages)[e],i={};for(var l in o)if(o.hasOwnProperty(l)){if(l==t)for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);n.hasOwnProperty(l)||(i[l]=o[l])}var c=a[e];return a[e]=i,r.languages.DFS(r.languages,function(t,n){n===c&&t!=e&&(this[t]=i)}),i},DFS:function e(t,n,a,o){o=o||{};var i=r.util.objId;for(var l in t)if(t.hasOwnProperty(l)){n.call(t,l,t[l],a||l);var s=t[l],c=r.util.type(s);"Object"!==c||o[i(s)]?"Array"!==c||o[i(s)]||(o[i(s)]=!0,e(s,n,l,o)):(o[i(s)]=!0,e(s,n,null,o))}}},plugins:{},highlight:function(e,t,n){var o={code:e,grammar:t,language:n};if(r.hooks.run("before-tokenize",o),!o.grammar)throw new Error('The language "'+o.language+'" has no grammar.');return o.tokens=r.tokenize(o.code,o.grammar),r.hooks.run("after-tokenize",o),a.stringify(r.util.encode(o.tokens),o.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var a=new l;return s(a,a.head,e),i(e,a,t,a.head,0),function(e){for(var t=[],n=e.head.next;n!==e.tail;)t.push(n.value),n=n.next;return t}(a)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var a,o=0;a=n[o++];)a(t)}},Token:a};function a(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function o(e,t,n,r){e.lastIndex=t;var a=e.exec(n);if(a&&r&&a[1]){var o=a[1].length;a.index+=o,a[0]=a[0].slice(o)}return a}function i(e,t,n,l,u,d){for(var p in n)if(n.hasOwnProperty(p)&&n[p]){var f=n[p];f=Array.isArray(f)?f:[f];for(var h=0;h<f.length;++h){if(d&&d.cause==p+","+h)return;var g=f[h],m=g.inside,y=!!g.lookbehind,b=!!g.greedy,v=g.alias;if(b&&!g.pattern.global){var w=g.pattern.toString().match(/[imsuy]*$/)[0];g.pattern=RegExp(g.pattern.source,w+"g")}for(var x=g.pattern||g,k=l.next,S=u;k!==t.tail&&!(d&&S>=d.reach);S+=k.value.length,k=k.next){var E=k.value;if(t.length>e.length)return;if(!(E instanceof a)){var j,_=1;if(b){if(!(j=o(x,S,e,y))||j.index>=e.length)break;var C=j.index,L=j.index+j[0].length,A=S;for(A+=k.value.length;C>=A;)A+=(k=k.next).value.length;if(S=A-=k.value.length,k.value instanceof a)continue;for(var T=k;T!==t.tail&&(A<L||"string"==typeof T.value);T=T.next)_++,A+=T.value.length;_--,E=e.slice(S,A),j.index-=S}else if(!(j=o(x,0,E,y)))continue;C=j.index;var N=j[0],P=E.slice(0,C),R=E.slice(C+N.length),O=S+E.length;d&&O>d.reach&&(d.reach=O);var D=k.prev;if(P&&(D=s(t,D,P),S+=P.length),c(t,D,_),k=s(t,D,new a(p,m?r.tokenize(N,m):N,v,N)),R&&s(t,k,R),_>1){var I={cause:p+","+h,reach:O};i(e,t,n,k.prev,S,I),d&&I.reach>d.reach&&(d.reach=I.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function c(e,t,n){for(var r=t.next,a=0;a<n&&r!==e.tail;a++)r=r.next;t.next=r,r.prev=t,e.length-=a}return a.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var a="";return t.forEach(function(t){a+=e(t,n)}),a}var o={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},i=t.alias;i&&(Array.isArray(i)?Array.prototype.push.apply(o.classes,i):o.classes.push(i)),r.hooks.run("wrap",o);var l="";for(var s in o.attributes)l+=" "+s+'="'+(o.attributes[s]||"").replace(/"/g,""")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+l+">"+o.content+"</"+o.tag+">"},r}();t.exports=n,n.default=n}},function(){return a||(0,r[y(r)[0]])((a={exports:{}}).exports,a),a.exports}),C=((e,t,n)=>(n=null!=e?p(v(e)):{},((e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of y(t))w.call(e,a)||a===n||f(e,a,{get:()=>t[a],enumerable:!(r=g(t,a))||r.enumerable});return e})(!t&&e&&e.__esModule?n:f(n,"default",{value:e,enumerable:!0}),e)))(_());C.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},C.languages.markup.tag.inside["attr-value"].inside.entity=C.languages.markup.entity,C.languages.markup.doctype.inside["internal-subset"].inside=C.languages.markup,C.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),Object.defineProperty(C.languages.markup.tag,"addInlined",{value:function(e,t){var n;(t=((n=((n={})["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:C.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i,{"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}}))["language-"+t]={pattern:/[\s\S]+/,inside:C.languages[t]},{}))[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,function(){return e}),"i"),lookbehind:!0,greedy:!0,inside:n},C.languages.insertBefore("markup","cdata",t)}}),Object.defineProperty(C.languages.markup.tag,"addAttribute",{value:function(e,t){C.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:C.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),C.languages.html=C.languages.markup,C.languages.mathml=C.languages.markup,C.languages.svg=C.languages.markup,C.languages.xml=C.languages.extend("markup",{}),C.languages.ssml=C.languages.xml,C.languages.atom=C.languages.xml,C.languages.rss=C.languages.xml,o=C,i={pattern:/\\[\\(){}[\]^$+*?|.]/,alias:"escape"},s="(?:[^\\\\-]|"+(l=/\\(?:x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]+\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/).source+")",s=RegExp(s+"-"+s),c={pattern:/(<|')[^<>']+(?=[>']$)/,lookbehind:!0,alias:"variable"},o.languages.regex={"char-class":{pattern:/((?:^|[^\\])(?:\\\\)*)\[(?:[^\\\]]|\\[\s\S])*\]/,lookbehind:!0,inside:{"char-class-negation":{pattern:/(^\[)\^/,lookbehind:!0,alias:"operator"},"char-class-punctuation":{pattern:/^\[|\]$/,alias:"punctuation"},range:{pattern:s,inside:{escape:l,"range-punctuation":{pattern:/-/,alias:"operator"}}},"special-escape":i,"char-set":{pattern:/\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},escape:l}},"special-escape":i,"char-set":{pattern:/\.|\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},backreference:[{pattern:/\\(?![123][0-7]{2})[1-9]/,alias:"keyword"},{pattern:/\\k<[^<>']+>/,alias:"keyword",inside:{"group-name":c}}],anchor:{pattern:/[$^]|\\[ABbGZz]/,alias:"function"},escape:l,group:[{pattern:/\((?:\?(?:<[^<>']+>|'[^<>']+'|[>:]|<?[=!]|[idmnsuxU]+(?:-[idmnsuxU]+)?:?))?/,alias:"punctuation",inside:{"group-name":c}},{pattern:/\)/,alias:"punctuation"}],quantifier:{pattern:/(?:[+*?]|\{\d+(?:,\d*)?\})[?+]?/,alias:"number"},alternation:{pattern:/\|/,alias:"keyword"}},C.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},C.languages.javascript=C.languages.extend("clike",{"class-name":[C.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),C.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,C.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:C.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:C.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:C.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:C.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:C.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),C.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:C.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),C.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),C.languages.markup&&(C.languages.markup.tag.addInlined("script","javascript"),C.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),C.languages.js=C.languages.javascript,C.languages.actionscript=C.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/}),C.languages.actionscript["class-name"].alias="function",delete C.languages.actionscript.parameter,delete C.languages.actionscript["literal-property"],C.languages.markup&&C.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:C.languages.markup}}),function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(C),function(e){var t=e.languages.javadoclike={parameter:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*@(?:arg|arguments|param)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(t,"addSupport",{value:function(t,n){(t="string"==typeof t?[t]:t).forEach(function(t){var r=function(e){e.inside||(e.inside={}),e.inside.rest=n},a="doc-comment";if(o=e.languages[t]){var o,i=o[a];if((i=i||(o=e.languages.insertBefore(t,"comment",{"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,lookbehind:!0,alias:"comment"}}))[a])instanceof RegExp&&(i=o[a]={pattern:i}),Array.isArray(i))for(var l=0,s=i.length;l<s;l++)i[l]instanceof RegExp&&(i[l]={pattern:i[l]}),r(i[l]);else r(i)}})}}),t.addSupport(["java","javascript","php"],t)}(C),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;(t=(e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css,e.languages.markup))&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(C),function(e){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,n=(t=(e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+t.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[t,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}}),{pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0}),{pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0});e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|RebeccaPurple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,number:n})}(C),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source}),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,function(){return r}).replace(/<<value>>/g,function(){return e});return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,function(){return r})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,function(){return r}).replace(/<<key>>/g,function(){return"(?:"+a+"|"+o+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(C),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,function(){return t}),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,function(){return r}),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source,i=(e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach(function(t){["url","bold","italic","strike","code-snippet"].forEach(function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])})}),e.hooks.add("after-tokenize",function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var a,o=t[n];"code"!==o.type?e(o.content):(a=o.content[1],o=o.content[3],a&&o&&"code-language"===a.type&&"code-block"===o.type&&"string"==typeof a.content&&(a=a.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),a="language-"+(a=(/[a-z][\w-]*/i.exec(a)||[""])[0].toLowerCase()),o.alias?"string"==typeof o.alias?o.alias=[o.alias,a]:o.alias.push(a):o.alias=[a]))}}(e.tokens)}),e.hooks.add("wrap",function(t){if("code-block"===t.type){for(var n="",r=0,a=t.classes.length;r<a;r++){var o=t.classes[r];if(o=/language-(.+)/.exec(o)){n=o[1];break}}var c,u=e.languages[n];u?t.content=e.highlight(t.content.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,function(e,t){var n;return"#"===(t=t.toLowerCase())[0]?(n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),s(n)):l[t]||e}),u,n):n&&"none"!==n&&e.plugins.autoloader&&(c="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random()),t.attributes.id=c,e.plugins.autoloader.loadLanguages(n,function(){var t=document.getElementById(c);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}}),RegExp(e.languages.markup.tag.pattern.source,"gi")),l={amp:"&",lt:"<",gt:">",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(C),C.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:C.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},C.hooks.add("after-tokenize",function(e){if("graphql"===e.language)for(var t=e.tokens.filter(function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type}),n=0;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var a=[];if(d(["definition-mutation","punctuation"])&&"("===u(1).content){n+=2;var o=p(/^\($/,/^\)$/);if(-1===o)continue;for(;n<o;n++){var i=u(0);"variable"===i.type&&(f(i,"variable-input"),a.push(i.content))}n=o+1}if(d(["punctuation","property-query"])&&"{"===u(0).content&&(n++,f(u(0),"property-mutation"),0<a.length)){var l=p(/^\{$/,/^\}$/);if(-1!==l)for(var s=n;s<l;s++){var c=t[s];"variable"===c.type&&0<=a.indexOf(c.content)&&f(c,"variable-input")}}}}function u(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=u(n+t);if(!r||r.type!==e[n])return}return 1}function p(e,r){for(var a=1,o=n;o<t.length;o++){var i=t[o],l=i.content;if("punctuation"===i.type&&"string"==typeof l)if(e.test(l))a++;else if(r.test(l)&&0===--a)return o}return-1}function f(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}}),C.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(t,n,r){return t={code:t,grammar:n,language:r},e.hooks.run("before-tokenize",t),t.tokens=e.tokenize(t.code,t.grammar),e.hooks.run("after-tokenize",t),t.tokens}function s(t,n,i){var s=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),c=0,u={},d=(s=l(s.map(function(e){if("string"==typeof e)return e;var n,r;for(e=e.content;-1!==t.indexOf((r=c++,n="___"+i.toUpperCase()+"_"+r+"___")););return u[n]=e,n}).join(""),n,i),Object.keys(u));return c=0,function t(n){for(var o=0;o<n.length;o++){if(c>=d.length)return;var i,s,p,f,h,g,m,y=n[o];"string"==typeof y||"string"==typeof y.content?(i=d[c],-1!==(m=(g="string"==typeof y?y:y.content).indexOf(i))&&(++c,s=g.substring(0,m),h=u[i],p=void 0,(f={})["interpolation-punctuation"]=a,3===(f=e.tokenize(h,f)).length&&((p=[1,1]).push.apply(p,l(f[1],e.languages.javascript,"javascript")),f.splice.apply(f,p)),p=new e.Token("interpolation",f,r.alias,h),f=g.substring(m+i.length),h=[],s&&h.push(s),h.push(p),f&&(t(g=[f]),h.push.apply(h,g)),"string"==typeof y?(n.splice.apply(n,[o,1].concat(h)),o+=h.length-1):y.content=h)):(m=y.content,Array.isArray(m)?t(m):t([m]))}}(s),new e.Token(i,s,"language-"+i,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var c={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function u(e){return"string"==typeof e?e:Array.isArray(e)?e.map(u).join(""):u(e.content)}e.hooks.add("after-tokenize",function(t){t.language in c&&function t(n){for(var r=0,a=n.length;r<a;r++){var o,i,l,c=n[r];"string"!=typeof c&&(o=c.content,Array.isArray(o)?"template-string"===c.type?(c=o[1],3===o.length&&"string"!=typeof c&&"embedded-code"===c.type&&(i=u(c),c=c.alias,c=Array.isArray(c)?c[0]:c,l=e.languages[c])&&(o[1]=s(i,l,c))):t(o):"string"!=typeof o&&t([o]))}}(t.tokens)})}(C),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(C),function(e){var t=e.languages.javascript,n=/\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source,r="(@(?:arg|argument|param|property)\\s+(?:"+n+"\\s+)?)";e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp(r+/(?:(?!\s)[$\w\xA0-\uFFFF.])+(?=\s|$)/.source),lookbehind:!0,inside:{punctuation:/\./}}}),e.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(r+/\[(?:(?!\s)[$\w\xA0-\uFFFF.])+(?:=[^[\]]+)?\](?=\s|$)/.source),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF\.]+/,lookbehind:!0,inside:{punctuation:/\./}},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:t,alias:"language-javascript"},punctuation:/[=[\]]/}},"class-name":[{pattern:RegExp(/(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\s+(?:<TYPE>\s+)?)[A-Z]\w*(?:\.[A-Z]\w*)*/.source.replace(/<TYPE>/g,function(){return n})),lookbehind:!0,inside:{punctuation:/\./}},{pattern:RegExp("(@[a-z]+\\s+)"+n),lookbehind:!0,inside:{string:t.string,number:t.number,boolean:t.boolean,keyword:e.languages.typescript.keyword,operator:/=>|\.\.\.|[&|?:*]/,punctuation:/[.,;=<>{}()[\]]/}}],example:{pattern:/(@example\s+(?!\s))(?:[^@\s]|\s+(?!\s))+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,lookbehind:!0,inside:{code:{pattern:/^([\t ]*(?:\*\s*)?)\S.*$/m,lookbehind:!0,inside:t,alias:"language-javascript"}}}}),e.languages.javadoclike.addSupport("javascript",e.languages.jsdoc)}(C),function(e){e.languages.flow=e.languages.extend("javascript",{}),e.languages.insertBefore("flow","keyword",{type:[{pattern:/\b(?:[Bb]oolean|Function|[Nn]umber|[Ss]tring|[Ss]ymbol|any|mixed|null|void)\b/,alias:"class-name"}]}),e.languages.flow["function-variable"].pattern=/(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/i,delete e.languages.flow.parameter,e.languages.insertBefore("flow","operator",{"flow-punctuation":{pattern:/\{\||\|\}/,alias:"punctuation"}}),Array.isArray(e.languages.flow.keyword)||(e.languages.flow.keyword=[e.languages.flow.keyword]),e.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:Class|declare|opaque|type)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:Diff|Enum|Exact|Keys|ObjMap|PropertyType|Record|Shape|Subtype|Supertype|await)\b(?!\$)/,lookbehind:!0})}(C),C.languages.n4js=C.languages.extend("javascript",{keyword:/\b(?:Array|any|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/}),C.languages.insertBefore("n4js","constant",{annotation:{pattern:/@+\w+/,alias:"operator"}}),C.languages.n4jsd=C.languages.n4js,function(e){function t(e,t){return RegExp(e.replace(/<ID>/g,function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source}),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?<ID>/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r<n.length;r++){var a=n[r],o=e.languages.javascript[a];a=(o="RegExp"===e.util.type(o)?e.languages.javascript[a]={pattern:o}:o).inside||{};(o.inside=a)["maybe-class-name"]=/^[A-Z][\s\S]*/}}(C),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,a=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function o(e,t){return e=e.replace(/<S>/g,function(){return n}).replace(/<BRACES>/g,function(){return r}).replace(/<SPREAD>/g,function(){return a}),RegExp(e,t)}function i(t){for(var n=[],r=0;r<t.length;r++){var a=t[r],o=!1;"string"!=typeof a&&("tag"===a.type&&a.content[0]&&"tag"===a.content[0].type?"</"===a.content[0].content[0].content?0<n.length&&n[n.length-1].tagName===l(a.content[0].content[1])&&n.pop():"/>"!==a.content[a.content.length-1].content&&n.push({tagName:l(a.content[0].content[1]),openedBraces:0}):0<n.length&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:0<n.length&&0<n[n.length-1].openedBraces&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&0<n.length&&0===n[n.length-1].openedBraces&&(o=l(a),r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(o+=l(t[r+1]),t.splice(r+1,1)),0<r&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(o=l(t[r-1])+o,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",o,null,o)),a.content&&"string"!=typeof a.content&&i(a.content)}}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var l=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(l).join(""):""};e.hooks.add("after-tokenize",function(e){"jsx"!==e.language&&"tsx"!==e.language||i(e.tokens)})}(C),function(e){var t=e.util.clone(e.languages.typescript);(t=(e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"],e.languages.tsx.tag)).pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+t.pattern.source+")",t.pattern.flags),t.lookbehind=!0}(C),C.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp(/(^|[^"#])/.source+"(?:"+/"(?:\\(?:\((?:[^()]|\([^()]*\))*\)|\r\n|[^(])|[^\\\r\n"])*"/.source+"|"+/"""(?:\\(?:\((?:[^()]|\([^()]*\))*\)|[^(])|[^\\"]|"(?!""))*"""/.source+")"+/(?!["#])/.source),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp(/(^|[^"#])(#+)/.source+"(?:"+/"(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|\r\n|[^#])|[^\\\r\n])*?"/.source+"|"+/"""(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|[^#])|[^\\])*?"""/.source+")\\2"),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp(/#/.source+"(?:"+/(?:elseif|if)\b/.source+"(?:[ \t]*"+/(?:![ \t]*)?(?:\b\w+\b(?:[ \t]*\((?:[^()]|\([^()]*\))*\))?|\((?:[^()]|\([^()]*\))*\))(?:[ \t]*(?:&&|\|\|))?/.source+")+|"+/(?:else|endif)\b/.source+")"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},C.languages.swift["string-literal"].forEach(function(e){e.inside.interpolation.inside=C.languages.swift}),function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"];var t={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:e.languages.kotlin}};e.languages.insertBefore("kotlin","string",{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:"multiline",inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:t},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:"singleline",inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:t},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete e.languages.kotlin.string,e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}}),e.languages.kt=e.languages.kotlin,e.languages.kts=e.languages.kotlin}(C),C.languages.c=C.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),C.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),C.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},C.languages.c.string],char:C.languages.c.char,comment:C.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:C.languages.c}}}}),C.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete C.languages.c.boolean,C.languages.objectivec=C.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete C.languages.objectivec["class-name"],C.languages.objc=C.languages.objectivec,C.languages.reason=C.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),C.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete C.languages.reason.function,function(e){for(var t=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|<self>)*\*\//.source,n=0;n<2;n++)t=t.replace(/<self>/g,function(){return t});t=t.replace(/<self>/g,function(){return/[^\s\S]/.source}),e.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<<?=?|>>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(C),C.languages.go=C.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),C.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete C.languages.go["class-name"],function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,function(){return t.source});e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,function(){return t.source})),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,function(){return n})+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(C),C.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},C.languages.python["string-interpolation"].inside.interpolation.inside.rest=C.languages.python,C.languages.py=C.languages.python,C.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},C.languages.webmanifest=C.languages.json;((e,t)=>{for(var n in t)f(e,n,{get:t[n],enumerable:!0})})({},{dracula:()=>L,duotoneDark:()=>A,duotoneLight:()=>T,github:()=>N,gruvboxMaterialDark:()=>Q,gruvboxMaterialLight:()=>Z,jettwaveDark:()=>H,jettwaveLight:()=>G,nightOwl:()=>P,nightOwlLight:()=>R,oceanicNext:()=>I,okaidia:()=>F,oneDark:()=>W,oneLight:()=>V,palenight:()=>M,shadesOfPurple:()=>z,synthwave84:()=>B,ultramin:()=>$,vsDark:()=>U,vsLight:()=>q});var L={plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},A={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]},T={plain:{backgroundColor:"#faf8f5",color:"#728fcb"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#b6ad9a"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#063289"}},{types:["property","function"],style:{color:"#b29762"}},{types:["tag-id","selector","atrule-id"],style:{color:"#2d2006"}},{types:["attr-name"],style:{color:"#896724"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule"],style:{color:"#728fcb"}},{types:["placeholder","variable"],style:{color:"#93abdc"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#896724"}}]},N={plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},P={plain:{color:"#d6deeb",backgroundColor:"#011627"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(99, 119, 119)",fontStyle:"italic"}},{types:["string","url"],style:{color:"rgb(173, 219, 103)"}},{types:["variable"],style:{color:"rgb(214, 222, 235)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation"],style:{color:"rgb(199, 146, 234)"}},{types:["selector","doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(255, 203, 139)"}},{types:["tag","operator","keyword"],style:{color:"rgb(127, 219, 202)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["property"],style:{color:"rgb(128, 203, 196)"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}}]},R={plain:{color:"#403f53",backgroundColor:"#FBFBFB"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(72, 118, 214)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(152, 159, 177)",fontStyle:"italic"}},{types:["string","builtin","char","constant","url"],style:{color:"rgb(72, 118, 214)"}},{types:["variable"],style:{color:"rgb(201, 103, 101)"}},{types:["number"],style:{color:"rgb(170, 9, 130)"}},{types:["punctuation"],style:{color:"rgb(153, 76, 195)"}},{types:["function","selector","doctype"],style:{color:"rgb(153, 76, 195)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(17, 17, 17)"}},{types:["tag"],style:{color:"rgb(153, 76, 195)"}},{types:["operator","property","keyword","namespace"],style:{color:"rgb(12, 150, 155)"}},{types:["boolean"],style:{color:"rgb(188, 84, 84)"}}]},O="#c5a5c5",D="#8dc891",I={plain:{backgroundColor:"#282c34",color:"#ffffff"},styles:[{types:["attr-name"],style:{color:O}},{types:["attr-value"],style:{color:D}},{types:["comment","block-comment","prolog","doctype","cdata","shebang"],style:{color:"#999999"}},{types:["property","number","function-name","constant","symbol","deleted"],style:{color:"#5a9bcf"}},{types:["boolean"],style:{color:"#ff8b50"}},{types:["tag"],style:{color:"#fc929e"}},{types:["string"],style:{color:D}},{types:["punctuation"],style:{color:D}},{types:["selector","char","builtin","inserted"],style:{color:"#D8DEE9"}},{types:["function"],style:{color:"#79b6f2"}},{types:["operator","entity","url","variable"],style:{color:"#d7deea"}},{types:["keyword"],style:{color:O}},{types:["atrule","class-name"],style:{color:"#FAC863"}},{types:["important"],style:{fontWeight:"400"}},{types:["bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}}]},F={plain:{color:"#f8f8f2",backgroundColor:"#272822"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"#f92672",fontStyle:"italic"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"#8292a2",fontStyle:"italic"}},{types:["string","url"],style:{color:"#a6e22e"}},{types:["variable"],style:{color:"#f8f8f2"}},{types:["number"],style:{color:"#ae81ff"}},{types:["builtin","char","constant","function","class-name"],style:{color:"#e6db74"}},{types:["punctuation"],style:{color:"#f8f8f2"}},{types:["selector","doctype"],style:{color:"#a6e22e",fontStyle:"italic"}},{types:["tag","operator","keyword"],style:{color:"#66d9ef"}},{types:["boolean"],style:{color:"#ae81ff"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)",opacity:.7}},{types:["tag","property"],style:{color:"#f92672"}},{types:["attr-name"],style:{color:"#a6e22e !important"}},{types:["doctype"],style:{color:"#8292a2"}},{types:["rule"],style:{color:"#e6db74"}}]},M={plain:{color:"#bfc7d5",backgroundColor:"#292d3e"},styles:[{types:["comment"],style:{color:"rgb(105, 112, 152)",fontStyle:"italic"}},{types:["string","inserted"],style:{color:"rgb(195, 232, 141)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation","selector"],style:{color:"rgb(199, 146, 234)"}},{types:["variable"],style:{color:"rgb(191, 199, 213)"}},{types:["class-name","attr-name"],style:{color:"rgb(255, 203, 107)"}},{types:["tag","deleted"],style:{color:"rgb(255, 85, 114)"}},{types:["operator"],style:{color:"rgb(137, 221, 255)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["keyword"],style:{fontStyle:"italic"}},{types:["doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}},{types:["url"],style:{color:"rgb(221, 221, 221)"}}]},z={plain:{color:"#9EFEFF",backgroundColor:"#2D2A55"},styles:[{types:["changed"],style:{color:"rgb(255, 238, 128)"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)"}},{types:["comment"],style:{color:"rgb(179, 98, 255)",fontStyle:"italic"}},{types:["punctuation"],style:{color:"rgb(255, 255, 255)"}},{types:["constant"],style:{color:"rgb(255, 98, 140)"}},{types:["string","url"],style:{color:"rgb(165, 255, 144)"}},{types:["variable"],style:{color:"rgb(255, 238, 128)"}},{types:["number","boolean"],style:{color:"rgb(255, 98, 140)"}},{types:["attr-name"],style:{color:"rgb(255, 180, 84)"}},{types:["keyword","operator","property","namespace","tag","selector","doctype"],style:{color:"rgb(255, 157, 0)"}},{types:["builtin","char","constant","function","class-name"],style:{color:"rgb(250, 208, 0)"}}]},B={plain:{backgroundColor:"linear-gradient(to bottom, #2a2139 75%, #34294f)",backgroundImage:"#34294f",color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"},styles:[{types:["comment","block-comment","prolog","doctype","cdata"],style:{color:"#495495",fontStyle:"italic"}},{types:["punctuation"],style:{color:"#ccc"}},{types:["tag","attr-name","namespace","number","unit","hexcode","deleted"],style:{color:"#e2777a"}},{types:["property","selector"],style:{color:"#72f1b8",textShadow:"0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475"}},{types:["function-name"],style:{color:"#6196cc"}},{types:["boolean","selector-id","function"],style:{color:"#fdfdfd",textShadow:"0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975"}},{types:["class-name","maybe-class-name","builtin"],style:{color:"#fff5f6",textShadow:"0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75"}},{types:["constant","symbol"],style:{color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"}},{types:["important","atrule","keyword","selector-class"],style:{color:"#f4eee4",textShadow:"0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575"}},{types:["string","char","attr-value","regex","variable"],style:{color:"#f87c32"}},{types:["parameter"],style:{fontStyle:"italic"}},{types:["entity","url"],style:{color:"#67cdcc"}},{types:["operator"],style:{color:"ffffffee"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["entity"],style:{cursor:"help"}},{types:["inserted"],style:{color:"green"}}]},$={plain:{color:"#282a2e",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(197, 200, 198)"}},{types:["string","number","builtin","variable"],style:{color:"rgb(150, 152, 150)"}},{types:["class-name","function","tag","attr-name"],style:{color:"rgb(40, 42, 46)"}}]},U={plain:{color:"#9CDCFE",backgroundColor:"#1E1E1E"},styles:[{types:["prolog"],style:{color:"rgb(0, 0, 128)"}},{types:["comment"],style:{color:"rgb(106, 153, 85)"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"rgb(86, 156, 214)"}},{types:["number","inserted"],style:{color:"rgb(181, 206, 168)"}},{types:["constant"],style:{color:"rgb(100, 102, 149)"}},{types:["attr-name","variable"],style:{color:"rgb(156, 220, 254)"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"rgb(206, 145, 120)"}},{types:["selector"],style:{color:"rgb(215, 186, 125)"}},{types:["tag"],style:{color:"rgb(78, 201, 176)"}},{types:["tag"],languages:["markup"],style:{color:"rgb(86, 156, 214)"}},{types:["punctuation","operator"],style:{color:"rgb(212, 212, 212)"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"rgb(220, 220, 170)"}},{types:["class-name"],style:{color:"rgb(78, 201, 176)"}},{types:["char"],style:{color:"rgb(209, 105, 105)"}}]},q={plain:{color:"#000000",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(0, 128, 0)"}},{types:["builtin"],style:{color:"rgb(0, 112, 193)"}},{types:["number","variable","inserted"],style:{color:"rgb(9, 134, 88)"}},{types:["operator"],style:{color:"rgb(0, 0, 0)"}},{types:["constant","char"],style:{color:"rgb(129, 31, 63)"}},{types:["tag"],style:{color:"rgb(128, 0, 0)"}},{types:["attr-name"],style:{color:"rgb(255, 0, 0)"}},{types:["deleted","string"],style:{color:"rgb(163, 21, 21)"}},{types:["changed","punctuation"],style:{color:"rgb(4, 81, 165)"}},{types:["function","keyword"],style:{color:"rgb(0, 0, 255)"}},{types:["class-name"],style:{color:"rgb(38, 127, 153)"}}]},H={plain:{color:"#f8fafc",backgroundColor:"#011627"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#569CD6"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#f8fafc"}},{types:["attr-name","variable"],style:{color:"#9CDCFE"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#cbd5e1"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#D4D4D4"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#7dd3fc"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},G={plain:{color:"#0f172a",backgroundColor:"#f1f5f9"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#0c4a6e"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#0f172a"}},{types:["attr-name","variable"],style:{color:"#0c4a6e"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#64748b"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#475569"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#0e7490"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},W={plain:{backgroundColor:"hsl(220, 13%, 18%)",color:"hsl(220, 14%, 71%)",textShadow:"0 1px rgba(0, 0, 0, 0.3)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(220, 10%, 40%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(220, 14%, 71%)"}},{types:["attr-name","class-name","maybe-class-name","boolean","constant","number","atrule"],style:{color:"hsl(29, 54%, 61%)"}},{types:["keyword"],style:{color:"hsl(286, 60%, 67%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(355, 65%, 65%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value"],style:{color:"hsl(95, 38%, 62%)"}},{types:["variable","operator","function"],style:{color:"hsl(207, 82%, 66%)"}},{types:["url"],style:{color:"hsl(187, 47%, 55%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(220, 14%, 71%)"}}]},V={plain:{backgroundColor:"hsl(230, 1%, 98%)",color:"hsl(230, 8%, 24%)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(230, 4%, 64%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(230, 8%, 24%)"}},{types:["attr-name","class-name","boolean","constant","number","atrule"],style:{color:"hsl(35, 99%, 36%)"}},{types:["keyword"],style:{color:"hsl(301, 63%, 40%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(5, 74%, 59%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value","punctuation"],style:{color:"hsl(119, 34%, 47%)"}},{types:["variable","operator","function"],style:{color:"hsl(221, 87%, 60%)"}},{types:["url"],style:{color:"hsl(198, 99%, 37%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(230, 8%, 24%)"}}]},Q={plain:{color:"#ebdbb2",backgroundColor:"#292828"},styles:[{types:["imports","class-name","maybe-class-name","constant","doctype","builtin","function"],style:{color:"#d8a657"}},{types:["property-access"],style:{color:"#7daea3"}},{types:["tag"],style:{color:"#e78a4e"}},{types:["attr-name","char","url","regex"],style:{color:"#a9b665"}},{types:["attr-value","string"],style:{color:"#89b482"}},{types:["comment","prolog","cdata","operator","inserted"],style:{color:"#a89984"}},{types:["delimiter","boolean","keyword","selector","important","atrule","property","variable","deleted"],style:{color:"#ea6962"}},{types:["entity","number","symbol"],style:{color:"#d3869b"}}]},Z={plain:{color:"#654735",backgroundColor:"#f9f5d7"},styles:[{types:["delimiter","boolean","keyword","selector","important","atrule","property","variable","deleted"],style:{color:"#af2528"}},{types:["imports","class-name","maybe-class-name","constant","doctype","builtin"],style:{color:"#b4730e"}},{types:["string","attr-value"],style:{color:"#477a5b"}},{types:["property-access"],style:{color:"#266b79"}},{types:["function","attr-name","char","url"],style:{color:"#72761e"}},{types:["tag"],style:{color:"#b94c07"}},{types:["comment","prolog","cdata","operator","inserted"],style:{color:"#a89984"}},{types:["entity","number","symbol"],style:{color:"#924f79"}}]},K=/\r\n|\r|\n/,Y=e=>{0===e.length?e.push({types:["plain"],content:"\n",empty:!0}):1===e.length&&""===e[0].content&&(e[0].content="\n",e[0].empty=!0)},X=(e,t)=>{const n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},J=e=>{const t=[[]],n=[e],r=[0],a=[e.length];let o=0,i=0,l=[];const s=[l];for(;i>-1;){for(;(o=r[i]++)<a[i];){let e,c=t[i];const u=n[i][o];if("string"==typeof u?(c=i>0?c:["plain"],e=u):(c=X(c,u.type),u.alias&&(c=X(c,u.alias)),e=u.content),"string"!=typeof e){i++,t.push(c),n.push(e),r.push(0),a.push(e.length);continue}const d=e.split(K),p=d.length;l.push({types:c,content:d[0]});for(let t=1;t<p;t++)Y(l),s.push(l=[]),l.push({types:c,content:d[t]})}i--,t.pop(),n.pop(),r.pop(),a.pop()}return Y(l),s},ee=(e,t)=>{const{plain:n}=e,r=e.styles.reduce((e,n)=>{const{languages:r,style:a}=n;return r&&!r.includes(t)||n.types.forEach(t=>{const n=S(S({},e[t]),a);e[t]=n}),e},{});return r.root=n,r.plain=E(S({},n),{backgroundColor:void 0}),r},te=({children:e,language:t,code:n,theme:r,prism:a})=>{const o=t.toLowerCase(),i=ee(r,o),l=(e=>(0,u.useCallback)(t=>{var n=t,{className:r,style:a,line:o}=n,i=j(n,["className","style","line"]);const l=E(S({},i),{className:(0,d.A)("token-line",r)});return"object"==typeof e&&"plain"in e&&(l.style=e.plain),"object"==typeof a&&(l.style=S(S({},l.style||{}),a)),l},[e]))(i),s=(e=>{const t=(0,u.useCallback)(({types:t,empty:n})=>{if(null!=e)return 1===t.length&&"plain"===t[0]?null!=n?{display:"inline-block"}:void 0:1===t.length&&null!=n?e[t[0]]:Object.assign(null!=n?{display:"inline-block"}:{},...t.map(t=>e[t]))},[e]);return(0,u.useCallback)(e=>{var n=e,{token:r,className:a,style:o}=n,i=j(n,["token","className","style"]);const l=E(S({},i),{className:(0,d.A)("token",...r.types,a),children:r.content,style:t(r)});return null!=o&&(l.style=S(S({},l.style||{}),o)),l},[t])})(i),c=(({prism:e,code:t,grammar:n,language:r})=>(0,u.useMemo)(()=>{if(null==n)return J([t]);const a={code:t,grammar:n,language:r,tokens:[]};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(t,n),e.hooks.run("after-tokenize",a),J(a.tokens)},[t,n,r,e]))({prism:a,language:o,code:n,grammar:a.languages[o]});return e({tokens:c,className:`prism-code language-${o}`,style:null!=i?i.root:{},getLineProps:l,getTokenProps:s})},ne=e=>(0,u.createElement)(te,E(S({},e),{prism:e.prism||C,theme:e.theme||U,code:e.code,language:e.language}))},5066(e,t,n){"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n)}else for(n in e)e[n]&&(a&&(a+=" "),a+=n);return a}n.d(t,{A:()=>a});const a=function(){for(var e,t,n=0,a="",o=arguments.length;n<o;n++)(e=arguments[n])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}},1561(e,t,n){"use strict";n.d(t,{A:()=>a});var r="Invariant failed";function a(e,t){if(!e)throw new Error(r)}},1635(e,t,n){"use strict";n.r(t),n.d(t,{__addDisposableResource:()=>D,__assign:()=>o,__asyncDelegator:()=>j,__asyncGenerator:()=>E,__asyncValues:()=>_,__await:()=>S,__awaiter:()=>h,__classPrivateFieldGet:()=>P,__classPrivateFieldIn:()=>O,__classPrivateFieldSet:()=>R,__createBinding:()=>m,__decorate:()=>l,__disposeResources:()=>F,__esDecorate:()=>c,__exportStar:()=>y,__extends:()=>a,__generator:()=>g,__importDefault:()=>N,__importStar:()=>T,__makeTemplateObject:()=>C,__metadata:()=>f,__param:()=>s,__propKey:()=>d,__read:()=>v,__rest:()=>i,__rewriteRelativeImportExtension:()=>M,__runInitializers:()=>u,__setFunctionName:()=>p,__spread:()=>w,__spreadArray:()=>k,__spreadArrays:()=>x,__values:()=>b,default:()=>z});var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e},o.apply(this,arguments)};function i(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n}function l(e,t,n,r){var a,o=arguments.length,i=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(i=(o<3?a(i):o>3?a(t,n,i):a(t,n))||i);return o>3&&i&&Object.defineProperty(t,n,i),i}function s(e,t){return function(n,r){t(n,r,e)}}function c(e,t,n,r,a,o){function i(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var l,s=r.kind,c="getter"===s?"get":"setter"===s?"set":"value",u=!t&&e?r.static?e:e.prototype:null,d=t||(u?Object.getOwnPropertyDescriptor(u,r.name):{}),p=!1,f=n.length-1;f>=0;f--){var h={};for(var g in r)h[g]="access"===g?{}:r[g];for(var g in r.access)h.access[g]=r.access[g];h.addInitializer=function(e){if(p)throw new TypeError("Cannot add initializers after decoration has completed");o.push(i(e||null))};var m=(0,n[f])("accessor"===s?{get:d.get,set:d.set}:d[c],h);if("accessor"===s){if(void 0===m)continue;if(null===m||"object"!=typeof m)throw new TypeError("Object expected");(l=i(m.get))&&(d.get=l),(l=i(m.set))&&(d.set=l),(l=i(m.init))&&a.unshift(l)}else(l=i(m))&&("field"===s?a.unshift(l):d[c]=l)}u&&Object.defineProperty(u,r.name,d),p=!0}function u(e,t,n){for(var r=arguments.length>2,a=0;a<t.length;a++)n=r?t[a].call(e,n):t[a].call(e);return r?n:void 0}function d(e){return"symbol"==typeof e?e:"".concat(e)}function p(e,t,n){return"symbol"==typeof t&&(t=t.description?"[".concat(t.description,"]"):""),Object.defineProperty(e,"name",{configurable:!0,value:n?"".concat(n," ",t):t})}function f(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function h(e,t,n,r){return new(n||(n=Promise))(function(a,o){function i(e){try{s(r.next(e))}catch(t){o(t)}}function l(e){try{s(r.throw(e))}catch(t){o(t)}}function s(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(i,l)}s((r=r.apply(e,t||[])).next())})}function g(e,t){var n,r,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return i.next=l(0),i.throw=l(1),i.return=l(2),"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function l(l){return function(s){return function(l){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,l[0]&&(o=0)),o;)try{if(n=1,r&&(a=2&l[0]?r.return:l[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,l[1])).done)return a;switch(r=0,a&&(l=[2&l[0],a.value]),l[0]){case 0:case 1:a=l;break;case 4:return o.label++,{value:l[1],done:!1};case 5:o.label++,r=l[1],l=[0];continue;case 7:l=o.ops.pop(),o.trys.pop();continue;default:if(!(a=o.trys,(a=a.length>0&&a[a.length-1])||6!==l[0]&&2!==l[0])){o=0;continue}if(3===l[0]&&(!a||l[1]>a[0]&&l[1]<a[3])){o.label=l[1];break}if(6===l[0]&&o.label<a[1]){o.label=a[1],a=l;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(l);break}a[2]&&o.ops.pop(),o.trys.pop();continue}l=t.call(e,o)}catch(s){l=[6,s],r=0}finally{n=a=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}([l,s])}}}var m=Object.create?function(e,t,n,r){void 0===r&&(r=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,a)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]};function y(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||m(t,e,n)}function b(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function v(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,a,o=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)i.push(r.value)}catch(l){a={error:l}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(a)throw a.error}}return i}function w(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(v(arguments[t]));return e}function x(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var r=Array(e),a=0;for(t=0;t<n;t++)for(var o=arguments[t],i=0,l=o.length;i<l;i++,a++)r[a]=o[i];return r}function k(e,t,n){if(n||2===arguments.length)for(var r,a=0,o=t.length;a<o;a++)!r&&a in t||(r||(r=Array.prototype.slice.call(t,0,a)),r[a]=t[a]);return e.concat(r||Array.prototype.slice.call(t))}function S(e){return this instanceof S?(this.v=e,this):new S(e)}function E(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,a=n.apply(e,t||[]),o=[];return r=Object.create(("function"==typeof AsyncIterator?AsyncIterator:Object).prototype),i("next"),i("throw"),i("return",function(e){return function(t){return Promise.resolve(t).then(e,c)}}),r[Symbol.asyncIterator]=function(){return this},r;function i(e,t){a[e]&&(r[e]=function(t){return new Promise(function(n,r){o.push([e,t,n,r])>1||l(e,t)})},t&&(r[e]=t(r[e])))}function l(e,t){try{(n=a[e](t)).value instanceof S?Promise.resolve(n.value.v).then(s,c):u(o[0][2],n)}catch(r){u(o[0][3],r)}var n}function s(e){l("next",e)}function c(e){l("throw",e)}function u(e,t){e(t),o.shift(),o.length&&l(o[0][0],o[0][1])}}function j(e){var t,n;return t={},r("next"),r("throw",function(e){throw e}),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,a){t[r]=e[r]?function(t){return(n=!n)?{value:S(e[r](t)),done:!1}:a?a(t):t}:a}}function _(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=b(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise(function(r,a){(function(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)})(r,a,(t=e[n](t)).done,t.value)})}}}function C(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var L=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t},A=function(e){return A=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},A(e)};function T(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=A(e),r=0;r<n.length;r++)"default"!==n[r]&&m(t,e,n[r]);return L(t,e),t}function N(e){return e&&e.__esModule?e:{default:e}}function P(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)}function R(e,t,n,r,a){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!a)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!a:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?a.call(e,n):a?a.value=n:t.set(e,n),n}function O(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)}function D(e,t,n){if(null!=t){if("object"!=typeof t&&"function"!=typeof t)throw new TypeError("Object expected.");var r,a;if(n){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");r=t[Symbol.asyncDispose]}if(void 0===r){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");r=t[Symbol.dispose],n&&(a=r)}if("function"!=typeof r)throw new TypeError("Object not disposable.");a&&(r=function(){try{a.call(this)}catch(e){return Promise.reject(e)}}),e.stack.push({value:t,dispose:r,async:n})}else n&&e.stack.push({async:!0});return t}var I="function"==typeof SuppressedError?SuppressedError:function(e,t,n){var r=new Error(n);return r.name="SuppressedError",r.error=e,r.suppressed=t,r};function F(e){function t(t){e.error=e.hasError?new I(t,e.error,"An error was suppressed during disposal."):t,e.hasError=!0}var n,r=0;return function a(){for(;n=e.stack.pop();)try{if(!n.async&&1===r)return r=0,e.stack.push(n),Promise.resolve().then(a);if(n.dispose){var o=n.dispose.call(n.value);if(n.async)return r|=2,Promise.resolve(o).then(a,function(e){return t(e),a()})}else r|=1}catch(i){t(i)}if(1===r)return e.hasError?Promise.reject(e.error):Promise.resolve();if(e.hasError)throw e.error}()}function M(e,t){return"string"==typeof e&&/^\.\.?\//.test(e)?e.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(e,n,r,a,o){return n?t?".jsx":".js":!r||a&&o?r+a+"."+o.toLowerCase()+"js":e}):e}const z={__extends:a,__assign:o,__rest:i,__decorate:l,__param:s,__esDecorate:c,__runInitializers:u,__propKey:d,__setFunctionName:p,__metadata:f,__awaiter:h,__generator:g,__createBinding:m,__exportStar:y,__values:b,__read:v,__spread:w,__spreadArrays:x,__spreadArray:k,__await:S,__asyncGenerator:E,__asyncDelegator:j,__asyncValues:_,__makeTemplateObject:C,__importStar:T,__importDefault:N,__classPrivateFieldGet:P,__classPrivateFieldSet:R,__classPrivateFieldIn:O,__addDisposableResource:D,__disposeResources:F,__rewriteRelativeImportExtension:M}},2654(e){"use strict";e.exports={}},4054(e){"use strict";e.exports=JSON.parse('{"/features/-1d2":{"__comp":"4081bc5c","__context":{"plugin":"f622ed5e"},"data":"af516ec7"},"/docs/-7e4":{"__comp":"5e95c892","__context":{"plugin":"aba21aa0"}},"/docs/-305":{"__comp":"a7bd4aaa","__props":"11b43341"},"/docs/-940":{"__comp":"a94703ab"},"/docs/ARCHITECTURE/-34e":{"__comp":"17896441","content":"1e9767c5"},"/docs/category/admin-guide/-bc9":{"__comp":"14eb3368","__props":"8cb5fad5"},"/docs/category/tutorials/-ae9":{"__comp":"14eb3368","__props":"af75b968"},"/docs/category/user-guide/-a58":{"__comp":"14eb3368","__props":"b1abb4d6"},"/docs/DESIGN-REFERENCES/-7fb":{"__comp":"17896441","content":"3b3e214a"},"/docs/FEATURES/-fcf":{"__comp":"17896441","content":"6f7f7b1d"},"/docs/intro/-224":{"__comp":"17896441","content":"2e5b4b03"},"/docs/tutorials/admin/admin-settings/-944":{"__comp":"17896441","content":"922e3df9"},"/docs/tutorials/user/first-launch/-391":{"__comp":"17896441","content":"ec6d3eb8"},"/-2e1":{"__comp":"c4f5d8e4","__context":{"plugin":"a7456010"},"config":"5e9f5e1a"}}')}},e=>{e.O(0,[1869],()=>{return t=8600,e(e.s=t);var t});e.O()}]); \ No newline at end of file diff --git a/docs/build/assets/js/main.90d140f6.js.LICENSE.txt b/docs/build/assets/js/main.90d140f6.js.LICENSE.txt deleted file mode 100644 index 647fcb459..000000000 --- a/docs/build/assets/js/main.90d140f6.js.LICENSE.txt +++ /dev/null @@ -1,51 +0,0 @@ -/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress - * @license MIT */ - -/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -/** - * @license React - * react-jsx-runtime.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -/** - * @license React - * scheduler.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -/** @license React v16.13.1 - * react-is.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ diff --git a/docs/build/assets/js/runtime~main.d453d9db.js b/docs/build/assets/js/runtime~main.d453d9db.js deleted file mode 100644 index 3c707ca55..000000000 --- a/docs/build/assets/js/runtime~main.d453d9db.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var e,a,r,t,c,f={},o={};function d(e){var a=o[e];if(void 0!==a)return a.exports;var r=o[e]={id:e,loaded:!1,exports:{}};return f[e].call(r.exports,r,r.exports,d),r.loaded=!0,r.exports}d.m=f,d.c=o,e=[],d.O=(a,r,t,c)=>{if(!r){var f=1/0;for(i=0;i<e.length;i++){for(var[r,t,c]=e[i],o=!0,b=0;b<r.length;b++)(!1&c||f>=c)&&Object.keys(d.O).every(e=>d.O[e](r[b]))?r.splice(b--,1):(o=!1,c<f&&(f=c));if(o){e.splice(i--,1);var n=t();void 0!==n&&(a=n)}}return a}c=c||0;for(var i=e.length;i>0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[r,t,c]},d.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return d.d(a,{a:a}),a},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,d.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var c=Object.create(null);d.r(c);var f={};a=a||[null,r({}),r([]),r(r)];for(var o=2&t&&e;("object"==typeof o||"function"==typeof o)&&!~a.indexOf(o);o=r(o))Object.getOwnPropertyNames(o).forEach(a=>f[a]=()=>e[a]);return f.default=()=>e,d.d(c,f),c},d.d=(e,a)=>{for(var r in a)d.o(a,r)&&!d.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:a[r]})},d.f={},d.e=e=>Promise.all(Object.keys(d.f).reduce((a,r)=>(d.f[r](e,a),a),[])),d.u=e=>"assets/js/"+({931:"4081bc5c",1235:"a7456010",1645:"af516ec7",2076:"common",2256:"11b43341",2634:"c4f5d8e4",4673:"8cb5fad5",5359:"ec6d3eb8",5680:"2e5b4b03",5742:"aba21aa0",6687:"af75b968",6969:"14eb3368",7098:"a7bd4aaa",8336:"6f7f7b1d",8401:"17896441",9011:"922e3df9",9048:"a94703ab",9062:"f622ed5e",9348:"1e9767c5",9366:"3b3e214a",9647:"5e95c892",9705:"b1abb4d6"}[e]||e)+"."+{165:"6fcb797c",253:"d8f5fb6d",384:"3370efe6",399:"c76183a6",536:"d9657a10",685:"51378b69",697:"e1117f89",743:"b8acf669",786:"6a9c60f0",931:"cbc1d1e5",1235:"be9c64ae",1301:"9989ee43",1513:"b9d94836",1645:"8a98155b",1795:"d6fd3594",1844:"905a2cb5",2014:"8390c3fa",2076:"f3191396",2130:"0859056b",2237:"a578a662",2256:"62e03792",2438:"17b7ef55",2555:"3c26d2ab",2634:"8954aaa4",2665:"7c31be5b",3049:"85912d79",3088:"5821fe72",3436:"9d21bd6b",3593:"502efe50",3674:"e152f57e",3723:"d568e688",3872:"f1271916",3923:"5f9e9fdc",4045:"327cc9f2",4219:"077e2f86",4673:"ace0548f",4728:"e5d8a853",4737:"c12ce803",4787:"47c183b9",5359:"ca081994",5438:"e7e887c8",5680:"fe9dff7a",5692:"58c0cdc6",5742:"3b844950",6246:"0bfcb39b",6288:"53f1fe4a",6402:"14cd02a1",6678:"7929a5db",6687:"38286f67",6735:"f24050f0",6969:"5faa8c56",7005:"e6d836d3",7059:"6e411ffe",7098:"581d97bf",7180:"6d1c8d44",7563:"d0e0f454",7928:"62dee32a",8007:"cfe7f045",8119:"c4eabbab",8320:"93852659",8336:"64f02222",8363:"c84dffc7",8401:"ebddda61",8646:"4b2e4233",9011:"9aa2bb8d",9048:"0bd9f570",9062:"84a45866",9261:"0f038ba8",9299:"3bf1c0a1",9301:"212450e5",9348:"f53ee4bf",9366:"b3e3211e",9557:"f19bf2ef",9647:"67c48228",9705:"c28c5ac9"}[e]+".js",d.miniCssF=e=>{},d.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},c="doriath-docs:",d.l=(e,a,r,f)=>{if(t[e])t[e].push(a);else{var o,b;if(void 0!==r)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var l=n[i];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==c+r){o=l;break}}o||(b=!0,(o=document.createElement("script")).charset="utf-8",d.nc&&o.setAttribute("nonce",d.nc),o.setAttribute("data-webpack",c+r),o.src=e),t[e]=[a];var u=(a,r)=>{o.onerror=o.onload=null,clearTimeout(s);var c=t[e];if(delete t[e],o.parentNode&&o.parentNode.removeChild(o),c&&c.forEach(e=>e(r)),a)return a(r)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=u.bind(null,o.onerror),o.onload=u.bind(null,o.onload),b&&document.head.appendChild(o)}},d.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.p="/",d.gca=function(e){return e={17896441:"8401","4081bc5c":"931",a7456010:"1235",af516ec7:"1645",common:"2076","11b43341":"2256",c4f5d8e4:"2634","8cb5fad5":"4673",ec6d3eb8:"5359","2e5b4b03":"5680",aba21aa0:"5742",af75b968:"6687","14eb3368":"6969",a7bd4aaa:"7098","6f7f7b1d":"8336","922e3df9":"9011",a94703ab:"9048",f622ed5e:"9062","1e9767c5":"9348","3b3e214a":"9366","5e95c892":"9647",b1abb4d6:"9705"}[e]||e,d.p+d.u(e)},(()=>{var e={5354:0,1869:0};d.f.j=(a,r)=>{var t=d.o(e,a)?e[a]:void 0;if(0!==t)if(t)r.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var c=new Promise((r,c)=>t=e[a]=[r,c]);r.push(t[2]=c);var f=d.p+d.u(a),o=new Error;d.l(f,r=>{if(d.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var c=r&&("load"===r.type?"missing":r.type),f=r&&r.target&&r.target.src;o.message="Loading chunk "+a+" failed.\n("+c+": "+f+")",o.name="ChunkLoadError",o.type=c,o.request=f,t[1](o)}},"chunk-"+a,a)}},d.O.j=a=>0===e[a];var a=(a,r)=>{var t,c,[f,o,b]=r,n=0;if(f.some(a=>0!==e[a])){for(t in o)d.o(o,t)&&(d.m[t]=o[t]);if(b)var i=b(d)}for(a&&a(r);n<f.length;n++)c=f[n],d.o(e,c)&&e[c]&&e[c][0](),e[c]=0;return d.O(i)},r=globalThis.webpackChunkdoriath_docs=globalThis.webpackChunkdoriath_docs||[];r.forEach(a.bind(null,0)),r.push=a.bind(null,r.push.bind(r))})()})(); \ No newline at end of file diff --git a/docs/build/docs/ARCHITECTURE/index.html b/docs/build/docs/ARCHITECTURE/index.html deleted file mode 100644 index 4a970deeb..000000000 --- a/docs/build/docs/ARCHITECTURE/index.html +++ /dev/null @@ -1,282 +0,0 @@ -<!doctype html> -<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-ARCHITECTURE" data-has-hydrated="false"> -<head> -<meta charset="UTF-8"> -<meta name="generator" content="Docusaurus v3.10.1"> -<title data-rh="true">Doriath — Architecture & Data Model | Doriath - - - - - - - - -

Doriath — Architecture & Data Model

-

1. Overview​

-

Doriath is an encrypted secrets manager for Nextcloud — a password manager and key store for users and applications. It stores secrets (passwords, API keys, tokens, certificates) encrypted at rest using RSA-4096 public-key cryptography, with private keys protected by AES-256 encryption derived from a user's master password. A private Certificate Authority (root + intermediate) signs all user and application certificates.

-

Architecture Pattern​

-
┌─────────────────────────────────────────────────────────────┐
│ Doriath Frontend (Vue 2 + Pinia) │
│ - Lock screen (master password entry) │
│ - Vault: secrets list with folder tree │
│ - Secret detail views (by type) │
│ - Sharing UI (user, link, request) │
│ - Key generator │
│ - Dashboard (KPI cards, vault health) │
│ - Admin settings (CA health, app management) │
│ - User settings (session timeout, notifications) │
└──────────────┬──────────────────────────────────────────────┘
│ REST API calls (Nextcloud session + X-Vault-Password)
┌──────────────▼──────────────────────────────────────────────┐
│ Doriath PHP Backend │
│ - Controllers: Secrets, EncryptionSuites, Applications, │
│ Sharing, KeyGenerator, Settings │
│ - Services: EncryptionService, CertificateAuthorityService,│
│ SecretService, SharingService, MigrationService │
│ - Entities: Doctrine ORM with Nextcloud migrations │
│ - Encryption: OpenSSL (RSA-4096 + AES-256) │
└──────────────┬──────────────────────────────────────────────┘
│ Doctrine ORM
┌──────────────▼──────────────────────────────────────────────┐
│ PostgreSQL Database │
│ - Own tables (ISchemaWrapper migrations) │
│ - Encrypted fields: private keys (AES), secret values (RSA)│
│ - Unencrypted fields: names, URLs, metadata │
└─────────────────────────────────────────────────────────────┘
-

Doriath owns all its database tables — it does NOT use OpenRegister. This is an explicit exception to the org-wide ADR-001, justified by the security requirements of field-level encryption control and the need to eliminate intermediary services from the data path. See ADR-001.

-

2. Standards Research​

-

Before defining our encryption architecture and data model, we evaluated multiple standards across cryptography, key management, and password security.

-

2.1 Standards Evaluated​

-
StandardTypeCoverageMaturityRelevance
X.509 / RFC 5280International (IETF)Certificate format, CA chains, certificate revocation, extensionsVery mature (since 1988)HIGH — defines certificate structure for our private CA
PKCS#1 / RFC 8017International (IETF)RSA encryption and signature schemes, OAEP paddingVery matureHIGH — RSA encryption of secrets
PKCS#8 / RFC 5958International (IETF)Private key storage format, encrypted private key wrappingVery matureHIGH — AES-encrypted private key storage
PKCS#10 / RFC 2986International (IETF)Certificate Signing Request (CSR) formatVery matureHIGH — application registration via CSR
NIST SP 800-57US GovernmentKey management lifecycle, key sizes, algorithm selectionCurrent (Rev. 5, 2020)HIGH — RSA-4096 and AES-256 recommendations
NIST SP 800-63BUS GovernmentAuthenticator assurance levels, memorized secret requirementsCurrent (Rev. 4 draft)HIGH — master password strength policy
OWASP Password StorageIndustry (OWASP)Password hashing, KDF selection (Argon2id, bcrypt, PBKDF2)Active, regularly updatedHIGH — Argon2id for link share KDF
OWASP Cryptographic StorageIndustry (OWASP)Encryption at rest, key management, algorithm selectionActiveHIGH — encryption architecture validation
zxcvbnIndustry (Dropbox)Password strength estimation, entropy-based scoring (0–4)Mature, widely adoptedHIGH — master password strength meter
Argon2 / RFC 9106International (IETF)Memory-hard KDF: Argon2d, Argon2i, Argon2idStandardized 2021HIGH — link share snapshot encryption
WebAuthn / FIDO2International (W3C)Passwordless authentication, hardware key supportMature, growing adoptionLOW — future: passwordless vault unlock
Schema.orgInternational (W3C)Structured data vocabularyVery matureLOW — no standard types for secrets/credentials
-

2.2 Design Principle: Security First, Standards-Based​

-
-

All cryptographic operations use established standards via OpenSSL. No custom cryptography. The master password never touches the database.

-
-

This means:

-
    -
  • RSA encryption follows PKCS#1 v1.5 / OAEP padding via OpenSSL
  • -
  • Private keys are stored in PKCS#8 PEM format, AES-256 encrypted
  • -
  • Certificates follow X.509 v3 format, signed by the private CA intermediate
  • -
  • CSR processing follows PKCS#10 for application registration
  • -
  • Key derivation for link shares uses Argon2id (memory-hard, RFC 9106)
  • -
  • Master password strength is validated using zxcvbn entropy scoring aligned with NIST SP 800-63B
  • -
-

2.3 Key Findings​

-
    -
  1. -

    X.509 / RFC 5280 defines the certificate format Doriath uses for its private CA. The root certificate (20-year lifetime) signs an intermediate certificate (3-year lifetime), which in turn signs user and application certificates. This two-tier CA structure follows PKI best practice — the root key is used rarely, limiting exposure.

    -
  2. -
  3. -

    NIST SP 800-57 recommends RSA-4096 for protection beyond 2031 (>128-bit security strength). AES-256 provides 256-bit security strength. Both exceed NIST's minimum recommendations for sensitive data protection. Key sizes in Doriath are only allowed to increase, never decrease.

    -
  4. -
  5. -

    NIST SP 800-63B defines memorized secret (password) requirements: minimum 8 characters (we require 12), no composition rules (we use entropy-based scoring instead), and blocklist checking. Our zxcvbn-based approach aligns with NIST's shift from complexity rules to entropy measurement.

    -
  6. -
  7. -

    OWASP Password Storage Cheat Sheet recommends Argon2id as the first choice for password hashing / key derivation. We use Argon2id for link share snapshot encryption (deriving an AES key from the link password). For master password → AES key derivation, we use a similar KDF approach.

    -
  8. -
  9. -

    PKCS#10 (CSR) enables applications to register with Doriath by submitting a Certificate Signing Request containing their public key. Doriath signs the public key with the CA intermediate and never stores the application's private key — the application manages its own key externally. This is standard PKI practice for distributed systems.

    -
  10. -
  11. -

    RSA chunking constraint (PKCS#1): RSA-4096 can encrypt at most ~500 bytes per operation (key size in bytes − padding overhead). Secrets larger than this limit must be chunked. This is a known limitation documented in ADR-003.

    -
  12. -
  13. -

    zxcvbn scores passwords on a 0–4 scale: 0 = too guessable, 1 = very guessable, 2 = somewhat guessable, 3 = safely unguessable (resists online attacks, ~10^8 guesses), 4 = very unguessable (resists offline attacks, ~10^10 guesses). Doriath requires score ≥ 3 by default, configurable up to 4 by admins.

    -
  14. -
  15. -

    No applicable Schema.org types — Schema.org has no standard vocabulary for secrets, credentials, or vault entries. Doriath entities do not carry schema.org type annotations, unlike other Conduction apps that model semantic data.

    -
  16. -
-

3. Data Model Decisions​

-

3.1 Standards Hierarchy​

-
LayerStandardPurpose
CryptographyRSA (PKCS#1), AES-256, OpenSSLEncryption of secrets and private keys
Certificate formatX.509 v3 (RFC 5280), PKCS#8, PKCS#10CA certificates, key storage, CSR processing
Key derivationArgon2id (RFC 9106)Link share password → AES key derivation
Password policyNIST SP 800-63B + zxcvbnMaster password strength enforcement
Key managementNIST SP 800-57Key size selection, lifecycle management
Nextcloud nativeOCP interfacesUsers, sessions, notifications, search, files
-

3.2 Entity Definitions​

-

EncryptionSuite​

-

The cryptographic identity of a user or application. Holds a public certificate (for encrypting secrets) and an AES-encrypted private key (for decrypting them). See encryption-suites spec for full requirements.

-
AspectDecisionRationale
StandardX.509 v3 certificate + PKCS#8 private keyIndustry-standard PKI formats
OwnershipPolymorphic: owner_type (user | application) + owner_idSingle table, single query path — see ADR-002
Key sizeRSA-4096 minimum (only allowed to increase)NIST SP 800-57 recommendation for long-term protection
Private key protectionAES-256 encrypted with master password derived keyMaster password never stored — see ADR-003
Certificate DNDefault DN fields + owner-specific CNSee certificate DN section below
-

Core properties:

-
PropertyTypeEncryptedStandardNotes
idUUIDNo—Primary key
owner_typeenum: user, applicationNoADR-002Polymorphic ownership
owner_idstringNo—Nextcloud user ID or Application ID
certificatetext (PEM)NoX.509 v3Public certificate signed by CA intermediate
private_keytext (PEM)Yes (AES-256)PKCS#8Encrypted with master password derived key
statusenum: active, revoked, compromisedNoX.509 CRL conceptLifecycle state
revoked_atdatetimeNo—Audit: when revoked
revoked_reasonstringNoX.509 CRL reasonAudit: why revoked
revoked_bystringNo—Audit: who revoked
reinstated_atdatetimeNo—Audit: when reinstated
reinstated_bystringNo—Audit: who reinstated
created_atdatetimeNo——
-

Certificate Distinguished Name (DN)​

-

All certificates issued by the Doriath CA share a common set of DN fields, with the commonName varying by certificate type:

-

Default DN fields (defined as DEFAULT_DN in CertificateAuthorityService):

-
FieldValue
countryNameNL
stateOrProvinceNameNoord-Holland
localityNameAmsterdam
organizationNameConduction
organizationalUnitNameDoriath
-

Common Name by certificate type:

-
CertificateCommon NameExample
Root CADoriath Root CADoriath Root CA
Intermediate CADoriath Intermediate CADoriath Intermediate CA
User certificateFederated cloud ID (user@instance), falls back to user IDadmin@nextcloud.local
Application certificateApplication IDa1b2c3d4-...
-

The cloud ID is resolved via IUserManager::get($ownerId)->getCloudId() in EncryptionSuiteService::resolveCommonName(). This ensures user certificates contain the full federated identity. When a certificate is re-signed during CA renewal, the original CN is preserved by extracting it from the existing certificate via openssl_x509_parse().

-

CACertificate​

-

The private Certificate Authority that signs all user and application certificates.

-
AspectDecisionRationale
StructureTwo-tier: root (20yr) → intermediate (3yr)PKI best practice — root key used rarely
StandardX.509 v3 certificatesIndustry standard
RenewalIntermediate auto-renews; root requires manual admin actionMinimize disruption; root rotation is rare
-

Core properties:

-
PropertyTypeEncryptedStandardNotes
idUUIDNo—Primary key
typeenum: root, intermediateNoPKI conventionCertificate tier
certificatetext (PEM)NoX.509 v3Public certificate
private_keytext (PEM)Yes (AES-256)PKCS#8Only present for intermediate
is_activeboolNo—Only one intermediate active for signing
expires_atdatetimeNoX.509 validityFor efficient expiry queries
revoked_atdatetimeNoX.509 CRLSet on forced revocation
successor_idFKNo—Points to replacement certificate
created_atdatetimeNo——
-

Secret​

-

The core data entity — holds sensitive information encrypted with the owner's public certificate.

-
AspectDecisionRationale
EncryptionRSA-4096 (PKCS#1) per owner's public certificateAsymmetric: enables write-without-read
Searchable fieldsname and url stored unencryptedEnables search and Nextcloud unified search without master password
Folder organizationTree via parent_id on Folder entityUser-managed hierarchy, no stored path strings
-

Core properties:

-
PropertyTypeEncryptedStandardNotes
idUUIDNo—Primary key
namestringNo—Human-readable label — safe for lists/search
urlstringNo—Target URL — enables search without decryption
type_idFKNo—SecretType reference; defaults to login
folder_idFKNo—Folder reference; null = root level
keytextYes (RSA)PKCS#1The actual secret value
loginstringYes (RSA)—Username, client ID, or equivalent
additional_fieldstextYes (RSA)—JSON blob of extra key-value pairs
encryption_suite_idFKNo—Which suite encrypted this secret
owner_typeenum: user, applicationNoADR-002Polymorphic ownership
owner_idstringNo—Nextcloud user ID or Application ID
possibly_compromised_atdatetimeNo—Set during compromise recovery
migration_errortextNo—Set on re-encryption failure
created_atdatetimeNo——
updated_atdatetimeNo——
-

SecretType​

-

Defines the type of a secret — a UI hint that drives how the interface labels and presents fields.

-
PropertyTypeNotes
idUUIDPrimary key
namestringSlug identifier (e.g., api_key) — unique
labelstringHuman-readable (e.g., "API Key")
scopeenum: system, user, globalsystem = built-in; user = per-user; global = admin-created
owner_idstringNextcloud user ID for user scope; null for system/global
created_atdatetime—
-

System types (seeded on install, immutable): login, api_key, ssh_key, certificate, note, database

-

Folder​

-

Organizes secrets into a per-user tree hierarchy.

-
PropertyTypeNotes
idUUIDPrimary key
namestringSingle path segment, no slashes
parent_idFK (Folder)Null = root level
owner_typeenum: user, applicationPolymorphic ownership
owner_idstringNextcloud user ID or Application ID
created_atdatetime—
updated_atdatetime—
-

Application​

-

An external or internal application registered to use Doriath as a secret store.

-
PropertyTypeNotes
idUUIDPrimary key
namestringHuman-readable name
typeenum: internal, externalInformational; no functional difference currently
statusenum: pending, activeNon-admin registrations start as pending
registered_bystringNextcloud user ID or null (anonymous)
approved_bystringAdmin user ID; null if pending
created_atdatetime—
approved_atdatetime—
-

SecretShare (User-to-User)​

-

Links an original secret to an encrypted copy in a recipient's vault.

-
PropertyTypeNotes
idUUIDPrimary key
source_secret_idFK (Secret)The original secret
target_user_idstringRecipient's Nextcloud user ID
secret_idFK (Secret)The encrypted copy in recipient's vault
group_share_idFK (GroupShare)Nullable — set if created from a group share
created_atdatetime—
-

GroupShare​

-

Tracks that a secret has been shared with a Nextcloud user group.

-
PropertyTypeNotes
idUUIDPrimary key
secret_idFK (Secret)The secret shared with the group
group_idstringNextcloud group ID
created_bystringOwner who created the share
created_atdatetime—
-

SecretDelegation​

-

Tracks ownership delegation of a secret.

-
PropertyTypeNotes
idUUIDPrimary key
secret_idFK (Secret)The delegated secret
original_owner_idstringOriginal owner's user ID
delegated_tostringDelegate's user ID
delegated_atdatetime—
initiated_bystringWho created the delegation
is_permanentboolFalse = temporary; true = permanent (owner's suite revoked)
made_permanent_atdatetimeNull while temporary
-

LinkShare​

-

A password-protected link for sharing a secret snapshot with external parties.

-
PropertyTypeEncryptedNotes
idUUIDNoPrimary key
secret_idFKNoThe secret being shared
tokenstringNoURL-safe random token (≥128 bits entropy)
encrypted_secret_snapshottextYes (AES-256 via Argon2id KDF)Point-in-time snapshot
encryption_suite_idFKNoSuite used to encrypt the snapshot
usage_limitintNoMax accesses; null = unlimited
usage_countintNoCurrent access count
created_atdatetimeNo—
expires_atdatetimeNoOptional expiry
-

Security: Link password is never stored. Snapshot is encrypted with AES-256 using a key derived from the link password via Argon2id (RFC 9106). After 5 consecutive failed attempts, the link share is permanently deleted.

-

SecretRequest​

-

A fill-in link for write-without-read secret submission.

-
PropertyTypeNotes
idUUIDPrimary key
secret_idFK (Secret)The unfilled Secret this request writes to
encryption_suite_idFKPublic certificate used to encrypt submitted values
tokenstringURL-safe random token (≥128 bits entropy)
requested_fieldsJSONArray of field names being requested
statusenum: pending, locked, fulfilledlocked during compromise recovery
expires_atdatetimeOptional expiry
created_atdatetime—
fulfilled_atdatetime—
-

SuiteMigration​

-

Tracks compromise recovery migrations.

-
PropertyTypeNotes
idUUIDPrimary key
old_suite_idFK (EncryptionSuite)Compromised suite
new_suite_idFK (EncryptionSuite)Replacement suite
statusenum: in_progress, completed, completed_with_errorsMigration state
started_atdatetime—
completed_atdatetimeNull while in progress
-

3.3 Encryption Flow Summary​

-
Master Password (user input, never stored)
│
▼
┌─────────────────┐
│ KDF (derive) │
└────────┬────────┘
│
▼
AES-Derived Key (stored in session only)
│
┌─────────┴─────────┐
▼ ▼
┌───────────────┐ ┌───────────────┐
│ Decrypt │ │ Encrypt │
│ Private Key │ │ Private Key │
│ (AES-256) │ │ (AES-256) │
└───────┬───────┘ └───────────────┘
│
▼
Private Key (in memory only)
│
┌─────────┴─────────┐
▼ ▼
┌───────────────┐ ┌───────────────┐
│ Decrypt │ │ Encrypt │
│ Secrets │ │ Secrets │
│ (RSA-4096) │ │ (RSA-4096) │
└───────────────┘ └───────────────┘
-

Write-without-read property: Because encryption uses the owner's public certificate (available to anyone), any party can write a secret into another user's or application's vault. Only the private key holder can decrypt — and the private key requires the master password. This is a direct consequence of asymmetric cryptography and is fundamental to secret requests and application secret management.

-

3.4 Nextcloud Integration Strategy​

-

Principle: Doriath handles all encryption and secret storage itself. Nextcloud provides identity, session, notification, and search infrastructure.

-

REUSE from Nextcloud​

-
FeatureOCP InterfaceWhat to ReuseHow
UsersOCP\IUserManagerAuthentication identity, vault ownershipReference by Nextcloud user UID
GroupsOCP\IGroupManagerGroup sharing, vault_admin roleQuery group membership for group shares
SessionOCP\ISessionStore AES-derived key during vault sessionISession::set('doriath_aes_key', $derivedKey)
NotificationsOCP\Notification\IManagerShare received, request fulfilled, CA expiry, app approvalImplement INotifier for rendering
SearchOCP\Search\IProviderUnified search (Ctrl+F) for secrets by name/URLQuery name + url without AES key; deep-link to secret
SettingsOCP\Settings\ISettingsAdmin settings panel (CA health, password policy)Register admin section
App ConfigOCP\IAppConfigApp-wide settings (min password length, session timeout)Store admin-configurable values
User ConfigOCP\IConfigPer-user settings (session timeout preference, notification toggles)Store user preferences
User DeletionOCP\User\Events\UserDeletedEventClean up EncryptionSuite, secrets, shares on user deleteEvent listener
Group MembershipOCP\Group\Events\UserAddedEvent / UserRemovedEventTrigger group share add/revokeEvent listeners
-

BUILD in Doriath (Security-specific)​

-
WhatWhy Not Reuse
EncryptionSuites & CACore security model — no Nextcloud equivalent
Secret storage (encrypted)Field-level encryption with per-user keys — cannot use generic storage
Master password sessionCustom session management with configurable timeout and tab-close detection
Key generatorServer-side cryptographic randomness with configurable rules
Sharing (user/link/request)Encryption-aware sharing — each share is a re-encrypted copy
Suite migrationCompromise recovery with re-encryption — domain-specific
Application managementCSR processing, approval queue — domain-specific PKI
-

Key OCP Interface Examples​

-
// Session — store AES-derived key
$session = \OCP\Server::get(\OCP\ISession::class);
$session->set('doriath_aes_key', $aesKey);
$session->get('doriath_aes_key'); // retrieve for decryption

// Notifications — secret shared
$manager = \OCP\Server::get(\OCP\Notification\IManager::class);
$notification = $manager->createNotification();
$notification->setApp('doriath')
->setUser($recipientId)
->setSubject('secret_shared', ['sharer' => $sharerId])
->setObject('secret', $secretId);
$manager->notify($notification);

// Search — register unified search provider
class SecretSearchProvider implements \OCP\Search\IProvider {
public function search(\OCP\IUser $user, \OCP\Search\ISearchQuery $query): SearchResult {
// Query name + url columns directly — no AES key needed
$secrets = $this->secretMapper->searchByNameOrUrl($user->getUID(), $query->getTerm());
// Return results with deep-link URLs (via lock screen if session inactive)
}
}

// User deletion cleanup
class UserDeletedListener implements \OCP\EventDispatcher\IEventListener {
public function handle(\OCP\EventDispatcher\Event $event): void {
// Delete user's EncryptionSuite, secrets, shares, folders
}
}

// Group membership — auto-revoke group shares
class UserRemovedFromGroupListener implements \OCP\EventDispatcher\IEventListener {
public function handle(\OCP\EventDispatcher\Event $event): void {
// Delete all SecretShares where group_share_id references a GroupShare for this group
}
}
-

3.5 @conduction/nextcloud-vue Library​

-

Doriath uses its own database (not OpenRegister), so store-level components (useObjectStore, plugins) do not apply. However, the following UI components and patterns from @conduction/nextcloud-vue are used:

-
LayerWhat to UsePurpose
ComponentsCnDataTable, CnFilterBar, CnStatusBadge, CnEmptyState, CnPaginationConsistent list views for secrets, applications, shares
SettingsCnSettingsSection, CnVersionInfoCard, CnSettingsCardAdmin settings page (CA health, password policy, app management)
Detail pagesCnDetailPage, CnDetailCard, CnObjectSidebarSecret detail view with card-based layout + sidebar (files, notes, tags, audit trail)
CSSNL Design System double-fallback pattern (cn- prefix)Government theming compliance
Not useduseObjectStore, registerMappingPlugin, lifecyclePlugin, useListView, useDetailViewThese depend on OpenRegister API — Doriath has its own backend API
-

Doriath implements its own Pinia stores (useSecretStore, useEncryptionSuiteStore, useApplicationStore, etc.) that call Doriath's REST API instead of the OpenRegister API. The stores follow the same patterns (loading state, pagination, CRUD) but are not derived from useObjectStore.

-

package.json dependency (MUST be present):

-
"@conduction/nextcloud-vue": "^0.1.0-beta.1"
-

Webpack alias (MUST be in webpack.config.js):

-
const fs = require('fs')
const localLib = path.resolve(__dirname, '../nextcloud-vue/src')
const useLocalLib = fs.existsSync(localLib)

// In resolve.alias:
...(useLocalLib ? { '@conduction/nextcloud-vue': localLib } : {}),
'vue$': path.resolve(__dirname, 'node_modules/vue'),
'pinia$': path.resolve(__dirname, 'node_modules/pinia'),
'@nextcloud/vue$': path.resolve(__dirname, 'node_modules/@nextcloud/vue'),
-

3.6 Vue Router (Navigation)​

-

All navigation uses Vue Router (hash mode). The lock screen is a route guard — if no AES key is in session, all routes redirect to the lock screen.

-
PathNameComponentProps
/DashboardDashboard—
/lockLockLockScreenroute => ({ returnUrl: route.query.returnUrl })
/secretsSecretsSecretList—
/secrets/:idSecretDetailSecretDetailroute => ({ secretId: route.params.id })
/folders/:idFolderViewSecretListroute => ({ folderId: route.params.id })
/applicationsApplicationsApplicationList—
/applications/:idApplicationDetailApplicationDetailroute => ({ applicationId: route.params.id })
/share/link/:tokenLinkShareAccessLinkShareAccessroute => ({ token: route.params.token })
/share/request/:tokenSecretRequestFillSecretRequestFillroute => ({ token: route.params.token })
*—redirect → /—
-

Route guard pattern:

-
router.beforeEach((to, from, next) => {
// Public routes (link share, request fill-in) skip the lock screen
if (['LinkShareAccess', 'SecretRequestFill', 'Lock'].includes(to.name)) {
return next()
}
// Check if AES key is in session (API call to backend)
if (!store.isUnlocked) {
return next({ name: 'Lock', query: { returnUrl: to.fullPath } })
}
next()
})
-

Key files: src/router/index.js, registered in main.js, <router-view /> in App.vue. -MainMenu navigation: use :to prop on NcAppNavigationItem (NOT @click + $router.push()).

-

The MainMenu footer contains two items: "Lock vault" (lock icon — calls session.lock() and navigates to /lock) and "Settings" (gear icon — opens NcAppSettingsDialog for user preferences).

-

3.7 OpenConnector Integration​

-

Doriath acts as a secret store for OpenConnector. When OpenConnector needs API keys or credentials to connect to external services, it can retrieve them from Doriath's application vault via the API.

-

Integration pattern:

-
    -
  1. Register OpenConnector as an Application in Doriath (admin auto-approved)
  2. -
  3. OpenConnector receives an EncryptionSuite (via generated key pair or CSR)
  4. -
  5. Admin writes API keys/credentials into OpenConnector's application vault
  6. -
  7. OpenConnector retrieves its secrets via Doriath's API using X-Vault-Password header
  8. -
-

This integration is via Doriath's REST API — no tight coupling or shared database.

-

4. Database Configuration​

-

Doctrine Entities​

-

All entities use Nextcloud's ISchemaWrapper migration pattern. Migrations are stored in lib/Migration/.

-
EntityTable NameNotes
EncryptionSuitedoriath_encryption_suitesComposite index on (owner_type, owner_id)
CACertificatedoriath_ca_certificates—
Secretdoriath_secretsIndex on (owner_type, owner_id), folder_id, encryption_suite_id
SecretTypedoriath_secret_typesUnique index on name
Folderdoriath_foldersIndex on (owner_type, owner_id, parent_id)
Applicationdoriath_applications—
SecretSharedoriath_secret_sharesIndex on source_secret_id, target_user_id
GroupSharedoriath_group_sharesIndex on (secret_id, group_id)
SecretDelegationdoriath_secret_delegationsIndex on secret_id
LinkSharedoriath_link_sharesUnique index on token
SecretRequestdoriath_secret_requestsUnique index on token
SuiteMigrationdoriath_suite_migrations—
-

5. Open Research Questions​

-
    -
  1. -

    Application API authentication — RFC 7523 (JWT Bearer / Private Key JWT) is the lean for how approved applications authenticate to retrieve secrets. Uses existing RSA key infrastructure, short-lived tokens, no new credential. Needs team discussion before finalizing. See application-mgmt spec.

    -
  2. -
  3. -

    Pagination approach — 50 items per page (standard pagination) or 30 items with dynamic infinite scroll? To be decided during UI design.

    -
  4. -
  5. -

    Subfolder cascade — Does ?cascade=delete and ?cascade=move apply recursively to subfolders, or only to direct contents? Unclear whether recursive folder deletion should be allowed.

    -
  6. -
  7. -

    Internal application master password — How does a Nextcloud app running a cronjob authenticate to its Doriath vault? No solution found that doesn't compromise the security model. See Vault-app.docx for full analysis.

    -
  8. -
  9. -

    Post-quantum cryptography — RSA-4096 is vulnerable to future quantum attacks. Post-quantum algorithms are not yet available in stable PHP/OpenSSL. Must be revisited when PHP gains support.

    -
  10. -
  11. -

    Forced intermediate revocation and secret compromise — When an admin force-revokes the intermediate certificate (e.g., leaked key), should all secrets be flagged possibly_compromised_at? The intermediate signs certificates but doesn't directly encrypt secrets. Needs further analysis.

    -
  12. -
-

6. References​

-

Cryptographic Standards​

- -

Key Management & Password Policy​

- -

Nextcloud OCP Interfaces​

- -

Architectural Decisions​

-
- - \ No newline at end of file diff --git a/docs/build/docs/DESIGN-REFERENCES/index.html b/docs/build/docs/DESIGN-REFERENCES/index.html deleted file mode 100644 index a1db4100f..000000000 --- a/docs/build/docs/DESIGN-REFERENCES/index.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - -Doriath — Design References & Dashboard Wireframes | Doriath - - - - - - - - -

Doriath — Design References & Dashboard Wireframes

-

1. Design Inspiration Sources​

-

Lock Screen / Master Password Entry​

-
SourceURL / SearchKey Patterns
Bitwarden Web Vaultvault.bitwarden.comFull-page lock with logo, single password field, strength indicator on setup
1Password Lock Screen1password.comCentered card, vault icon, password field with show/hide toggle
KeePassXCkeepassxc.orgDatabase unlock with key file option, password field, minimalist design
Dribbble "vault lock screen"Search DribbbleShield/lock icon, gradient backgrounds, centered form card
LastPass Vaultlastpass.comSimple centered password entry with timeout message
-

Vault / Secret List​

-
SourceURL / SearchKey Patterns
Bitwarden Web Vaultvault.bitwarden.comFolder tree sidebar + secret list, type icons (login, card, note, identity), search bar at top
1Password1password.comCategory sidebar, search-first navigation, item cards with favicons
Passboltpassbolt.comTeam-oriented list with sharing indicators, folder tree, filter bar
KeePassXCkeepassxc.orgTree view (groups) + table view (entries), column-based with type icons
Nextcloud Passwordsapps.nextcloud.com/apps/passwordsFolder navigation, tag filters, list view with copy-to-clipboard actions
Dribbble "password manager UI"Search DribbbleCard-based layouts, favicon next to entries, copy buttons, strength indicators
-

Secret Detail View​

-
SourceURL / SearchKey Patterns
Bitwarden Item Viewvault.bitwarden.comField-by-field layout with copy buttons, password hidden by default, custom fields section
1Password Item Detail1password.comCard-based sections (credentials, website, notes), sidebar for metadata
Passbolt Resource Viewpassbolt.comSide panel detail with sharing tab, copy password button
Dribbble "credential detail"Search DribbbleClean field presentation with icons, show/hide toggles, copy actions
-

Sharing UI​

-
SourceURL / SearchKey Patterns
Bitwarden Organizationsvault.bitwarden.comCollection-based sharing, member management
Passbolt Sharingpassbolt.comUser/group picker, permission levels, share dialog
1Password Vault Sharing1password.comVault membership, per-item sharing
Nextcloud Files SharingNextcloudUser/group autocomplete, link sharing with options, share sidebar tab
Dribbble "share dialog"Search DribbbleUser search autocomplete, sharing chips, permission dropdowns
-

Admin Settings / CA Management​

-
SourceURL / SearchKey Patterns
HashiCorp Vault UIvaultproject.ioPKI engine: CA chain visualization, certificate list, issue/revoke actions
Nextcloud Admin SettingsNextcloudSection-based settings page, toggle switches, info cards
AWS Certificate ManagerAWS ConsoleCertificate status badges (issued, expired, revoked), chain visualization
Let's Encrypt Dashboardcertbot.eff.orgCertificate status, expiry countdown, renewal actions
-

Dashboard​

-
SourceURL / SearchKey Patterns
Bitwarden Reportsvault.bitwarden.comPassword health: reused, weak, exposed counts with action items
1Password Watchtower1password.comSecurity score, vulnerable items count, breach alerts
Dribbble "security dashboard"Search DribbbleShield-based KPI cards, health scores, alert lists
Nextcloud DashboardNextcloudWidget-based dashboard, card layout, status panels
-
-

2. Missing Features Identified from Design Patterns​

-

MVP Additions​

-
FeatureSource PatternJustification
Copy-to-clipboard on secret list itemsBitwarden, 1Password, Passwords appMost-used action — copy password without opening detail view
Show/hide toggle on password fieldsAll vault UIsStandard pattern — passwords hidden by default with eye icon
Favicon/icon next to secrets by URL1Password, BitwardenVisual identification of which service a secret belongs to
-

V1 Additions​

-
FeatureSource PatternJustification
Password health scoring per secretBitwarden Reports, 1Password WatchtowerFlag weak, reused, or old passwords
Secret strength indicator in list viewPassbolt, BitwardenColor-coded strength badge next to each secret
Vault search with keyboard shortcut (Ctrl+K)1Password, many modern appsPower-user quick access
Dark mode supportAll modern UIsUser preference; Nextcloud supports dark mode
-

Enterprise Additions​

-
FeatureSource PatternJustification
Breach detection (HaveIBeenPwned)1Password Watchtower, Bitwarden ReportsProactive security alerts for compromised URLs
Password age indicator1Password, BitwardenShow how old each secret is; flag stale credentials
Export to PDF (single secret)KeePassXCPrint-friendly credential sheet for offline backup
-
-

3. Dashboard Wireframes​

-

3.1 Lock Screen​

-
┌─────────────────────────────────────────────────────────────────────┐
│ │
│ │
│ │
│ ┌─────────────┐ │
│ │ 🔒 │ │
│ │ DORIATH │ │
│ └─────────────┘ │
│ │
│ ┌───────────────────────────┐ │
│ │ │ │
│ │ Enter your master │ │
│ │ password to unlock │ │
│ │ your vault │ │
│ │ │ │
│ │ ┌───────────────────┐ │ │
│ │ │ •••••••••••• 👁 │ │ │
│ │ └───────────────────┘ │ │
│ │ │ │
│ │ Session timeout: │ │
│ │ [Nextcloud session ▾] │ │
│ │ │ │
│ │ [ Unlock ] │ │
│ │ │ │
│ └───────────────────────────┘ │
│ │
│ │
│ │
└─────────────────────────────────────────────────────────────────────┘
-

First-time setup variant — shown when user has no EncryptionSuite:

-
┌─────────────────────────────────────────────────────────────────────┐
│ ┌─────────────┐ │
│ │ 🔒 │ │
│ │ DORIATH │ │
│ └─────────────┘ │
│ │
│ ┌───────────────────────────┐ │
│ │ │ │
│ │ Welcome to Doriath │ │
│ │ │ │
│ │ Choose a master │ │
│ │ password for your vault │ │
│ │ │ │
│ │ ┌───────────────────┐ │ │
│ │ │ 👁 │ │ │
│ │ └───────────────────┘ │ │
│ │ ████████░░ Strong │ │
│ │ "Add a number or symbol │ │
│ │ to make it stronger" │ │
│ │ │ │
│ │ Confirm: │ │
│ │ ┌───────────────────┐ │ │
│ │ │ 👁 │ │ │
│ │ └───────────────────┘ │ │
│ │ │ │
│ │ ⚠ If you forget your │ │
│ │ master password, your │ │
│ │ secrets cannot be │ │
│ │ recovered. │ │
│ │ │ │
│ │ [ Create Vault ] │ │
│ │ │ │
│ └───────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
-

3.2 Main Dashboard (Landing Page)​

-
┌─────────────────────────────────────────────────────────────────────┐
│ DORIATH [Search...] [⚙] │
├──────────┬──────────┬──────────┬──────────┬──────────────────────────┤
│ Dashboard│ Vault │ Apps │ Shared │ │
├──────────┴──────────┴──────────┴──────────┴──────────────────────────┤
│ │
│ ⚠ Key migration in progress — 12 secrets remaining [Resume →] │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ SECRETS │ │ SHARED │ │ FOLDERS │ │ ⚠ ATTENTION │ │
│ │ │ │ WITH ME │ │ │ │ │ │
│ │ 47 │ │ 8 │ │ 5 │ │ 2 │ │
│ │ │ │ │ │ │ │ compromised │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
│ ┌────────────────────────────────┐ ┌──────────────────────────┐ │
│ │ Recently Accessed │ │ Sharing Activity │ │
│ │ │ │ │ │
│ │ 🔑 GitHub API Token │ │ • Maria shared "DB pwd" │ │
│ │ api_key · 2 min ago │ │ with you — 1 hour ago │ │
│ │ │ │ │ │
│ │ 🔑 Production Database │ │ • You shared "SSH Key" │ │
│ │ database · 15 min ago │ │ with Jan — yesterday │ │
│ │ │ │ │ │
│ │ 🔑 AWS Console │ │ • Request for "Vendor │ │
│ │ login · 1 hour ago │ │ API Key" fulfilled │ │
│ │ │ │ — 2 days ago │ │
│ │ 🔑 VPN Credentials │ │ │ │
│ │ login · 3 hours ago │ │ [View all →] │ │
│ │ │ └──────────────────────────┘ │
│ │ 🔑 Email Server │ │
│ │ login · yesterday │ │
│ │ │ │
│ │ [View all secrets →] │ │
│ └────────────────────────────────┘ │
│ │
│ ┌──── Admin Only ────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌──────────────────┐ ┌──────────────────────────────┐ │ │
│ │ │ PENDING APPS │ │ CA HEALTH │ │ │
│ │ │ │ │ │ │ │
│ │ │ 3 pending │ │ ● Healthy │ │ │
│ │ │ [Review →] │ │ Root: expires 2046-03-23 │ │ │
│ │ │ │ │ Intermediate: 2029-03-23 │ │ │
│ │ └──────────────────┘ │ Suites signed: 24 │ │ │
│ │ └──────────────────────────────┘ │ │
│ └────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
-

3.3 Vault / Secret List View​

-
┌─────────────────────────────────────────────────────────────────────┐
│ DORIATH > Vault [🔍 Search secrets...] [⚙]│
├──────────┬──────────┬──────────┬──────────┬──────────────────────────┤
│ Dashboard│ Vault │ Apps │ Shared │ │
├──────────┴──────────┴──────────┴──────────┴──────────────────────────┤
│ │
│ ┌─────────────────┐ ┌──────────────────────────────────────────────┐│
│ │ FOLDERS │ │ ││
│ │ │ │ All Secrets (47) [+ New Secret] ││
│ │ 📁 All (47) │ │ ││
│ │ │ │ ┌─ Filter: [All types ▾] [All folders ▾] ││
│ │ 📁 Work (12) │ │ │ Sort: [Name ▾] ││
│ │ └ 📁 APIs (5) │ │ ││
│ │ └ 📁 DBs (3) │ │ ┌────┬──────────────────┬────────┬────────┐││
│ │ │ │ │Type│ Name │ URL │Actions ││ │
│ │ 📁 Personal(18)│ │ ├────┼──────────────────┼────────┼────────┤││
│ │ └ 📁 Email(4) │ │ │ 🔑 │ AWS Console │aws.com │ 📋 👁 │││
│ │ └ 📁 Social(6)│ │ │ 🔑 │ Azure Portal │azure.. │ 📋 👁 │││
│ │ │ │ │ 🔐 │ GitHub API Token │github..│ 📋 👁 │││
│ │ 📁 Shared (8) │ │ │ 🔐 │ GitLab Deploy Key │gitlab..│ 📋 👁 │││
│ │ │ │ │ 📝 │ License Keys │ — │ 📋 👁 │││
│ │ 📁 Apps (9) │ │ │ 🔑 │ Office 365 │office..│ 📋 👁 │││
│ │ │ │ │ 🗄 │ Prod Database │ — │ 📋 👁 │││
│ │ │ │ │ 🔑 │ VPN Credentials │ — │ 📋 👁 │││
│ │ [+ New folder] │ │ │ 🔒 │ SSH Server Key │ — │ 📋 👁 │││
│ │ │ │ │ 📄 │ TLS Certificate │ — │ 📋 👁 │││
│ │ │ │ └────┴──────────────────┴────────┴────────┘││
│ │ │ │ ││
│ │ │ │ Showing 10 of 47 · Page 1 of 5 [< 1 2 >] ││
│ └─────────────────┘ └──────────────────────────────────────────────┘│
│ │
└─────────────────────────────────────────────────────────────────────┘
-

Type icons:

-
IconTypeColor
🔑loginBlue
🔐api_keyPurple
🔒ssh_keyGreen
📄certificateOrange
📝noteGray
🗄databaseRed
-

Actions column:

-
    -
  • 📋 = Copy password to clipboard (most-used action, single click)
  • -
  • 👁 = Open detail view
  • -
-

3.4 Secret Detail View​

-

Using CnDetailPage + CnObjectSidebar pattern:

-
┌──────────────────────────────────────────────────────────────────────┐
│ ← Back to vault 🔑 AWS Console Login [Edit] [Delete] │
├─────────────────────────────────────────────┬────────────────────────┤
│ │ ╔═══ Sidebar ═══════╗ │
│ ┌─── Core Info ──────────────────────┐ │ ║ Files | Notes | ║ │
│ │ │ │ ║ Tags | Audit ║ │
│ │ Type: 🔑 Login │ │ ║ Trail ║ │
│ │ URL: console.aws.amazon.com │ │ ╠══════════════════╣ │
│ │ Folder: Work / APIs │ │ ║ ║ │
│ │ │ │ ║ 📝 "Remember to ║ │
│ │ Login: admin@company.nl │ │ ║ rotate this key ║ │
│ │ [📋 Copy] │ │ ║ quarterly" ║ │
│ │ │ │ ║ — Jan, Mar 15 ║ │
│ │ Password: •••••••••••••••• │ │ ║ ║ │
│ │ [👁 Show] [📋 Copy] │ │ ║ 📝 "MFA seed is ║ │
│ │ │ │ ║ in additional ║ │
│ │ Additional fields: │ │ ║ fields" ║ │
│ │ MFA Seed: •••••••• [📋] │ │ ║ — Maria, Mar 10 ║ │
│ │ Region: eu-west-1 [📋] │ │ ║ ║ │
│ │ │ │ ║ [+ Add note] ║ │
│ └────────────────────────────────────┘ │ ║ ║ │
│ │ ╚══════════════════╝ │
│ ┌─── Sharing ────────────────────────┐ │ │
│ │ │ │ │
│ │ Shared with 3 users: │ │ │
│ │ 👤 Jan de Vries │ │ │
│ │ 👤 Maria Jansen │ │ │
│ │ 👤 Pieter Bakker │ │ │
│ │ │ │ │
│ │ [+ Share with user] │ │ │
│ │ [🔗 Create link share] │ │ │
│ │ [📨 Create secret request] │ │ │
│ └────────────────────────────────────┘ │ │
│ │ │
│ ┌─── Encryption ─────────────────────┐ │ │
│ │ │ │ │
│ │ Suite: EncryptionSuite-abc123 │ │ │
│ │ Status: ● Active │ │ │
│ │ Created: 2026-02-10 │ │ │
│ │ Updated: 2026-03-15 │ │ │
│ └────────────────────────────────────┘ │ │
├─────────────────────────────────────────────┴────────────────────────┤
-

Component hierarchy:

-
CnDetailPage (title="AWS Console Login", back-route={name:'Secrets'})
├─ #header-actions → [Edit] [Delete]
├─ #default → Card widgets
│ ├─ CnDetailCard (title="Core Info")
│ │ └─ Type, URL, folder, login (with copy), password (hidden + copy),
│ │ additional fields (each with copy)
│ ├─ CnDetailCard (title="Sharing")
│ │ └─ Recipient list (owner only), share/link/request buttons
│ └─ CnDetailCard (title="Encryption")
│ └─ Suite ID, status badge, timestamps
└─ CnObjectSidebar (object-type="doriath_secret", object-id, ...)
├─ Tab: Files — attachments (e.g., key files, certificates)
├─ Tab: Notes — team notes about this secret
├─ Tab: Tags — categorization tags
└─ Tab: Audit Trail — who accessed/modified this secret
-

3.5 Key Generator Modal​

-
┌─────────────────────────────────────────────┐
│ Generate Password [✕] │
│ │
│ ┌─────────────────────────────────────┐ │
│ │ Xp7!kM2@nQ9$bR4w │ │
│ │ [📋] [🔄] │ │
│ └─────────────────────────────────────┘ │
│ Strength: ████████████████ Very Strong │
│ │
│ Length: [────●────────────] 16 │
│ │
│ ☑ Include special characters │
│ (!@#$%^&*()-_=+[]{}|;:,.<>?/) │
│ │
│ Excluded characters: │
│ ┌─────────────────────────────────────┐ │
│ │ 0Ol1I │ │
│ └─────────────────────────────────────┘ │
│ │
│ ▸ Advanced: regex override │
│ │
│ [Cancel] [Use This] │
└─────────────────────────────────────────────┘
-

3.6 Share Dialog​

-
┌─────────────────────────────────────────────┐
│ Share "AWS Console Login" [✕] │
│ │
│ ┌─── Share with User ────────────────┐ │
│ │ │ │
│ │ 🔍 [Search users or groups...] │ │
│ │ │ │
│ │ Current shares: │ │
│ │ │ │
│ │ 👤 Jan de Vries [Revoke] │ │
│ │ 👤 Maria Jansen [Revoke] │ │
│ │ 👥 Team DevOps (3 users) [Revoke] │ │
│ │ │ │
│ └────────────────────────────────────┘ │
│ │
│ ┌─── Link Shares ───────────────────┐ │
│ │ │ │
│ │ Active links: 1 │ │
│ │ │ │
│ │ 🔗 Link #1 — 2/5 uses │ │
│ │ Created: Mar 10 [Revoke] │ │
│ │ │ │
│ │ [+ Create new link share] │ │
│ │ Usage limit: [5 ▾] │ │
│ │ Expires: [Never ▾] │ │
│ │ │ │
│ └────────────────────────────────────┘ │
│ │
│ ┌─── Secret Requests ───────────────┐ │
│ │ │ │
│ │ 📨 Pending request (expires Apr 5)│ │
│ │ Fields: username, password │ │
│ │ [Copy link] [Revoke] │ │
│ │ │ │
│ │ [+ Create new request] │ │
│ │ │ │
│ └────────────────────────────────────┘ │
│ │
│ [Close] │
└─────────────────────────────────────────────┘
- -
┌─────────────────────────────────────────────────────────────────────┐
│ │
│ ┌─────────────┐ │
│ │ 🔒 │ │
│ │ DORIATH │ │
│ └─────────────┘ │
│ │
│ ┌───────────────────────────┐ │
│ │ │ │
│ │ A secret has been │ │
│ │ shared with you │ │
│ │ │ │
│ │ Enter the password │ │
│ │ provided by the sender │ │
│ │ │ │
│ │ ┌───────────────────┐ │ │
│ │ │ 👁 │ │ │
│ │ └───────────────────┘ │ │
│ │ │ │
│ │ [ Decrypt ] │ │
│ │ │ │
│ └───────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
-

After successful decryption:

-
┌─────────────────────────────────────────────────────────────────────┐
│ ┌───────────────────────────┐ │
│ │ │ │
│ │ Shared Secret │ │
│ │ │ │
│ │ Name: AWS Console │ │
│ │ Login: admin@co.nl │ │
│ │ [📋 Copy] │ │
│ │ │ │
│ │ Password: •••••••••• │ │
│ │ [👁] [📋 Copy] │ │
│ │ │ │
│ │ URL: console.aws.com │ │
│ │ [📋 Copy] │ │
│ │ │ │
│ │ ⚠ This link has 3 │ │
│ │ remaining uses │ │
│ │ │ │
│ └───────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
-

3.8 Secret Request Fill-in Page (Public)​

-
┌─────────────────────────────────────────────────────────────────────┐
│ ┌─────────────┐ │
│ │ 📨 │ │
│ │ DORIATH │ │
│ └─────────────┘ │
│ │
│ ┌───────────────────────────┐ │
│ │ │ │
│ │ Secret Request │ │
│ │ │ │
│ │ Someone has requested │ │
│ │ the following fields: │ │
│ │ │ │
│ │ Username: │ │
│ │ ┌───────────────────┐ │ │
│ │ │ │ │ │
│ │ └───────────────────┘ │ │
│ │ │ │
│ │ Password: │ │
│ │ ┌───────────────────┐ │ │
│ │ │ 👁 │ │ │
│ │ └───────────────────┘ │ │
│ │ │ │
│ │ 🔒 Your submission │ │
│ │ will be encrypted │ │
│ │ immediately. The │ │
│ │ requester cannot see │ │
│ │ these values without │ │
│ │ their master password. │ │
│ │ │ │
│ │ [ Submit ] │ │
│ │ │ │
│ └───────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
-

3.9 Application Management (Admin View)​

-
┌─────────────────────────────────────────────────────────────────────┐
│ DORIATH > Applications [+ Register App] [⚙]│
├──────────┬──────────┬──────────┬──────────┬──────────────────────────┤
│ Dashboard│ Vault │ Apps │ Shared │ │
├──────────┴──────────┴──────────┴──────────┴──────────────────────────┤
│ │
│ ┌──── Pending Approval (3) ──────────────────────────────────────┐ │
│ │ │ │
│ │ ┌────────────────────────────────────────────────────────┐ │ │
│ │ │ 🟡 N8N Workflow Engine external │ │ │
│ │ │ Registered by: anonymous · Mar 28 │ │ │
│ │ │ CSR: uploaded ✓ │ │ │
│ │ │ [Approve] [Reject] │ │ │
│ │ └────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌────────────────────────────────────────────────────────┐ │ │
│ │ │ 🟡 Monitoring Agent internal │ │ │
│ │ │ Registered by: admin · Mar 27 │ │ │
│ │ │ CSR: not uploaded — key pair will be generated │ │ │
│ │ │ [Approve] [Reject] │ │ │
│ │ └────────────────────────────────────────────────────────┘ │ │
│ └────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌──── Active Applications (4) ───────────────────────────────────┐ │
│ │ │ │
│ │ ┌────────────────────────────────────────────────────────┐ │ │
│ │ │ 🟢 OpenConnector internal │ │ │
│ │ │ Approved by: admin · Mar 15 · Secrets: 12 │ │ │
│ │ │ Suite: ● Active [View] [Delete] │ │ │
│ │ └────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌────────────────────────────────────────────────────────┐ │ │
│ │ │ 🟢 CI/CD Pipeline external │ │ │
│ │ │ Approved by: admin · Mar 10 · Secrets: 5 │ │ │
│ │ │ Suite: ● Active (CSR) [View] [Delete] │ │ │
│ │ └────────────────────────────────────────────────────────┘ │ │
│ └────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
-

3.10 Admin Settings​

-
┌─────────────────────────────────────────────────────────────────────┐
│ Administration > Doriath │
├──────────────────────────────────────────────────────────────────────┤
│ │
│ ┌── CnVersionInfoCard ──────────────────────────────────────────┐ │
│ │ Doriath v0.1.0 [Check for │ │
│ │ Encrypted secrets manager updates] │ │
│ └────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌── CnSettingsSection: Certificate Authority ────────────────────┐ │
│ │ │ │
│ │ Status: ● Healthy │ │
│ │ │ │
│ │ Root Certificate │ │
│ │ Created: 2026-03-23 · Expires: 2046-03-23 │ │
│ │ Fingerprint: SHA256:AB:CD:EF:12:34:... │ │
│ │ │ │
│ │ Intermediate Certificate (active) │ │
│ │ Created: 2026-03-23 · Expires: 2029-03-23 │ │
│ │ Suites signed: 24 │ │
│ │ Auto-renew: ☑ enabled │ │
│ │ │ │
│ │ [Force Renew Intermediate] [View Certificate Chain] │ │
│ └────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌── CnSettingsSection: Master Password Policy ───────────────────┐ │
│ │ │ │
│ │ Minimum length: [────●──────────] 12 characters │ │
│ │ (range: 12–20) │ │
│ │ │ │
│ │ Minimum strength: [Score 3 (Strong) ▾] │ │
│ │ Score 3 = resists online attacks │ │
│ │ Score 4 = resists offline attacks │ │
│ │ │ │
│ │ Default session timeout: [Nextcloud session ▾] │ │
│ │ │ │
│ └────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌── CnSettingsSection: Applications ─────────────────────────────┐ │
│ │ │ │
│ │ 3 pending · 4 active · 0 rejected │ │
│ │ │ │
│ │ [Manage Applications →] │ │
│ │ │ │
│ └────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
-

Component hierarchy:

-
CnVersionInfoCard (app-name="Doriath", app-version="0.1.0")
CnSettingsSection (name="Certificate Authority", doc-url="...")
└─ CA status display, certificate details, action buttons
CnSettingsSection (name="Master Password Policy")
└─ Length slider, score dropdown, session timeout dropdown
CnSettingsSection (name="Applications")
└─ Application count summary, link to management page
-

3.11 User Settings Dialog (NcAppSettingsDialog)​

-
┌─────────────────────────────────────────────┐
│ Doriath Settings [✕] │
│ │
│ ┌─── Security ──────────────────────┐ │
│ │ │ │
│ │ Session timeout: │ │
│ │ [30 minutes ▾] │ │
│ │ │ │
│ │ Options: │ │
│ │ • Nextcloud session duration │ │
│ │ • 10 minutes │ │
│ │ • 30 minutes │ │
│ │ │ │
│ └────────────────────────────────────┘ │
│ │
│ ┌─── Notifications ─────────────────┐ │
│ │ │ │
│ │ ☑ Secret shared with me │ │
│ │ ☑ Secret request fulfilled │ │
│ │ ☑ Group share additions │ │
│ │ ☑ Security alerts (compromised │ │
│ │ secrets, suite revocation) │ │
│ │ │ │
│ └────────────────────────────────────┘ │
│ │
│ ┌─── Display ───────────────────────┐ │
│ │ │ │
│ │ Default secret type: │ │
│ │ [Login ▾] │ │
│ │ │ │
│ │ Default vault view: │ │
│ │ [List ▾] │ │
│ │ • List (flat) │ │
│ │ • Folders (tree sidebar) │ │
│ │ │ │
│ └────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────┘
-

Must use NcAppSettingsDialog (NOT NcDialog) with NcAppSettingsSection for each group. See openspec/specs/nextcloud-app/spec.md for the full pattern.

-

3.12 Master Password Change​

-
┌─────────────────────────────────────────────────────────────────────┐
│ DORIATH > Change Master Password │
├──────────────────────────────────────────────────────────────────────┤
│ │
│ ┌────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Why are you changing your password? │ │
│ │ │ │
│ │ ○ Routine password change │ │
│ │ Your encryption keys stay the same. │ │
│ │ Only the wrapping password changes. │ │
│ │ │ │
│ │ ○ My master password was compromised │ │
│ │ ⚠ This will generate new encryption keys │ │
│ │ and migrate ALL your secrets. During │ │
│ │ migration, your vault will be read-only. │ │
│ │ Shared link shares will be revoked. │ │
│ │ │ │
│ └────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Current password: │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ 👁 │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ New password: │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ 👁 │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ │ ████████████████░░ Very Strong (score 4) │ │
│ │ │ │
│ │ Confirm new password: │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ 👁 │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ [ Change Password ] │ │
│ │ │ │
│ └────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
- - \ No newline at end of file diff --git a/docs/build/docs/FEATURES/index.html b/docs/build/docs/FEATURES/index.html deleted file mode 100644 index 05b80d404..000000000 --- a/docs/build/docs/FEATURES/index.html +++ /dev/null @@ -1,268 +0,0 @@ - - - - - -Doriath — Feature Analysis & Product Strategy | Doriath - - - - - - - - -

Doriath — Feature Analysis & Product Strategy

-

Executive Summary​

-

There is no production-ready Nextcloud-native encrypted vault with application secret management. The existing "Passwords" app provides basic password management but lacks enterprise-grade encryption (no PKI, no private CA, no application secrets). The broader market splits into consumer password managers (Bitwarden, 1Password) and infrastructure secret engines (HashiCorp Vault, AWS Secrets Manager) — no tool bridges both worlds on a self-hosted collaboration platform.

-

Key insight: Nextcloud is already the collaboration hub — users, groups, files, notifications, and search are already there. A Nextcloud-native vault orchestrates these capabilities for secret management: share secrets with Nextcloud users/groups, notify via the bell icon, search from the unified search bar, and manage application credentials alongside your team workspace.

-

1. Competitive Landscape​

-

Nextcloud App Store​

-
NameStatusDownloadsLast UpdatedKey FeaturesGaps
Passwords (Marius David Wieschollek)Active, mature500K+2024Password CRUD, folder organization, tags, password generator, sharing (user/link), browser extensions, API, client-side encryption optionsNo private CA, no application secrets, no CSR-based onboarding, no write-without-read, no enterprise key management
Secrets (various)Early/experimentalLow—Basic encrypted notesNot a vault; minimal functionality
-

Finding: The "Passwords" app is the main Nextcloud competitor. It is mature and widely adopted but architecturally simpler — it uses server-side encryption (SSE) or client-side encryption (CSE) without PKI infrastructure. It cannot manage application secrets, has no write-without-read capability, and lacks a Certificate Authority for enterprise key management.

-

Self-Hosted Open Source​

-
NameGitHub StarsPositioningKey FeaturesWeaknesses
Bitwarden (bitwarden/server)16K+Full-featured password managerWeb vault, browser extensions, mobile apps, CLI, org vaults, SSO, emergency access, FIDO2, password health reports, Send (ephemeral sharing)Heavy (.NET stack), requires multiple containers, no Nextcloud integration
Vaultwarden42K+Lightweight Bitwarden-compatible server (Rust)Same client ecosystem as Bitwarden, single binary, low resource usage, org vaults, SendNo native Nextcloud integration, no application secret management, no private CA
Passbolt4K+Team password manager (PHP/CakePHP)End-to-end GPG encryption, team sharing, RBAC, LDAP/AD, audit logs, folders, tags, mobile apps, APIGPG-based (not PKI/CA), no application secrets, no write-without-read, complex setup
KeePass / KeePassXC— / 19K+Offline password databaseKDBX format, strong encryption (AES-256/ChaCha20), browser integration, TOTP, auto-type, pluginsOffline-only, no server, no sharing, no team features, no API
Psono1.5K+Enterprise team password managerE2E encryption (Curve25519 + Salsa20), team sharing, LDAP, file encryption, API keys, emergency codesPython/Django stack, smaller community, no Nextcloud integration
Teampass1.6K+Collaborative password manager (PHP)Team folders, roles, export, API, LDAP, 2FADated UI, PHP but not Nextcloud-integrated, simpler encryption model
Padloc2.5K+Modern cross-platform password managerClean UI, E2E encryption (SRP + AES), vaults, sharing, org managementTypeScript/Electron, smaller ecosystem, no application secrets
-

Enterprise SaaS​

-
NamePrice/user/moTarget AudienceKey FeaturesWhy Not
1Password$8–20Teams, enterprisesVaults, sharing, watchtower (breach detection), SSO, SCIM, CLI, secrets automation, service accountsSaaS-only, US jurisdiction, expensive at scale, data sovereignty
LastPass$4–7Consumer, small teamsPassword vault, sharing, dark web monitoring, SSO, admin consoleRepeated security breaches, SaaS-only, trust issues
HashiCorp VaultFree OSS / $1.58/hr (HCP)DevOps, platform teamsDynamic secrets, secret engines, PKI engine, transit encryption, audit logging, policies, namespacesInfrastructure tool (not a password manager), complex, no end-user UI
AWS Secrets Manager$0.40/secret/moAWS-native workloadsSecret rotation, RDS integration, cross-account sharing, CloudFormationCloud-locked, no user-facing UI, no sharing, not self-hosted
Proton PassFree–$4Privacy-focused consumersE2E encrypted, zero-knowledge, aliasing, Proton ecosystem integrationConsumer-focused, no team features, no application secrets, SaaS-only
Keeper$5–8EnterprisesZero-knowledge, secrets manager, connection manager, PAM, compliance reportsSaaS-only, expensive, complex licensing
-

Dutch Government​

-
NameTypeStatusKey Features
Haven (NLnet Labs)Research / PKI toolkitActive developmentRPKI tooling, not a secrets manager
No direct equivalent——Dutch government has no mandated secrets management standard. Municipalities typically use commercial tools (1Password, Azure Key Vault) or rely on OS-level key management
-

Finding: There is no Dutch government standard or Common Ground component for secrets management. This is an opportunity — Doriath could become the reference implementation for sovereign secrets management in the Dutch public sector.

-

2. Feature Matrix​

-

Core Secret Management​

-
FeatureTierJustification
Secret CRUD (name, key, login, url, additional fields)MVPCore entity — see secrets spec
Secret types (login, api_key, ssh_key, certificate, note, database)MVPUI hint system with 6 system types
Custom secret types (user-scoped and admin global)MVPExtensibility for org-specific secret categories
Folder organization (tree hierarchy per user)MVPEssential organizational pattern
Folder CRUD (create, rename, move, delete with cascade options)MVPFull folder management
Secret list with search, sort, paginationMVPCore navigation
Copy-to-clipboard on secret list itemsMVPMost-used action — copy password without opening detail (Bitwarden, 1Password pattern)
Show/hide toggle on password fieldsMVPStandard pattern — passwords hidden by default with eye icon
Favicon/icon next to secrets by URLMVPVisual identification of which service a secret belongs to (1Password, Bitwarden)
Secret detail view with type-specific field presentationMVPCritical UX pattern
Fuzzy search by name and URL (Levenshtein tolerance)MVPTypo-tolerant search
Nextcloud unified search integration (IProvider)MVPFind secrets from Ctrl+F without opening Doriath
Deep-link from search results via lock screenMVPSeamless search → vault flow
Bulk secret operations (delete, move folder)V1Efficiency for large vaults
Secret import (CSV, Bitwarden JSON, KeePass XML)V1Migration from other tools
Secret export (encrypted backup, CSV)V1Data portability
Favorite/pinned secretsV1Quick access to frequently used secrets
Recently accessed secretsV1Convenience pattern from all major vaults
Password health scoring per secretV1Flag weak, reused, or old passwords (Bitwarden Reports, 1Password Watchtower)
Secret strength indicator in list viewV1Color-coded strength badge next to each secret (Passbolt, Bitwarden)
Vault search with keyboard shortcut (Ctrl+K)V1Power-user quick access (1Password pattern)
Dark mode supportV1User preference; Nextcloud supports dark mode natively
Secret tags (in addition to folders)EnterpriseCross-cutting categorization
Custom fields per secret type (admin-defined)EnterpriseOrganization-specific field requirements
Breach detection (HaveIBeenPwned) for secret URLsEnterpriseProactive security alerts for compromised URLs (1Password Watchtower)
Password age indicatorEnterpriseShow how old each secret is; flag stale credentials
Export to PDF (single secret)EnterprisePrint-friendly credential sheet for offline backup (KeePassXC)
-

Encryption & Key Management​

-
FeatureTierJustification
RSA-4096 encryption of secrets via EncryptionSuiteMVPCore security — see encryption-suites spec
AES-256 encryption of private keys with master passwordMVPPrivate key protection
Private CA bootstrap (root + intermediate) on first setupMVPCertificate infrastructure
Automatic EncryptionSuite creation on first loginMVPZero-friction onboarding
Master password session with configurable timeoutMVPBalance security and convenience
Lock screen (full page, not overlay)MVPSession expiry handling
Tab-close session clearingMVPPrevent stale sessions
Master password strength enforcement (zxcvbn ≥ 3)MVPNIST-aligned password policy
Live password strength feedbackMVPUser guidance during setup
Routine master password change (re-wrap private key)MVPPassword hygiene
Compromise recovery (full key rotation + migration)MVPSecurity incident response
Suite migration with per-secret error trackingMVPReliable recovery
Suite revocation and reinstatementMVPAdmin control
CA certificate auto-renewal (intermediate)V1Operational continuity
CA health check in admin panelV1Admin visibility
Admin-configurable minimum password length and scoreV1Policy enforcement
Root certificate manual renewal with admin notificationsV1Planned lifecycle management
Forced intermediate renewal (leaked key scenario)V1Emergency response
Password expiry reminders for secretsEnterpriseCredential rotation prompts
Multiple encryption suites per user (key rotation)EnterpriseAdvanced key management
Custom CA chain uploadEnterpriseIntegrate with existing PKI
Post-quantum cryptography (when PHP supports it)EnterpriseFuture-proofing
-

Key Generator​

-
FeatureTierJustification
Random key generation with configurable lengthMVPSee key-generator spec
Special character toggle (OWASP set)MVPAccommodate target system requirements
Character exclusionMVPAvoid ambiguous characters
Regex override for advanced patternsMVPDeveloper-friendly power feature
Integration with secret creation UIMVPSeamless workflow
Key generation API endpointMVPProgrammatic access
Password strength indicator on generated keysV1Visual feedback
Pronounceable password optionV1Human-friendly passwords
Passphrase generation (word-based)V1Diceware-style passphrases
-

User Sharing​

-
FeatureTierJustification
Share secret with Nextcloud user (encrypted copy)MVPSee user-sharing spec
Sync-on-update (changes propagate to all copies)MVPShared secrets stay current
Share with Nextcloud group (static expansion)MVPTeam sharing
Notification on share receivedMVPUser awareness
Revoke share (delete recipient's copy)MVPAccess control
Share visibility (owner sees recipients; recipients don't)MVPPrivacy by design
Share request (recipient asks owner to share with third party)MVPControlled re-sharing
New group member notification + approvalMVPOwner control over group expansion
Auto-revoke on group member leaveMVPAutomatic access cleanup
Ownership delegation (admin power grab, user self-delegation)V1Continuity when owner is unavailable
Delegation reclaimV1Owner regains control
Permanent delegation on suite revocationV1Graceful ownership transfer
Compromised suite → owner notification for shared secretsV1Security incident awareness
- -
FeatureTierJustification
Password-protected share link with usage limitMVPSee link-sharing spec
Argon2id KDF for snapshot encryptionMVPMemory-hard protection
Brute-force protection (5 attempts → auto-delete)MVPHostile access defense
Point-in-time snapshot (intentional staleness)MVPPredictable behavior
Multiple concurrent link shares per secretMVPFlexibility
Manual link revocationMVPOwner control
Link share expiry (optional)V1Time-limited access
Link share access audit logEnterpriseCompliance tracking
-

Secret Requests​

-
FeatureTierJustification
Fill-in link for write-without-read submissionMVPSee secret-requests spec
Request for own secrets and application secretsMVPDual use case
Notification on fulfillmentMVPRequester awareness
Field validation (all requested fields non-empty)MVPData completeness
Write-once semanticsMVPSecurity guarantee
Re-request (credential rotation via new fill-in link)MVPOperational workflow
Optional request expiryV1Time-limited requests
Request audit trailEnterpriseCompliance tracking
-

Application Management​

-
FeatureTierJustification
Application registration (any user, incl. anonymous)MVPSee application-mgmt spec
Approval queue for non-admin registrationsMVPAdmin control
EncryptionSuite via CSR (app manages own private key)MVPStandard PKI pattern
EncryptionSuite via generated key pair (private key returned once)MVPConvenience option
Admin notification on pending registrationMVPTimely approval
Pending applications counter on dashboardMVPAdmin visibility
Application deletion (hard delete with cascade)MVPLifecycle management
Write secret for application (write-without-read)MVPCore security pattern
Application API authentication (RFC 7523 JWT Bearer)V1Standardized API access
Application secret retrieval via REST APIV1Programmatic consumption
OpenConnector integration (secret store for connectors)V1Sister app integration
-

Dashboard & Reporting​

-
FeatureTierJustification
Dashboard with vault summary (total secrets, shared, folders)MVPAt-a-glance overview
Vault health indicator (compromised secrets, migration status)MVPSecurity awareness
Pending applications counter (admin only)MVPAdmin actionability
CA health status card (admin only)V1Certificate lifecycle visibility
Recently accessed secrets widgetV1Quick access
Sharing activity summaryV1Collaboration overview
Password health report (weak, reused, old passwords)EnterpriseSecurity audit
Breach detection (HaveIBeenPwned integration)EnterpriseProactive security
Vault usage analytics (admin)EnterpriseAdoption tracking
-

Admin Settings​

-
FeatureTierJustification
Nextcloud admin settings pageMVPApp configuration
CA health status displayMVPCertificate monitoring
Master password minimum length configuration (12–20)MVPPolicy enforcement
Master password minimum score configuration (3–4)MVPStrength floor
Application approval queueMVPRegistration management
Session timeout global defaultV1Org-wide policy
CA certificate details and expiry datesV1Certificate inspection
Forced intermediate renewal buttonV1Emergency action
CA bootstrap retry buttonV1Recovery from failed setup
Global secret type managementV1Organization-wide types
Secret type CRUD for admin-created global typesV1Customization
Vault statistics (total users, secrets, shares)EnterpriseUsage overview
-

User Settings (NcAppSettingsDialog)​

-
FeatureTierJustification
Session timeout preference (Nextcloud session / 10 min / 30 min)MVPPer-user security/convenience balance
Notification toggle: secret shared with meMVPNotification control
Notification toggle: secret request fulfilledMVPNotification control
Notification toggle: group share additionsV1Fine-grained control
Notification toggle: compromise alertsV1Security notifications
Default secret type preferenceV1Workflow customization
Default view preference (list / folder tree)V1Display personalization
-

Notifications (OCP\Notification\IManager)​

-
EventSubject KeySetting CategoryRecipient LogicTier
Secret shared with usersecret_sharednotify_sharesNotify recipientMVP
Secret request fulfilledrequest_fulfillednotify_requestsNotify requesterMVP
Application pending approvalapp_pending— (always notify admins)All vault_adminsMVP
Group share: new member needs approvalgroup_member_addednotify_group_sharesNotify secret ownerMVP
Share request from recipientshare_requestnotify_sharesNotify secret ownerMVP
Share request approved/deniedshare_request_resultnotify_sharesNotify requesterMVP
CA certificate expiring (90/30/7 days)ca_expiring— (always notify admins)All adminsV1
Intermediate auto-renewedca_renewed— (always notify admins)All adminsV1
Shared secret possibly compromisedsecret_compromisednotify_securityNotify original ownerV1
Suite revoked by adminsuite_revokednotify_securityNotify suite ownerV1
-

Backend pattern: NotificationService with SUBJECT_SETTING_MAP constant mapping subjects to user setting keys.

-

Security & Compliance​

-
FeatureTierJustification
End-to-end RSA encryption at restMVPCore security model
Master password never stored (session-only AES key)MVPZero-knowledge principle
Write-without-read for application secrets and requestsMVPPrevent credential leakage
WCAG AA complianceMVPAccessibility requirement
English + Dutch localizationMVPPrimary markets
NL Design System theming supportV1Government visual compliance
GDPR data export (all user secrets + metadata)V1Right of access
GDPR data deletion (user + all shares)V1Right to erasure
Audit trail on all secret operationsV1Accountability
Field-level encryption audit (verify encrypted fields)EnterpriseCompliance verification
Data retention policiesEnterpriseAutomated cleanup
-

Integration​

-
FeatureTierJustification
Nextcloud unified search (name + URL)MVPPlatform integration
Nextcloud notifications (shares, requests, CA)MVPPlatform integration
REST API for all operationsV1Programmatic access
OpenConnector secret store integrationV1Sister app integration
Browser extension (Bitwarden-compatible API subset)EnterpriseAuto-fill in browser
CLI tool for secret managementEnterpriseDevOps workflow
Nextcloud Flows automation triggersEnterpriseLow-code integration
-

3. Settings & Notifications (Derived from Features)​

-

3.1 Admin Settings (IAppConfig)​

-
SettingFeature SourceTypeDefaultTier
min_password_lengthMaster password strengthint12MVP
min_password_scoreMaster password strengthint (3–4)3MVP
default_session_timeoutSession mechanismenum (session/10min/30min)sessionV1
ca_auto_renew_enabledCA renewalbooltrueV1
ca_expiry_notification_daysCA healthJSON array[90, 30, 7]V1
-

3.2 User Settings (OCP\IConfig, NcAppSettingsDialog)​

-
SettingFeature SourceTypeDefaultTier
session_timeoutSession mechanismenum (session/10min/30min)(admin default)MVP
notify_sharesUser sharingbooltrueMVP
notify_requestsSecret requestsbooltrueMVP
notify_group_sharesGroup sharingbooltrueV1
notify_securityCompromise alertsbooltrueV1
default_secret_typeSecret creationstringloginV1
default_viewVault navigationenum (list/folders)listV1
-

3.3 Notifications (OCP\Notification\IManager)​

-

See the Notifications table in Section 2. Each notification event maps to a user setting toggle category. Admin notifications (CA expiry, pending applications) are always delivered and cannot be disabled.

-

4. Gap Analysis​

-

What Competitors Do Well​

-
    -
  • Bitwarden/Vaultwarden: Massive ecosystem (browser extensions, mobile apps, CLI), FIDO2/WebAuthn, organization vaults with collections, Send for ephemeral sharing, password health reports, breach detection
  • -
  • 1Password: Best-in-class UX, Watchtower (security audit), service accounts for CI/CD, SSH agent integration, developer tools
  • -
  • HashiCorp Vault: Dynamic secrets (auto-rotating), transit encryption engine, policy-as-code, namespaces for multi-tenancy, comprehensive audit logging
  • -
  • Passbolt: True E2E encryption with GPG, team-first design, RBAC with fine-grained permissions, LDAP/AD integration
  • -
-

What They Lack​

-
GapOpportunity for Doriath
No Nextcloud integrationDoriath lives in the collaboration platform — users, groups, search, notifications are native
No write-without-readOnly Doriath (via asymmetric encryption) lets admins request secrets they can never read
No private CA with user certificatesDoriath's PKI infrastructure enables certificate-based identity, not just password storage
No application secret management via CSRStandard PKI pattern for onboarding applications — competitors use API tokens or service accounts
No request-based credential provisioningSecret requests (fill-in links) are unique to Doriath
SaaS data sovereignty concernsBitwarden/1Password/LastPass store encrypted data on third-party infrastructure
No government-first designNo competitor targets Dutch public sector or supports NL Design System
Infrastructure vs. user tool splitHashiCorp Vault is too complex for end users; Bitwarden has no infrastructure features
-

Nextcloud-Native Advantages​

-
CapabilityWhy Competitors Cannot Match It
Zero-cost identity layerNextcloud users and groups are the sharing model — no separate user directory
Unified search integrationSecrets discoverable from Nextcloud's Ctrl+F — no competitor can inject into another platform's search
Native notificationsShare alerts, request fulfillment, CA warnings via the bell icon — no separate notification system
Group-based sharingLeverage Nextcloud group membership for team secret access — automatic, no manual sync
User lifecycle integrationIUserDeletedEvent cleans up vaults automatically — no orphaned data
Sovereign deploymentSame Nextcloud instance, same server, same backup — no external SaaS dependency
OpenConnector secret storeDirect integration with Conduction's connector framework — no competitor can offer this
-

5. Strategic Positioning​

-

Positioning Statement​

-

Doriath is the vault that lives where your team already works. Built natively into Nextcloud, it provides enterprise-grade encrypted secret management — for humans and applications — without leaving your collaboration platform.

-

Differentiation Strategy​

-

Three pillars:

-
    -
  1. Platform leverage — Nextcloud provides identity, groups, search, notifications, and files. Doriath orchestrates them for secret management instead of rebuilding them.
  2. -
  3. PKI-native architecture — Unlike password managers that bolt on encryption, Doriath is built on a private Certificate Authority with X.509 certificates. This enables write-without-read, application CSR onboarding, and a foundation for future Certificate Authority functionality.
  4. -
  5. Government-first, enterprise-ready — NL Design System theming, sovereign self-hosted deployment, WCAG AA compliance, and a path to becoming the reference secrets manager for Dutch public sector organizations.
  6. -
-

Risks​

-
RiskSeverityMitigation
Feature gap vs. Bitwarden (browser extension, mobile, FIDO2)HighFocus on what Bitwarden can't do: Nextcloud integration, write-without-read, application secrets. Browser extension is Enterprise tier.
Passwords app incumbency on NextcloudHighDifferentiate on encryption architecture (PKI vs. SSE), application secrets, and enterprise features. Consider migration tooling.
No mobile appMediumNextcloud's mobile apps provide the session; Doriath is web-first. Mobile vault is a future consideration.
Complexity of PKI for end usersMediumZero-friction onboarding: EncryptionSuite auto-created on first login. Users only interact with master password, never with certificates.
Master password lost = data lostHighThis is by design (zero-knowledge). Document clearly. Consider emergency access (V1) or admin recovery mechanisms (Enterprise).
Small teamHighOwn-DB architecture means more backend code than thin-client apps. Prioritize MVP ruthlessly.
- -

MVP (45 features)​

-

A fully functional encrypted vault for Nextcloud users and applications. Replaces spreadsheets and insecure credential sharing.

-

Core Secret Management

-
    -
  1. Secret CRUD (name, key, login, url, additional fields)
  2. -
  3. Secret types (6 system types + custom user/global types)
  4. -
  5. Folder organization (tree hierarchy per user)
  6. -
  7. Folder CRUD with cascade options
  8. -
  9. Secret list with search, sort, pagination
  10. -
  11. Copy-to-clipboard on secret list items
  12. -
  13. Show/hide toggle on password fields
  14. -
  15. Favicon/icon next to secrets by URL
  16. -
  17. Secret detail view with type-specific fields
  18. -
  19. Fuzzy search by name and URL
  20. -
  21. Nextcloud unified search integration
  22. -
  23. Deep-link from search via lock screen
  24. -
-

Encryption & Security -13. RSA-4096 encryption via EncryptionSuite -14. AES-256 private key protection -15. Private CA bootstrap (root + intermediate) -16. Auto-create EncryptionSuite on first login -17. Master password session with configurable timeout -18. Lock screen (full page) -19. Tab-close session clearing -20. Master password strength enforcement (zxcvbn) -21. Live strength feedback -22. Routine master password change -23. Compromise recovery with key rotation -24. Suite migration with error tracking -25. Suite revocation and reinstatement

-

Key Generator -26. Random key generation with configurable length -27. Special character toggle (OWASP set) -28. Character exclusion -29. Regex override -30. Integration with secret creation UI -31. Key generation API endpoint

-

Sharing -32. Share with Nextcloud user (encrypted copy) -33. Sync-on-update -34. Share with group (static expansion) -35. Share notification -36. Revoke share -37. Share visibility (owner-only recipient list) -38. Share request mechanism -39. Group member notification + approval -40. Auto-revoke on group leave

-

Link Sharing & Requests -41. Password-protected link with usage limit -42. Fill-in link for write-without-read submission -43. Request notification on fulfillment

-

Application Management -44. Application registration with approval queue -45. EncryptionSuite via CSR or generated key pair

-

V1 (30 additional features)​

-

Enterprise-ready vault with full lifecycle management and API access.

-
    -
  1. Ownership delegation and reclaim
  2. -
  3. Permanent delegation on suite revocation
  4. -
  5. Compromised suite owner notification
  6. -
  7. Link share expiry
  8. -
  9. Re-request for credential rotation
  10. -
  11. Application API (RFC 7523 JWT Bearer)
  12. -
  13. OpenConnector integration
  14. -
  15. CA auto-renewal and health check
  16. -
  17. Admin-configurable password policy
  18. -
  19. Root certificate renewal with notifications
  20. -
  21. Forced intermediate renewal
  22. -
  23. Secret import (CSV, Bitwarden JSON, KeePass XML)
  24. -
  25. Secret export (encrypted backup, CSV)
  26. -
  27. Favorite/pinned secrets
  28. -
  29. Recently accessed secrets
  30. -
  31. Password health scoring per secret
  32. -
  33. Secret strength indicator in list view
  34. -
  35. Vault search with keyboard shortcut (Ctrl+K)
  36. -
  37. Dark mode support
  38. -
  39. NL Design System theming
  40. -
  41. GDPR export + deletion
  42. -
  43. Audit trail on secret operations
  44. -
  45. REST API for all operations
  46. -
  47. CA certificate details in admin panel
  48. -
  49. Global secret type management
  50. -
  51. Notification toggles (group shares, security)
  52. -
  53. Default secret type and view preferences
  54. -
  55. Password strength indicator on generated keys
  56. -
  57. Pronounceable password and passphrase generation
  58. -
  59. Bulk operations (delete, move folder)
  60. -
-

Enterprise (15 additional features)​

-

Large organizations, multi-instance deployments, and compliance-driven environments.

-
    -
  1. Password health report (weak, reused, old)
  2. -
  3. Breach detection (HaveIBeenPwned integration)
  4. -
  5. Breach detection for secret URLs (HaveIBeenPwned)
  6. -
  7. Password age indicator
  8. -
  9. Export to PDF (single secret)
  10. -
  11. Browser extension (Bitwarden-compatible API subset)
  12. -
  13. CLI tool for secret management
  14. -
  15. Multiple encryption suites per user (key rotation)
  16. -
  17. Custom CA chain upload
  18. -
  19. Post-quantum cryptography
  20. -
  21. Secret tags
  22. -
  23. Custom fields per secret type
  24. -
  25. Field-level encryption audit
  26. -
  27. Data retention policies
  28. -
  29. Nextcloud Flows automation triggers
  30. -
- - \ No newline at end of file diff --git a/docs/build/docs/category/admin-guide/index.html b/docs/build/docs/category/admin-guide/index.html deleted file mode 100644 index 42345dfb1..000000000 --- a/docs/build/docs/category/admin-guide/index.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -Admin guide | Doriath - - - - - - - - -
- - \ No newline at end of file diff --git a/docs/build/docs/category/tutorials/index.html b/docs/build/docs/category/tutorials/index.html deleted file mode 100644 index 4dde63008..000000000 --- a/docs/build/docs/category/tutorials/index.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -Tutorials | Doriath - - - - - - - - -
- - \ No newline at end of file diff --git a/docs/build/docs/category/user-guide/index.html b/docs/build/docs/category/user-guide/index.html deleted file mode 100644 index 8241ead57..000000000 --- a/docs/build/docs/category/user-guide/index.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -User guide | Doriath - - - - - - - - -
- - \ No newline at end of file diff --git a/docs/build/docs/intro/index.html b/docs/build/docs/intro/index.html deleted file mode 100644 index 43a9da01c..000000000 --- a/docs/build/docs/intro/index.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - -Doriath - - - - - - - - -

Doriath

-

An encrypted secrets manager for Nextcloud — password manager and key store for users and applications.

-
-

Status: in development. This documentation site is up so the -brand surface and the eventual journeydoc tutorials have a stable -home. Real walkthroughs and screenshots land as the UI lands. Watch -the GitHub repository for -milestones.

-
-

What is Doriath?​

-

Doriath is an encrypted vault built natively into Nextcloud. It stores secrets — passwords, API keys, tokens, SSH keys, certificates, and database credentials — encrypted at rest using RSA-4096 public-key cryptography. Private keys are protected by AES-256 encryption derived from a user's master password, ensuring zero-knowledge security: not even the server administrator can read your secrets.

-

Unlike standalone password managers (Bitwarden, 1Password) or infrastructure secret engines (HashiCorp Vault), Doriath lives where your team already works. It leverages Nextcloud's identity layer, group management, unified search, and notification system — so sharing a secret is as natural as sharing a file. A built-in private Certificate Authority (root + intermediate) signs all user and application certificates, enabling enterprise patterns like write-without-read secret requests and CSR-based application onboarding.

-

Getting Started​

- -

Free and open source under the EUPL-1.2 license. For support, contact support@conduction.nl.

- - \ No newline at end of file diff --git a/docs/build/docs/tutorials/admin/admin-settings/index.html b/docs/build/docs/tutorials/admin/admin-settings/index.html deleted file mode 100644 index 04cf73b04..000000000 --- a/docs/build/docs/tutorials/admin/admin-settings/index.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - -Manage Doriath settings | Doriath - - - - - - - - -

Manage Doriath settings

-

The admin-side configuration for Doriath — encryption back end, -group-level sharing policy, audit retention.

-
-

This guide is being written as Doriath approaches feature-completeness. -The structure below mirrors the journeydoc shape the rest of the -fleet uses; bodies and screenshots fill in once the admin UI lands. -Follow the GitHub repository -for milestones.

-
-

Goal​

-

By the end of this guide you will have opened the Doriath admin panel -under Settings → Administration → Doriath, verified that the -encryption back end is wired up, set a default sharing policy for new -team vaults, and confirmed that the audit log is being written.

-

Prerequisites​

-
    -
  • A Nextcloud admin account on an instance where Doriath is installed -and enabled.
  • -
  • The OpenRegister app installed and enabled.
  • -
  • Nextcloud server-side encryption configured at the platform level -(Doriath does not enable it for you — it relies on it).
  • -
-

Steps​

-

The numbered steps land here once the admin UI is built. The journeydoc -capture spec (see ADR-030) ships a placeholder; the real shoot() calls -are added together with the implementation.

-

Verification​

-

You are set up correctly when: the Doriath settings panel renders -without an error banner, the encryption-back-end indicator is green, -saving a sharing policy persists across a reload, and a freshly created -entry appears in the audit log within a few seconds.

-

Common issues​

-
SymptomFix
Settings panel not visibleThe app is not enabled, or OpenRegister is missing.
Encryption indicator stays redNextcloud server-side encryption is not configured at the platform level; configure it first, then reload Doriath.
Audit log is empty after creating an entryOpenRegister's audit trail is not enabled for the Doriath register — re-import the configuration from Settings → Registers.
-

Reference​

-
- - \ No newline at end of file diff --git a/docs/build/docs/tutorials/user/first-launch/index.html b/docs/build/docs/tutorials/user/first-launch/index.html deleted file mode 100644 index 6f8089350..000000000 --- a/docs/build/docs/tutorials/user/first-launch/index.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - -Open Doriath for the first time | Doriath - - - - - - - - -

Open Doriath for the first time

-

A first look at Doriath — where the app lives in Nextcloud, what the -navigation gives you, and how to add your first secret.

-
-

This guide is being written as Doriath approaches feature-completeness. -The structure below mirrors the journeydoc shape the rest of the -fleet uses; bodies and screenshots fill in once the UI lands. Follow -the GitHub repository for -milestones.

-
-

Goal​

-

By the end of this guide you will have opened Doriath from the Nextcloud -app menu, added your first vault entry (a password or an API key), -confirmed that the value is encrypted at rest, and located the entry -again from the search bar.

-

Prerequisites​

-
    -
  • A Nextcloud account on an instance where the Doriath app is -installed and enabled.
  • -
  • The OpenRegister app installed and enabled — Doriath stores its -vault data through OpenRegister, so it is a hard dependency.
  • -
  • A Nextcloud master encryption key configured (the platform's own -server-side encryption; Doriath layers per-entry encryption on top).
  • -
-

Steps​

-

The numbered steps land here once the UI is built. Each step that -warrants a screenshot will get a matching shoot() call in the -docs-screenshots capture spec (see ADR-030 / journeydoc).

-

Verification​

-

You are set up correctly when: Doriath renders the empty-vault state on -first launch, adding an entry returns to a list view with the entry -present, and reopening the entry shows the value behind a "Reveal" -gate — never inline as plain text.

-

Common issues​

-
SymptomFix
Doriath is missing from the app menuThe app is not enabled for your account — ask an administrator to enable it.
"OpenRegister is not installed or enabled" bannerInstall and enable OpenRegister, then reload Doriath.
Vault entries appear as plain textNextcloud server-side encryption is not configured; see the Admin guide.
-

Reference​

-
- - \ No newline at end of file diff --git a/docs/build/features/index.html b/docs/build/features/index.html deleted file mode 100644 index 5d71937b4..000000000 --- a/docs/build/features/index.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -Features | Doriath - - - - - - - - -

Features

No features documented yet.

- - \ No newline at end of file diff --git a/docs/build/img/favicon.svg b/docs/build/img/favicon.svg deleted file mode 100644 index 45cef9cf1..000000000 --- a/docs/build/img/favicon.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - Conduction avatar, drawn as three pointy-top polygons - - - - - diff --git a/docs/build/img/honeycomb-scatter.svg b/docs/build/img/honeycomb-scatter.svg deleted file mode 100644 index 9af76bf05..000000000 --- a/docs/build/img/honeycomb-scatter.svg +++ /dev/null @@ -1,23 +0,0 @@ - - Hex scatter, solid-fill cobalt tones - - - - - - - - - - - - - - - - diff --git a/docs/build/img/honeycomb-watermark.svg b/docs/build/img/honeycomb-watermark.svg deleted file mode 100644 index 2a3222541..000000000 --- a/docs/build/img/honeycomb-watermark.svg +++ /dev/null @@ -1,108 +0,0 @@ - - Honeycomb watermark, point-up hexes with scattered orange accents - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/build/img/logo-dark.svg b/docs/build/img/logo-dark.svg deleted file mode 100644 index ac72babd9..000000000 --- a/docs/build/img/logo-dark.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - Conduction avatar, white, drawn as polygons (no background) - - - - diff --git a/docs/build/img/logo.svg b/docs/build/img/logo.svg deleted file mode 100644 index 45cef9cf1..000000000 --- a/docs/build/img/logo.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - Conduction avatar, drawn as three pointy-top polygons - - - - - diff --git a/docs/build/img/nextcloud-logo.svg b/docs/build/img/nextcloud-logo.svg deleted file mode 100644 index f813d837e..000000000 --- a/docs/build/img/nextcloud-logo.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - Nextcloud — official mark, no wordmark - - diff --git a/docs/build/img/og-conduction.png b/docs/build/img/og-conduction.png deleted file mode 100644 index af5c3ba65..000000000 Binary files a/docs/build/img/og-conduction.png and /dev/null differ diff --git a/docs/build/img/og-doriath.png b/docs/build/img/og-doriath.png deleted file mode 100644 index 70c989ce9..000000000 Binary files a/docs/build/img/og-doriath.png and /dev/null differ diff --git a/docs/build/index.html b/docs/build/index.html deleted file mode 100644 index 6c6feef36..000000000 --- a/docs/build/index.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -Doriath - - - - - - - - -
In developmentpre-releaseNL · EN

Doriath

Password en secrets management op je eigen Nextcloud. Voor jezelf, voor je team, met een volledig audit trail — wie heeft welk secret aangemaakt, gedeeld, gebruikt, en wanneer. Geen externe vault, geen extra leverancier. In ontwikkeling.

What Doriath will land with

Eén plek voor wachtwoorden en secrets — op je eigen Nextcloud.

Een password manager mag niet wéér een extra leverancier zijn. Doriath leeft binnen je bestaande Nextcloud: dezelfde users, dezelfde groepen, dezelfde audit log. Per-user vaults, gedeelde team-secrets, en een activity feed die zegt wie wat heeft gedaan.

GH · admin
••••••••
AWS · prod
••••••••
SMTP · relay
••••••••
Stripe · live
••••••••

My vault

Persoonlijke wachtwoorden en API-keys, encrypted op de Nextcloud-server. Per item: een naam, een waarde, een notitie, en wie het mag zien.

platform-ops
12 secrets
engineering
28 secrets
sales
6 secrets
finance
4 secrets

Shared with team

Secrets per Nextcloud-groep. Een nieuwe medewerker krijgt automatisch toegang tot wat de groep deelt; iemand die vertrekt verliest het in één klik.

rotated
2m ago
viewed
14m ago
shared
1h ago
created
today
revoked
yesterday

Recent activity

Wie heeft welk secret aangemaakt, geopend, gedeeld, geroteerd, of ingetrokken — met tijdstempel. Auditeerbaar, ook achteraf.

- - \ No newline at end of file diff --git a/docs/build/lib/canal-footer.css b/docs/build/lib/canal-footer.css deleted file mode 100644 index 895214133..000000000 --- a/docs/build/lib/canal-footer.css +++ /dev/null @@ -1,437 +0,0 @@ -/* ============================================================ - Canal footer — randomised Amsterdam trapgevel skyline above a - gray kade above the cobalt-900 canal. Each house is rendered - as a standalone (cloned from a as - the first child of any position:relative + overflow:hidden - container. The hydrator (conduction-bg.js) generates - depth-tiered hexes that parallax on scroll and slowly - breathe in opacity. - - Themes (set by class on .conduction-bg): - (default) white hexes — for cobalt / cobalt-800 surfaces - .conduction-bg.on-light cobalt hexes — for white / cobalt-50 surfaces - - Per huisstijl: hexes are always pointy-top, never rotated. - Requires tokens.css to provide --hex-pointy-top, --c-blue-cobalt, - and --c-orange-knvb. - ============================================================ */ -.conduction-bg { - position: absolute; - inset: 0; - overflow: hidden; - pointer-events: none; - --cbg-hex: #ffffff; - --cbg-accent: var(--c-orange-knvb); -} -.conduction-bg.on-light { - --cbg-hex: var(--c-blue-cobalt); - --cbg-accent: var(--c-orange-knvb); -} -.conduction-bg .hex { - position: absolute; - clip-path: var(--hex-pointy-top); - background: var(--cbg-hex); - will-change: transform, opacity; - transform: translate(-50%, -50%); - animation: conduction-hex-breathe var(--cbg-dur, 14s) ease-in-out var(--cbg-delay, 0s) infinite; -} -.conduction-bg .hex.accent { - background: var(--cbg-accent); -} -@keyframes conduction-hex-breathe { - 0%, 100% { opacity: var(--cbg-opa-min, 0.04); } - 50% { opacity: var(--cbg-opa-max, 0.18); } -} -@media (prefers-reduced-motion: reduce) { - .conduction-bg .hex { - animation: none; - opacity: var(--cbg-opa-max, 0.12); - } -} diff --git a/docs/build/lib/conduction-bg.js b/docs/build/lib/conduction-bg.js deleted file mode 100644 index 4b0d0e313..000000000 --- a/docs/build/lib/conduction-bg.js +++ /dev/null @@ -1,122 +0,0 @@ -/* Conduction background — parallax honeycomb hydrator. - - Walks every .conduction-bg in the document, injects depth-tiered hex - spans, and wires them up to scroll-based parallax. Smaller hexes have - smaller depth → less translate per scroll-pixel → read as further away. - - Per huisstijl: hexes are pointy-top only, never rotated. - - Hosts opt in by adding
inside any - position:relative + overflow:hidden container, plus this script tag - and conduction-bg.css. The script auto-runs on DOMContentLoaded and - is idempotent — calling init() twice on the same element is a no-op. - - Optional dataset hooks on .conduction-bg: - data-count="N" — override default hex count (default 18) -*/ -(function () { - const TIERS = [ - { d: 0.10, sMin: 32, sMax: 56, oMin: 0.03, oMax: 0.10, w: 5 }, - { d: 0.25, sMin: 56, sMax: 96, oMin: 0.04, oMax: 0.13, w: 4 }, - { d: 0.45, sMin: 96, sMax: 150, oMin: 0.05, oMax: 0.16, w: 3 }, - { d: 0.65, sMin: 150, sMax: 220, oMin: 0.07, oMax: 0.18, w: 2 }, - { d: 0.85, sMin: 220, sMax: 300, oMin: 0.08, oMax: 0.20, w: 1 }, - ]; - const PARALLAX_FACTOR = 0.4; - const TIER_TOTAL = TIERS.reduce((s, t) => s + t.w, 0); - - const rand = (a, b) => Math.random() * (b - a) + a; - const pickTier = () => { - let r = Math.random() * TIER_TOTAL; - for (const t of TIERS) { if ((r -= t.w) <= 0) return t; } - return TIERS[0]; - }; - - function hydrate(bg) { - if (bg.dataset.cbgHydrated === '1') return; - bg.dataset.cbgHydrated = '1'; - - const host = bg.parentElement; - if (!host) return; - const onLight = bg.classList.contains('on-light'); - /* Cobalt-on-white reads stronger per opacity-unit than white-on-cobalt, - so scale back the on-light range to keep the field a soft veil. */ - const opaScale = onLight ? 0.55 : 1.0; - const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches; - - const hexCount = parseInt(bg.dataset.count, 10) || 18; - const accentIndex = Math.floor(hexCount / 2); - - const hexes = []; - for (let i = 0; i < hexCount; i++) { - const tier = pickTier(); - const size = rand(tier.sMin, tier.sMax); - const isAccent = (i === accentIndex); - const hex = document.createElement('span'); - hex.className = isAccent ? 'hex accent' : 'hex'; - hex.style.width = size + 'px'; - hex.style.height = (size * 1.1547) + 'px'; - hex.style.left = rand(-5, 105) + '%'; - hex.style.top = rand(-25, 125) + '%'; - hex.style.setProperty('--cbg-opa-min', (tier.oMin * opaScale).toFixed(3)); - hex.style.setProperty( - '--cbg-opa-max', - ((isAccent ? Math.min(tier.oMax + 0.05, 0.28) : tier.oMax) * opaScale).toFixed(3) - ); - hex.style.setProperty('--cbg-dur', rand(11, 18).toFixed(1) + 's'); - hex.style.setProperty('--cbg-delay', rand(-18, 0).toFixed(1) + 's'); - hex.dataset.depth = tier.d; - bg.appendChild(hex); - hexes.push(hex); - } - - if (reduceMotion) return; - - let visible = false; - let ticking = false; - - const update = () => { - const rect = host.getBoundingClientRect(); - const offset = (rect.top + rect.height / 2) - window.innerHeight / 2; - for (const h of hexes) { - const d = parseFloat(h.dataset.depth); - const ty = -offset * d * PARALLAX_FACTOR; - h.style.transform = `translate(-50%, -50%) translateY(${ty.toFixed(1)}px)`; - } - ticking = false; - }; - - const onScroll = () => { - if (!visible || ticking) return; - ticking = true; - requestAnimationFrame(update); - }; - - const io = new IntersectionObserver(([entry]) => { - visible = entry.isIntersecting; - if (visible) update(); - }, { rootMargin: '300px 0px' }); - io.observe(host); - - window.addEventListener('scroll', onScroll, { passive: true }); - window.addEventListener('resize', onScroll, { passive: true }); - update(); - } - - function init() { - /* hydrate() has its own dataset.cbgHydrated guard so calling it - repeatedly across SPA route changes is a no-op for already- - mounted nodes. */ - document.querySelectorAll('.conduction-bg').forEach(hydrate); - } - - /* SPA-friendly: expose so React/MDX components can re-trigger after - route changes without double-hydrating already-hydrated nodes. */ - window.ConductionBg = {hydrate: init}; - - if (document.readyState === 'loading') { - document.addEventListener('DOMContentLoaded', init); - } else { - init(); - } -})(); diff --git a/docs/build/lib/hex-rain.css b/docs/build/lib/hex-rain.css deleted file mode 100644 index 9d8d8494a..000000000 --- a/docs/build/lib/hex-rain.css +++ /dev/null @@ -1,128 +0,0 @@ - - /* ===== Hex rain, slow vertical fall of icon hexes ===== - The IIFE at the end of the page hydrates this with icon-bearing - hexes that fall finite cycles (one pass each) and get garbage- - collected on `animationend` so the spawn loop can ramp without - stacking density. Each hex carries an app id 0-11 in dataset.app - and clicking it toggles that app's collection state in the game. - Always pointy-top per huisstijl. */ - .hex-rain { - position: relative; - width: 100%; - height: 100%; - min-height: 520px; - overflow: hidden; - } - .hex-rain .h { - position: absolute; - top: 0; - left: var(--rain-x, 50%); - width: var(--rain-size, 80px); - height: calc(var(--rain-size, 80px) * 1.1547); - clip-path: var(--hex-pointy-top); - background: var(--c-blue-cobalt); - color: white; - display: flex; align-items: center; justify-content: center; - will-change: transform, opacity; - cursor: pointer; - animation: hex-rain-fall var(--rain-dur, 28s) linear var(--rain-delay, 0s) 1 forwards; - } - .hex-rain .h.alt { background: var(--c-cobalt-700); } - .hex-rain .h.accent { background: var(--c-orange-knvb); } - .hex-rain .h.clicking { pointer-events: none; } - .hex-rain .h svg { - width: 44%; height: 44%; - stroke: currentColor; - stroke-width: 1.6; - fill: none; - pointer-events: none; - } - @keyframes hex-rain-fall { - 0% { transform: translate(-50%, calc(-1 * var(--rain-size, 80px) - 24px)); opacity: 0; } - 8% { opacity: 1; } - 92% { opacity: 1; } - 100% { transform: translate(-50%, var(--rain-end, 600px)); opacity: 0; } - } - @media (prefers-reduced-motion: reduce) { - .hex-rain .h { animation: none; transform: translate(-50%, 50%); opacity: 1; } - } - - /* Game HUD that fades in on first hex click. Counter (apps / 12), - timer (60s) and a row of 12 mini app-hex icons that light orange - as the player collects each app. Cobalt-on-white card per the - GameModal styling so the HUD reads cleanly over a falling-hex - background instead of fighting with white-on-cobalt shadows. */ - .hex-rain .rain-hud { - position: absolute; - top: 14px; right: 14px; - z-index: 2; - pointer-events: none; - font-family: var(--conduction-typography-font-family-code); - color: var(--c-cobalt-900); - background: rgba(255, 255, 255, 0.94); - backdrop-filter: blur(4px); - border-radius: var(--radius-lg); - padding: 12px 14px; - box-shadow: 0 4px 16px -4px rgba(11, 32, 73, 0.18); - opacity: 0; - transform: translateY(-8px); - transition: opacity 240ms ease, transform 240ms ease; - text-align: right; - } - .hex-rain .rain-hud.active { opacity: 1; transform: translateY(0); } - .hex-rain .rain-hud .hud-top { - display: flex; gap: 22px; justify-content: flex-end; - } - .hex-rain .rain-hud .hud-block { text-align: right; } - .hex-rain .rain-hud .hud-num { - display: block; - font-size: 28px; font-weight: 700; - letter-spacing: -0.02em; - line-height: 1; - font-variant-numeric: tabular-nums; - color: var(--c-cobalt-900); - } - .hex-rain .rain-hud .hud-label { - display: block; - font-size: 9px; - letter-spacing: 0.16em; - text-transform: uppercase; - color: var(--c-cobalt-400); - margin-top: 4px; - } - .hex-rain .rain-hud .hud-block.hud-tick .hud-num { animation: rain-tick 420ms ease; } - .hex-rain .rain-hud .hud-block.hud-untick .hud-num { animation: rain-untick 420ms ease; } - @keyframes rain-tick { 0% { transform: scale(1); color: var(--c-cobalt-900); } 35% { transform: scale(1.4); color: var(--c-orange-knvb); } 100% { transform: scale(1); color: var(--c-cobalt-900); } } - @keyframes rain-untick { 0% { transform: scale(1); color: var(--c-cobalt-900); } 35% { transform: scale(0.85); color: #d64633; } 100% { transform: scale(1); color: var(--c-cobalt-900); } } - .hex-rain .rain-hud .hud-timer.urgent .hud-num { - color: #d64633; - animation: rain-pulse 800ms ease infinite; - } - @keyframes rain-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.45; } } - .hex-rain .rain-hud .hud-icons { - display: flex; gap: 3px; margin-top: 12px; justify-content: flex-end; - } - .hex-rain .rain-hud .hud-icon { - width: 22px; height: 26px; - clip-path: var(--hex-pointy-top); - background: var(--c-cobalt-100); - display: inline-flex; align-items: center; justify-content: center; - color: var(--c-cobalt-400); - transition: background 220ms, color 220ms; - } - .hex-rain .rain-hud .hud-icon.collected { - background: var(--c-orange-knvb); - color: var(--c-cobalt-900); - } - .hex-rain .rain-hud .hud-icon.collected.just { animation: rain-icon-pop 380ms ease; } - @keyframes rain-icon-pop { - 0% { transform: scale(0.6); } - 60% { transform: scale(1.2); } - 100% { transform: scale(1); } - } - .hex-rain .rain-hud .hud-icon svg { - width: 60%; height: 60%; - stroke: currentColor; stroke-width: 1.7; fill: none; - stroke-linecap: round; stroke-linejoin: round; - } - diff --git a/docs/build/lib/hex-rain.js b/docs/build/lib/hex-rain.js deleted file mode 100644 index 0a06803cc..000000000 --- a/docs/build/lib/hex-rain.js +++ /dev/null @@ -1,284 +0,0 @@ - /* Hex-rain hydrator + "Twelve apps" mini-game. The rain itself is a - decorative continuous spawn loop; first click on a hex starts the - game (60s timer, score = unique apps collected). Clicking a hex of - an already-collected app DESELECTS that app (the twist), so - misclicks during the late-game chaos punish you. Win = 12 / 12. - Game ends fire `connext:gameend` so the gaming-modal component - can update its cookie + reveal the cross-site progress panel. */ - (function () { - const ICONS = [ - /* 0 Catalogi */ '', - /* 1 Register */ '', - /* 2 Connector */ '', - /* 3 DocuDesk */ '', - /* 4 MyDash */ '', - /* 5 AI Bridge */ '', - /* 6 Pipeline */ '', - /* 7 Calendar */ '', - /* 8 Lock */ '', - /* 9 Mail */ '', - /* 10 Cloud */ '', - /* 11 People */ '', - ]; - const APP_NAMES = [ - 'OpenCatalogi', 'OpenRegister', 'OpenConnector', 'DocuDesk', - 'MyDash', 'AI Bridge', 'PipelinQ', 'OpenCalendar', - 'OpenSAML', 'OpenMail', 'NextCloud', 'OpenZaak', - ]; - const APP_COUNT = ICONS.length; - const GAME_SECONDS = 60; - - const rand = (a, b) => Math.random() * (b - a) + a; - const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches; - - /* Wrap the per-container init in a named function so we can expose - it as window.HexRain.hydrate() for SPA route changes that mount - fresh .hex-rain nodes. The dataset.rainHydrated guard makes - repeated calls a no-op for already-mounted containers. */ - function hydrateContainer(container) { - if (container.dataset.rainHydrated === '1') return; - container.dataset.rainHydrated = '1'; - - // ===== HUD ===== - const hud = document.createElement('div'); - hud.className = 'rain-hud'; - hud.innerHTML = - '
' + - '
0Apps / 12
' + - '
' + GAME_SECONDS + 'Seconds
' + - '
' + - '
'; - container.appendChild(hud); - const hudCounter = hud.querySelector('[data-counter]'); - const hudTimer = hud.querySelector('[data-timer]'); - const hudCounterBlock = hud.querySelector('.hud-counter'); - const hudTimerBlock = hud.querySelector('.hud-timer'); - const hudIcons = hud.querySelector('[data-icons]'); - for (let i = 0; i < APP_COUNT; i++) { - const slot = document.createElement('span'); - slot.className = 'hud-icon'; - slot.dataset.app = String(i); - slot.title = APP_NAMES[i]; - slot.innerHTML = ''; - hudIcons.appendChild(slot); - } - - // ===== Game state ===== - function newGame() { - return { started: false, over: false, timeLeft: GAME_SECONDS, collected: new Set() }; - } - let game = newGame(); - let timerInt = null; - let spawnTimer = null; - - function updateHud() { - hudCounter.textContent = String(game.collected.size); - hudTimer.textContent = String(Math.max(0, game.timeLeft)); - if (game.timeLeft <= 5 && game.started) hudTimerBlock.classList.add('urgent'); - else hudTimerBlock.classList.remove('urgent'); - } - - function flashCounter(direction) { - hudCounterBlock.classList.remove('hud-tick', 'hud-untick'); - void hudCounterBlock.offsetWidth; - hudCounterBlock.classList.add(direction === 'up' ? 'hud-tick' : 'hud-untick'); - } - - function startGame() { - if (game.started || game.over) return; - game.started = true; - hud.classList.add('active'); - updateHud(); - timerInt = setInterval(() => { - if (game.over) return; - game.timeLeft -= 1; - updateHud(); - if (game.timeLeft <= 0) endGame(false); - }, 1000); - } - - function endGame(won) { - if (game.over) return; - game.over = true; - if (timerInt) { clearInterval(timerInt); timerInt = null; } - hud.classList.remove('active'); - const elapsed = GAME_SECONDS - game.timeLeft; - const summary = won - ? '12 / 12 in ' + elapsed + 's' - : game.collected.size + ' / 12 collected'; - window.dispatchEvent(new CustomEvent('connext:gameend', { - detail: { id: 'hexrain', won, score: game.collected.size, summary }, - })); - } - - function resetGame() { - if (timerInt) { clearInterval(timerInt); timerInt = null; } - game = newGame(); - hud.classList.remove('active'); - hudTimerBlock.classList.remove('urgent'); - hudIcons.querySelectorAll('.hud-icon').forEach((el) => el.classList.remove('collected', 'just')); - // Clean any in-flight clicked hexes from a previous round - container.querySelectorAll('.h.clicking').forEach((el) => el.remove()); - updateHud(); - } - - window.addEventListener('connext:gamereplay', (e) => { - if (e.detail && e.detail.id === 'hexrain') resetGame(); - }); - - // ===== Spawn loop. Idle (pre-game): slow constant rain. - // Once the game starts, spawn rate + fall speed ramp with progress. ===== - function progress() { - return game.started ? (GAME_SECONDS - game.timeLeft) / GAME_SECONDS : 0; - } - function getSpawnInterval() { - if (!game.started) return rand(900, 1400); - return Math.max(280, 1200 - progress() * 920); - } - function getFallDuration() { - // Idle: 38-55s. Game peak: 14-22s. - const base = 50 - progress() * 30; - return Math.max(12, base + rand(-4, 4)); - } - function pickAppId() { - // Bias spawns toward apps the player hasn't collected yet so - // they get a fair shot at finding all twelve in 60s. - const uncollected = []; - for (let i = 0; i < APP_COUNT; i++) if (!game.collected.has(i)) uncollected.push(i); - if (uncollected.length && Math.random() < 0.7) { - return uncollected[Math.floor(Math.random() * uncollected.length)]; - } - return Math.floor(Math.random() * APP_COUNT); - } - - function spawnHex(opts) { - opts = opts || {}; - const appId = opts.appId !== undefined ? opts.appId : pickAppId(); - const size = rand(54, 96); - const x = rand(8, 92); - const dur = getFallDuration(); - const delay = opts.delay || 0; - const isAlt = Math.random() < 0.35; - - const hex = document.createElement('span'); - hex.className = 'h' + (isAlt ? ' alt' : ''); - hex.style.setProperty('--rain-x', x.toFixed(1) + '%'); - hex.style.setProperty('--rain-size', size.toFixed(1) + 'px'); - hex.style.setProperty('--rain-dur', dur.toFixed(1) + 's'); - if (delay) hex.style.setProperty('--rain-delay', delay.toFixed(1) + 's'); - hex.style.setProperty('--rain-end', (container.clientHeight + size + 32).toFixed(1) + 'px'); - hex.dataset.app = String(appId); - hex.dataset.size = size.toFixed(1); - hex.title = APP_NAMES[appId] + ', click to collect'; - hex.innerHTML = ''; - - if (reduceMotion) { - // Static placement, rain doesn't move but hexes are still clickable. - hex.style.top = rand(8, 88).toFixed(1) + '%'; - hex.style.transform = 'translate(-50%, -50%)'; - hex.style.opacity = '1'; - } - - // Once the fall keyframe completes, GC the element. (Click-out - // animations dispatch their own `finished` cleanup below.) - hex.addEventListener('animationend', (e) => { - if (e.animationName === 'hex-rain-fall' && hex.parentNode) hex.remove(); - }); - - container.appendChild(hex); - return hex; - } - - function scheduleNextSpawn() { - spawnTimer = setTimeout(() => { - spawnHex(); - scheduleNextSpawn(); - }, getSpawnInterval()); - } - - // Pre-populate so the rain looks alive immediately (negative delay - // = hexes start mid-flight). - const initialPool = reduceMotion ? 9 : 14; - for (let i = 0; i < initialPool; i++) { - const dur = rand(38, 60); - spawnHex({ delay: -rand(0, dur) }); - } - if (!reduceMotion) scheduleNextSpawn(); - - // ===== Click handling, toggles the clicked hex's app on/off. - // Uses event delegation so spawned hexes don't need re-wiring. ===== - container.addEventListener('click', (e) => { - const hex = e.target.closest('.h'); - if (!hex || hex.classList.contains('clicking')) return; - const appId = parseInt(hex.dataset.app, 10); - if (Number.isNaN(appId)) return; - - if (game.over) return; // post-end clicks ignored; rain still drips - if (!game.started) startGame(); - - const wasCollected = game.collected.has(appId); - const slot = hudIcons.children[appId]; - if (wasCollected) { - game.collected.delete(appId); - slot.classList.remove('collected', 'just'); - flashCounter('down'); - } else { - game.collected.add(appId); - slot.classList.add('collected'); - slot.classList.remove('just'); void slot.offsetWidth; slot.classList.add('just'); - flashCounter('up'); - } - animateHexOut(hex, !wasCollected); - updateHud(); - - if (game.collected.size >= APP_COUNT) endGame(true); - }); - - // Freeze the falling hex at its current Y (read from computed - // transform), then run a WAAPI scale + fade for collect (orange - // pop) or deselect (red shake). - function animateHexOut(hex, isCollect) { - hex.classList.add('clicking'); - let y = 0; - try { - const m = new DOMMatrixReadOnly(getComputedStyle(hex).transform); - y = m.m42 || 0; - } catch (err) { /* keep y=0 */ } - hex.style.animation = 'none'; - hex.style.transform = 'translate(-50%, ' + y + 'px)'; - void hex.offsetWidth; - - const dur = 380; - const collectKeyframes = [ - { transform: 'translate(-50%, ' + y + 'px) scale(1)', filter: 'none', opacity: 1 }, - { transform: 'translate(-50%, ' + y + 'px) scale(1.5)', filter: 'brightness(1.6) drop-shadow(0 0 14px rgba(255,107,0,0.95))', opacity: 1, offset: 0.5 }, - { transform: 'translate(-50%, ' + y + 'px) scale(1.8)', opacity: 0 }, - ]; - const deselectKeyframes = [ - { transform: 'translate(-50%, ' + y + 'px) scale(1) rotate(0deg)', filter: 'none' }, - { transform: 'translate(-50%, ' + y + 'px) scale(0.85) rotate(-9deg)', filter: 'hue-rotate(-100deg) brightness(1.5)', offset: 0.3 }, - { transform: 'translate(-50%, ' + y + 'px) scale(0.85) rotate(9deg)', filter: 'hue-rotate(-100deg) brightness(1.5)', offset: 0.6 }, - { transform: 'translate(-50%, ' + y + 'px) scale(0.7) rotate(0deg)', opacity: 0 }, - ]; - const anim = hex.animate( - isCollect ? collectKeyframes : deselectKeyframes, - { duration: dur, easing: 'ease-out', fill: 'forwards' } - ); - anim.finished.then(() => hex.remove()).catch(() => {}); - } - } - - function init() { - document.querySelectorAll('.hex-rain').forEach(hydrateContainer); - } - - /* SPA-friendly: expose so React/MDX components can re-trigger after - route changes without double-hydrating already-hydrated nodes. */ - window.HexRain = {hydrate: init}; - - if (document.readyState === 'loading') { - document.addEventListener('DOMContentLoaded', init); - } else { - init(); - } - })(); diff --git a/docs/build/lib/kade-cyclist.css b/docs/build/lib/kade-cyclist.css deleted file mode 100644 index f95e99ab2..000000000 --- a/docs/build/lib/kade-cyclist.css +++ /dev/null @@ -1,264 +0,0 @@ -/* Kade Cyclist minigame styles. Pairs with kade-cyclist.js. The stage - overlays the .kade strip; while the game is active the kade flips to - overflow: visible so the HUD and game-over panel can extend above - into the skyline area. Hazards are absolutely positioned within the - track and animated leftward via the kc-drift-l keyframe (duration is - set inline by the script so the difficulty ramp can shorten it). - Tokens used: --c-cobalt-900, --c-cobalt-700, --c-orange-knvb, - --conduction-typography-font-family-body. */ - -/* Active state: let the HUD and game-over banner rise above the kade. */ -.canal-footer .kade:has(.kc-stage) { overflow: visible; } - -.kc-stage { - position: absolute; - inset: 0; - z-index: 5; - pointer-events: none; - font-family: var(--conduction-typography-font-family-body, 'Figtree', system-ui, sans-serif); -} - -/* ============ Track + lanes ============ */ - -.kc-track { - position: absolute; - inset: 0; - overflow: hidden; - pointer-events: none; -} -.kc-lane { - position: absolute; - left: 0; right: 0; - height: 50%; - pointer-events: none; - /* Subtle dashed divider hint between lanes once the game is on */ -} -.kc-lane-top { top: 0; } -.kc-lane-bottom { bottom: 0; } -/* Lane divider — kept always visible during gameplay (more prominent - than the original ambient kade) so the player can read which lane - each hazard is in at a glance. */ -.kc-track::before { - content: ""; - position: absolute; - left: 0; right: 0; - top: 50%; - height: 2px; - margin-top: -1px; - background: repeating-linear-gradient( - to right, - rgba(10, 23, 47, 0.45) 0 8px, - transparent 8px 14px - ); - pointer-events: none; - z-index: 1; -} - -/* ============ Player ============ */ - -.kc-player { - position: absolute; - /* The runtime sets --kc-player-x to the centre x of the blue - Conduction house in the skyline, so the cyclist visually sits - under the brand-anchor house. Fallback covers the case where the - skyline hasn't been built yet. */ - left: var(--kc-player-x, 14%); - width: 22px; - height: 16px; - z-index: 6; - transition: top 220ms cubic-bezier(0.34, 1.56, 0.64, 1), - bottom 220ms cubic-bezier(0.34, 1.56, 0.64, 1); - filter: drop-shadow(0 1px 0 rgba(247, 127, 14, 0.4)); -} -.kc-player[data-lane="top"] { top: 0px; bottom: auto; } -.kc-player[data-lane="bottom"] { bottom: 0px; top: auto; } -.kc-player-svg { display: block; } - -.kc-player.crashed { - animation: kc-crash 480ms ease both; -} -@keyframes kc-crash { - 0% { transform: rotate(0deg) translateY(0); } - 20% { transform: rotate(-18deg) translateY(-3px); } - 50% { transform: rotate(28deg) translateY(2px); } - 80% { transform: rotate(-8deg) translateY(0); } - 100% { transform: rotate(20deg) translateY(0); } -} - -/* ============ Hazards ============ */ - -.kc-hazard { - position: absolute; - right: -64px; - height: 16px; - z-index: 5; - animation-name: kc-drift-l; - animation-timing-function: linear; - animation-fill-mode: forwards; - animation-iteration-count: 1; -} -.kc-hazard[data-lane="top"] { top: 0px; } -.kc-hazard[data-lane="bottom"] { bottom: 0px; } - -@keyframes kc-drift-l { - from { transform: translateX(0); } - to { transform: translateX(calc(-100vw - 200px)); } -} -.kc-hazard-svg { display: block; } - -/* ============ HUD ============ */ - -.kc-hud { - position: absolute; - top: -28px; - right: 8px; - display: flex; - align-items: center; - gap: 8px; - pointer-events: auto; - z-index: 10; - background: rgba(10, 23, 47, 0.92); - -webkit-backdrop-filter: blur(4px); - backdrop-filter: blur(4px); - padding: 4px 8px; - border-radius: 999px; - color: white; - font-size: 12px; - font-weight: 600; -} -.kc-score-block { - display: flex; align-items: baseline; gap: 4px; - padding: 0 4px; -} -.kc-score-num { - color: var(--c-orange-knvb, #F77F0E); - font-size: 14px; - font-weight: 700; - font-variant-numeric: tabular-nums; -} -.kc-score-label { - font-size: 9px; - opacity: 0.65; - text-transform: uppercase; - letter-spacing: 0.06em; - font-weight: 500; -} -.kc-controls { - font-size: 10px; - opacity: 0.7; - border-left: 1px solid rgba(255, 255, 255, 0.18); - padding-left: 8px; -} -.kc-controls kbd { - background: rgba(255, 255, 255, 0.16); - padding: 1px 4px; - border-radius: 3px; - font-family: 'JetBrains Mono', 'SF Mono', Menlo, monospace; - font-size: 10px; - font-weight: 600; -} -.kc-close { - width: 20px; height: 20px; - border-radius: 50%; - background: rgba(255, 255, 255, 0.16); - border: 0; - color: white; - cursor: pointer; - display: grid; place-items: center; - font-size: 14px; - line-height: 1; - font-family: inherit; - transition: background 150ms ease; -} -.kc-close:hover, -.kc-close:focus-visible { - background: var(--c-orange-knvb, #F77F0E); -} - -/* ============ Game over panel ============ */ - -.kc-over { - position: absolute; - bottom: 100%; - left: 50%; - transform: translateX(-50%); - margin-bottom: 6px; - background: var(--c-cobalt-900, #0A172F); - color: white; - padding: 14px 24px; - border-radius: 10px; - text-align: center; - pointer-events: auto; - z-index: 11; - min-width: 200px; - box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25); - animation: kc-pop 360ms cubic-bezier(0.34, 1.56, 0.64, 1) both; -} -@keyframes kc-pop { - from { opacity: 0; transform: translateX(-50%) translateY(8px) scale(0.85); } - to { opacity: 1; transform: translateX(-50%) translateY(0) scale(1); } -} -.kc-over-title { - font-size: 24px; - font-weight: 700; - color: var(--c-orange-knvb, #F77F0E); - margin: 0 0 4px; - letter-spacing: -0.02em; -} -.kc-over-stat { - font-size: 13px; - margin: 0 0 14px; - opacity: 0.85; - font-weight: 500; -} -.kc-over-stat span { - color: var(--c-orange-knvb, #F77F0E); - font-weight: 700; - font-variant-numeric: tabular-nums; - margin-right: 2px; -} -.kc-over button { - border: 0; - background: var(--c-orange-knvb, #F77F0E); - color: white; - padding: 8px 18px; - border-radius: 999px; - font-weight: 600; - font-size: 13px; - cursor: pointer; - font-family: inherit; - transition: transform 150ms ease, filter 150ms ease; -} -.kc-over button:hover, -.kc-over button:focus-visible { - transform: scale(1.05); - filter: brightness(1.08); -} - -/* ============ Hover hint on bikes (subtle, only when ambient) ============ */ - -.canal-footer:not(:has(.kc-stage)) .ki-bike-1, -.canal-footer:not(:has(.kc-stage)) .ki-bike-2 { - cursor: pointer; - pointer-events: auto; -} - -/* ============ Reduced motion ============ */ - -@media (prefers-reduced-motion: reduce) { - .kc-player, - .kc-over, - .kc-player.crashed { - transition: none !important; - animation: none !important; - } -} - -/* ============ Mobile ============ */ - -@media (max-width: 720px) { - .kc-hud { top: -26px; right: 4px; padding: 3px 6px; } - .kc-controls { display: none; } - .kc-over { padding: 10px 16px; min-width: 160px; } - .kc-over-title { font-size: 18px; } -} diff --git a/docs/build/lib/kade-cyclist.js b/docs/build/lib/kade-cyclist.js deleted file mode 100644 index c7131151a..000000000 --- a/docs/build/lib/kade-cyclist.js +++ /dev/null @@ -1,420 +0,0 @@ -/* Kade Cyclist: hidden minigame on the canal-footer kade strip. First - click on a drifting kade bike clears the ambient kade traffic, drops - the player cyclist under the blue Conduction house in the skyline, - and starts a slow-then-ramping dodge round. Hazards (bike → scooter - → car → bus → truck → tram) unlock progressively as the player racks - up dodges, and both spawn rate + drift speed creep up. - - ↑/W and ↓/S switch between the top and bottom lane. Collision ends - the round, fires `connext:gameend` on window so the GameModal picks - it up, and the modal's "Play again" button fires `connext:gamereplay` - which we listen for to re-run the round. The ambient kade is - restored when the round ends. */ -(function () { - const PLAYER_COLLISION_X_TOL = 24; // px tolerance around the player x - const HAZARD_BASE_MS = 6000; // very slow first hazards (drift duration) - const HAZARD_FLOOR_MS = 1900; // cap at hardest difficulty - const SPAWN_INITIAL_MS = 4500; // very slow first spawn interval - const SPAWN_FLOOR_MS = 700; // cap at hardest spawn interval - - /* Difficulty tiers — kind unlocks happen at fixed dodge counts. The - speed/spawn multipliers grow continuously per dodge; tiers only - control which kinds are eligible to spawn. Vehicles get - progressively bigger and harder to read at speed. */ - const KIND_TIERS = [ - { atDodges: 0, kinds: ['bike'] }, - { atDodges: 3, kinds: ['bike', 'scooter'] }, - { atDodges: 6, kinds: ['bike', 'scooter', 'car'] }, - { atDodges: 10, kinds: ['bike', 'scooter', 'car', 'bus'] }, - { atDodges: 15, kinds: ['bike', 'scooter', 'car', 'bus', 'truck'] }, - { atDodges: 22, kinds: ['bike', 'scooter', 'car', 'bus', 'truck', 'tram'] }, - ]; - - function currentKinds(dodges) { - let active = KIND_TIERS[0].kinds; - for (let i = 0; i < KIND_TIERS.length; i++) { - if (dodges >= KIND_TIERS[i].atDodges) active = KIND_TIERS[i].kinds; - } - return active; - } - - function clamp(v, lo, hi) { return Math.max(lo, Math.min(hi, v)); } - const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches; - - /* Inline SVG library. Kept in JS so the runtime doesn't depend on the - host page's + + diff --git a/src/components/CopyButton.vue b/src/components/CopyButton.vue index 1437ce2f5..46dd5130b 100644 --- a/src/components/CopyButton.vue +++ b/src/components/CopyButton.vue @@ -1,7 +1,9 @@